转载请出自出处:http://eksliang.iteye.com/blog/2265685
一、概述
在《CXF学习笔记一》中使用代理工厂JaxWsProxyFactoryBean来发布WebService,但是这种发布有个缺陷,那就是必须运行在指定端口上面,如果端口被占用,就会报错,假如现在的需求是:我有个WEB应用想部署在tomcat里面,而我这个WEB应用发布的WebService我也想使用8080端口,怎么办?
答:使用CXF自带的CXFServlet就可以完成这个功能。
二、配置CXFServlet
既然是CXFServlet那就必须在web.xml中配置这个Servlet,代码如下:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml</param-value> </context-param> <!-- Cxf中使用 CXFServlet,发布跟当前项目端口相同的服务 --> <servlet> <servlet-name>cxfServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>cxfServlet</servlet-name> <url-pattern>/cxf/*</url-pattern> </servlet-mapping>
默认情况下,CXFServlet会去加载WEB-INF下创建cxf-servlet.xml配置文件,但是我这里配置了contextConfigLocation,所以在类路径下面加载的CXF配置也同样生效。
三、服务接口以及实现类如下所示
接口:
import java.util.List; import javax.jws.WebService; import com.gosun.jws.daomain.Users; /** * @author Ickes */ @WebService public interface UserService { /** * 测试返回list * @return */ public List<Users> geAlltUsers(); /** * 测试返回实体,以及传人普通参数 * @param id * @return */ public Users getUser(String id); /*** * 测试传入对象 * @param user */ public void save(Users user); /** * 测试传人集合 * @param users */ public void saves(List<Users> users); }实现类:
import java.util.List; import javax.jws.WebService; import com.gosun.jws.daomain.Users; import com.gosun.jws.daomain.UsersFactory; @WebService(serviceName = "cxfService", endpointInterface = "com.gosun.jws.cxf.UserService" ) public class UserServiceImpl implements UserService { @Override public List<Users> geAlltUsers() { return UsersFactory.getUsers(); } @Override public Users getUser(String id) { System.out.println(id); return UsersFactory.getUser(); } @Override public void save(Users user) { System.out.println(user.toJson()); } @Override public void saves(List<Users> users) { for (Users u : users) { System.out.println(u.toJson()); } } }
测试用到的:UsersFactory工具类和Users实体类在:http://eksliang.iteye.com/blog/2265021篇文章的3.1和3.2代码中
四、配置CXF的配置文件
在classpath目录下面新建applicationContext-cxf.xml文件,内容如下所示:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:soap="http://cxf.apache.org/bindings/soap" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <!-- CXFServlet 会自动把com.gosun.jws.cxf.UserServiceImpl发布为WebService --> <jaxws:server id="cxfUserService" serviceClass="com.gosun.jws.cxf.UserService" address="/userService"> <jaxws:serviceBean> <bean class="com.gosun.jws.cxf.UserServiceImpl" /> </jaxws:serviceBean> </jaxws:server> </beans>
五、测试
我使用8080端口进行发布我的WEB服务,在浏览器中输入http://localhost:8080/jws/cxf,返回结果如下发布成功。
相关推荐
springboot整合CXF发布webservice和客户端调用 项目中每个类都有详细的注释,保证都能看懂,不失为一个学习springboot整合cxf来学习webservice发布调用的好例子
webservice示例 springmvc+maven+cxf发布webservice 博客地址 http://blog.csdn.net/joe_storm/article/details/78839150
这是一个关于cxf框架发布webservice的视频。,,,,,,
Spring+CXF 发布WebService服务
CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx ) CXF学习笔记.docx )
SpringBoot基础框架,集成了通过CXF发布WebService技术,包括服务器端和客户端,直接可运行
java语言实现使用spring+mybatis+oracle访问数据库,使用cxf发布webservice,并使用axis调用webservice。项目使用maven管理jar包。
CXF+Spring+Tomcat发布WebService
做开发时,查了大量资料,发现一比较全面的资料,分享一下!...WebService CXF学习——高级篇(一)(二) 1.整合Spring框架 2.CXF+Spring+Hibernate 3.WS-Security WebService CXF学习——JAXB剖析
CXF例子 创建服务端、客户端、相关xml的配置和环境jar说明
3、web.xml里配置spring监听器,及其加载的beans.xml,把cxf-servlet.xml删掉,发布到WEB服务器即可,注意这种方式在必须需要本地wsdl文件 手动放在src下,默认发布到web服务器的路径为WEB-INF/classes/xxx.wsdl ...
Apache CXF是一个开源的Service框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面向服务架构(SOA)业务组件与技术的灵活复用。在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息格式...
CXF使用EndpointImpl发布WebService加入拦截器
Apache cxf 学习笔记.pdfApache cxf 学习笔记.pdf
【精品文档】基于cxf webservice传递List及bean.pdf CXF学习笔记.doc 使用Apache CXF开发Web Service.pdf 如何使用myeclipse开发 webservice
2、将cxf_jar包文件夹下所有包,拷至MyCXFService与MyCXFClient项目WebRoot\WEB-INF\lib\cxf_2.7.8 目录下(注意:两个项目都需要这些jar包) 3、将两个项目都导入myEclipse 4、将MyCXFService与MyCXFClient 一起...
CXF Webservice 开发手册
cxf3.2.0作为服务端或客户端,发布webservice或者调用webservice所需的最少jar包。
CXF方式实现的WebService 接口的发布