前言

本篇承接上一篇

Java CXF介绍与实例

开发环境:

Java: 1.8.0_161

Eclipse Version: Oxygen.3 Release (4.7.3)

Maven: 3.5.3

Tomcat:7.0

工程开发环境与框架搭建

1. 使用maven创建web 项目

mvn archetype:generate -DgroupId=com.oscar999 -DartifactId=WebStudy -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

2. 切换到产生的项目路径,将此项目切换为eclipse的web项目

mvn eclipse:eclipse -Dwtpversion=2.0

注: 这里直接使用wtpversion=4.0会有问题, 所以先用2.0, 后面再修改。

这个设定和Tomcat的版本是对应的:

dynamic web module 2.4 对应Tomcat 5.5
dynamic web module 2.5 对应Tomcat 6.0
dynamic web module 3.0 对应Tomcat 7.0

3. 打开eclipse, 将此项目导入。

4. 修改wtpversion

有两种方式:

一种是在eclipse界面操作。工程上右键单击,找到Project Facets, 可以设定Dynamic Web Module和Java的版本

另一种是通过修改eclipse 文件。项目路径.settings 的org.eclipse.wst.common.project.facet.core.xml 
  <installed facet="jst.java" version="1.8"/>

<installed facet="jst.web" version="3.0"/>

5. 添加服务器到eclipse

windows->Preferences--> Server-->Runtime Environment, 加入Tomcat 7

6. 在pom.xml加入cxf依赖项

<dependency><groupId>org.apache.cxf</groupId><artifactId>cxf</artifactId><version>3.2.4</version><type>pom</type></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.2.4</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId><version>3.2.4</version></dependency><dependency><groupId>org.codehaus.woodstox</groupId><artifactId>stax2-api</artifactId><version>4.1</version></dependency><dependency><groupId>org.codehaus.woodstox</groupId><artifactId>woodstox-core-asl</artifactId><version>4.4.1</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-simple</artifactId><version>3.2.4</version></dependency>

7. 需要Servlet API

     <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency>

不整合Spring 的方式

1. 接口与实现类

MyWebServiceI 和MyWebServiceImpl沿用上一篇的就可以了。

2.  定义Servlet

