CXF开发及与Spring整合开发
前言
本篇承接上一篇
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整合开发相关推荐
- rabbitmq实战_RabbitMQ实战(四) - RabbitMQ amp; Spring整合开发
0 相关源码 1 你将学到 RabbitMQ 整合 Spring AMQP实战 RabbitMQ 整合 Spring Boot实战 RabbitMQ 整合 Spring Cloud实战 2 Sprin ...
- spring boot + vue + element-ui全栈开发入门——前后端整合开发
一.配置 思路是通过node的跨域配置来调用spring boot的rest api. 修改config\index.js文件,设置跨域配置proxyTable: proxyTable: {'/api ...
- spring和mybatis的整合开发(基于MapperScannerConfigurer的整合开发(适用于复杂项目,接口较多的情况))...
在实际项目中,Dao层会包含很多接口,这样会导致spring配置文件过于臃肿.这时就需要采用扫描包的形式来配置mybaits中的映射器. 采用MapperScannerConfigurer来实现. M ...
- spring boot开发QQ音乐微信小程序(包含服务端源码)
spring boot+spring mvc+spring整合开发QQ音乐微信小程序(含简单服务端) 项目描述: spring boot+spring mvc+spring代理请求QQ音乐接口获取数据 ...
- 云栖社区特邀专家徐雷——Java Spring Boot开发实战系列课程【往期直播回顾】...
徐雷,花名:徐雷frank:资深架构师,MongoDB中文社区联席主席,吉林大学计算机学士,上海交通大学硕士.从事了 10年+开发工作,专注于分布式架构,Java Spring Boot.Spring ...
- JAX-RS和spring整合
JAX-RS 和 Spring 整合开发步骤 1.建立maven web工程 2.建立坐标,在pom.xml中导入需要依赖的jar包 完整的pom.xml <project xmlns= ...
- 【MyBatis框架】mybatis和spring整合
spring和mybatis整合 1.整合思路 需要spring通过单例方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用SqlSessionFactor ...
- Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合
1.整合思路 需要Spring通过单例方式管理SqlSessionFactory. Spring和MyBatis整合生成代理对象,使用SqlSessionFactory创建SqlSession.(Sp ...
- 转载 WebService 的CXF框架 WS方式Spring开发
WebService 的CXF框架 WS方式Spring开发 1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0.0 ...
最新文章
- Mysql错误1045解决方法
- Windows 技术篇-设置电脑启用或禁用开机按Ctrl+Alt+Del解除锁定
- python命名空间特性_Python命名空间与作用域
- 欢迎来怼---作业要求 20171015 beta冲刺贡献分分配规则
- [CQOI2015]任务查询系统
- java彩色的世界_JAVA真彩色转256色的实现
- 前端解读控制反转(IOC)
- CVPR 2019 论文大盘点-目标跟踪篇
- 两位小数乘两位小数竖式_人教版小学数学五年级上册小数乘整数公开课优质课课件教案视频...
- pytorch Inception代码实现
- 如何将Eclipse中Web项目打成war包
- MAC地址生成器(可带跳数)
- 浅谈JS各种宽高(clientHeight、scrollHeight、offsetHeight等)
- 抽象代数之幂零群的两种等价表示即上中心列和下中心列
- js封装websocket
- ps格式文件如何打开
- VC网络编程(Socket)项目化视频教程
- Spring学习(二)IOC
- 实验吧-web-天下武功唯快不破
- NodeMCU文档中文翻译 6 MQTT模块
热门文章
- libz.dylib的研究 libz.1.2.5.tbd
- TCL_事务控制语言
- 開博客了, 因為搞Delphi 開發的關於Delphi學習
- [詹兴致矩阵论习题参考解答]习题1.10
- .Net程序员学习Linux最简单的方法
- 秋凉了,大家别加班了,早回吧:)
- WebFlux系列(十)WebClient 异常处理
- yum yum doesn‘t match version of Python 终极解决方案
- 关于java调用Dll文件的异常 Native library (win32-x86-64/CtrlNPCDLL.dll) not found in resource pat
- logback日志大量写磁盘导致微服务不能正常响应的解决方案