/*** @Title: CxfPublishServlet.java* @Package com.oscar999* @Description: TODO* @author oscar999* @date May 23, 2018 4:22:51 PM* @version V1.0*/package com.oscar999;import javax.servlet.ServletConfig;import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
import  org.apache.cxf.frontend.*;/*** @ClassName: CxfPublishServlet* @Description: TODO* @author oscar999*/public class CxfPublishServlet extends CXFNonSpringServlet {@Overridepublic void loadBus(ServletConfig sc) {super.loadBus(sc);Bus bus = getBus();BusFactory.setDefaultBus(bus);// Endpoint.publish("/sayHi",new MyWebServiceImpl());MyWebServiceImpl hi = new MyWebServiceImpl();ServerFactoryBean sfb = new ServerFactoryBean(); // serversfb.setServiceClass(MyWebServiceI.class);//sfb.setAddress("/myweb"); //sfb.setServiceBean(hi);sfb.create();}
}

3. 在web.xml 新增Servlet的配置

 <servlet><description>publsh web serivces</description><display-name>CxfPublishServlet</display-name><servlet-name>CxfPublishServlet</servlet-name><servlet-class>com.oscar999.CxfPublishServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>CxfPublishServlet</servlet-name><url-pattern>/webservice/*</url-pattern></servlet-mapping>

4. Run as -> Run on Server , 访问如下地址:

http://localhost:8080/WebStudy/webservice/myweb?wsdl

整合Spring的方式

这里新进一个新的web Project: webPrj

1. 新建Project

mvn archetype:generate -DgroupId=com.oscar999 -DartifactId=webPrj -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

2. eclipse设置和依赖项导入和上面类似。

3.导入Spring 依赖项

<!--Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.17.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.17.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.3.17.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.17.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.3.17.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.3.17.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.17.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>4.3.17.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>4.3.17.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.3.17.RELEASE</version></dependency>

接下来,开始代码和配置部分

1. 接口

/*** @Title: MyWebServiceI.java* @Package com.oscar999* @Description: TODO* @author oscar999* @date May 23, 2018 11:34:39 AM* @version V1.0*/package com.oscar999;import javax.jws.WebParam;
import javax.jws.WebService;/*** @ClassName: MyWebServiceI* @Description: TODO* @author oscar999*/@WebService
public interface MyWebServiceI {String sayHi(@WebParam(name = "text") String text);
}

2.实现类

/*** @Title: MyWebServiceImpl.java* @Package com.oscar999* @Description: TODO* @author oscar999* @date May 23, 2018 11:37:02 AM* @version V1.0*/package com.oscar999;import javax.jws.WebParam;
import javax.jws.WebService;/*** @ClassName: MyWebServiceImpl* @Description: TODO* @author oscar999*/public class MyWebServiceImpl implements MyWebServiceI {public String sayHi(@WebParam(name = "text") String text) {return "Hello," + text;}
}

3. Spring配置文件

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:jaxws="http://cxf.apache.org/jaxws"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><bean id="myWebService" class="com.oscar999.MyWebServiceImpl"></bean><jaxws:server address="/myService"serviceClass="com.oscar999.MyWebServiceI"><jaxws:serviceBean><ref bean="myWebService" /></jaxws:serviceBean></jaxws:server>
</beans>

4. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>cxfServlet</servlet-name><servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>cxfServlet</servlet-name><url-pattern>/ws/*</url-pattern></servlet-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param>
</web-app>

5. 访问WSDl

http://localhost:8080/webPrj/ws/myService?wsdl

问题及解决

1. jar 包没有copy 到eclipse 
进入到tomcat的部署路径.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\下检查了一下,发现工程部署后在WEB-INF文件夹下没有生成lib目录,正常情况下,会生成lib目录并把工程的所有依赖jar包都部署到该目录下。
解决方法:
右键点击项目--选择Properties
选择Deployment Assembly,在右边点击Add按钮,在弹出的窗口中选择Java Build Path Entries

CXF开发及与Spring整合开发相关推荐

  1. rabbitmq实战_RabbitMQ实战(四) - RabbitMQ amp; Spring整合开发

    0 相关源码 1 你将学到 RabbitMQ 整合 Spring AMQP实战 RabbitMQ 整合 Spring Boot实战 RabbitMQ 整合 Spring Cloud实战 2 Sprin ...

  2. spring boot + vue + element-ui全栈开发入门——前后端整合开发

    一.配置 思路是通过node的跨域配置来调用spring boot的rest api. 修改config\index.js文件,设置跨域配置proxyTable: proxyTable: {'/api ...

  3. spring和mybatis的整合开发(基于MapperScannerConfigurer的整合开发(适用于复杂项目,接口较多的情况))...

    在实际项目中,Dao层会包含很多接口,这样会导致spring配置文件过于臃肿.这时就需要采用扫描包的形式来配置mybaits中的映射器. 采用MapperScannerConfigurer来实现. M ...

  4. spring boot开发QQ音乐微信小程序(包含服务端源码)

    spring boot+spring mvc+spring整合开发QQ音乐微信小程序(含简单服务端) 项目描述: spring boot+spring mvc+spring代理请求QQ音乐接口获取数据 ...

  5. 云栖社区特邀专家徐雷——Java Spring Boot开发实战系列课程【往期直播回顾】...

    徐雷,花名:徐雷frank:资深架构师,MongoDB中文社区联席主席,吉林大学计算机学士,上海交通大学硕士.从事了 10年+开发工作,专注于分布式架构,Java Spring Boot.Spring ...

  6. JAX-RS和spring整合

    JAX-RS 和 Spring 整合开发步骤 1.建立maven web工程 2.建立坐标,在pom.xml中导入需要依赖的jar包     完整的pom.xml <project xmlns= ...

  7. 【MyBatis框架】mybatis和spring整合

    spring和mybatis整合 1.整合思路 需要spring通过单例方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用SqlSessionFactor ...

  8. Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合

    1.整合思路 需要Spring通过单例方式管理SqlSessionFactory. Spring和MyBatis整合生成代理对象,使用SqlSessionFactory创建SqlSession.(Sp ...

  9. 转载 WebService 的CXF框架 WS方式Spring开发

    WebService 的CXF框架 WS方式Spring开发 1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0.0 ...

最新文章

  1. Mysql错误1045解决方法
  2. Windows 技术篇-设置电脑启用或禁用开机按Ctrl+Alt+Del解除锁定
  3. python命名空间特性_Python命名空间与作用域
  4. 欢迎来怼---作业要求 20171015 beta冲刺贡献分分配规则
  5. [CQOI2015]任务查询系统
  6. java彩色的世界_JAVA真彩色转256色的实现
  7. 前端解读控制反转(IOC)
  8. CVPR 2019 论文大盘点-目标跟踪篇
  9. 两位小数乘两位小数竖式_人教版小学数学五年级上册小数乘整数公开课优质课课件教案视频...
  10. pytorch Inception代码实现
  11. 如何将Eclipse中Web项目打成war包
  12. MAC地址生成器(可带跳数)
  13. 浅谈JS各种宽高(clientHeight、scrollHeight、offsetHeight等)
  14. 抽象代数之幂零群的两种等价表示即上中心列和下中心列
  15. js封装websocket
  16. ps格式文件如何打开
  17. VC网络编程(Socket)项目化视频教程
  18. Spring学习(二)IOC
  19. 实验吧-web-天下武功唯快不破
  20. NodeMCU文档中文翻译 6 MQTT模块

热门文章

  1. libz.dylib的研究 libz.1.2.5.tbd
  2. TCL_事务控制语言
  3. 開博客了, 因為搞Delphi 開發的關於Delphi學習
  4. [詹兴致矩阵论习题参考解答]习题1.10
  5. .Net程序员学习Linux最简单的方法
  6. 秋凉了,大家别加班了,早回吧:)
  7. WebFlux系列(十)WebClient 异常处理
  8. yum yum doesn‘t match version of Python 终极解决方案
  9. 关于java调用Dll文件的异常 Native library (win32-x86-64/CtrlNPCDLL.dll) not found in resource pat
  10. logback日志大量写磁盘导致微服务不能正常响应的解决方案