转载请出自出处: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,返回结果如下发布成功。
相关推荐
【WebService的实现——CXF学习笔记】 在Java世界中,WebService是一种通过标准协议(如SOAP)进行跨平台、跨语言通信的技术。CXF是Apache软件基金会的一个开源项目,它提供了构建和消费Web服务的工具和库。CXF支持...
学习这些内容后,开发者将能够熟练地使用CXF框架和Spring框架来构建和发布高质量的Web服务,同时也能掌握服务的测试、安全性和事务管理等关键环节。通过实践,你可以更好地理解和掌握这些技术,提升你的Web服务开发...
**SpringBoot框架** SpringBoot是由Pivotal团队提供的全新框架,其设计目标是简化Spring应用...这两个部分可以作为学习和实践SpringBoot发布和消费Web服务的起点,帮助开发者深入理解SpringBoot与CXF的协同工作方式。
1. **配置Spring上下文**:首先,我们需要创建一个Spring配置文件,例如`spring-cxf.xml`,在这个文件中,我们会定义CXF的bean,如`JaxWsServerFactoryBean`,用于创建和发布WebService服务。 2. **定义WebService...
当我们谈论“使用CXF发布WebService”时,我们实际上是在讨论如何利用Apache CXF框架创建和部署Web服务。Apache CXF是一个开源的Java框架,专门用于构建和消费Web服务,支持多种协议,如SOAP和RESTful。 首先,我们...
这个项目提供了一个很好的示例,通过详细注释帮助开发者理解如何在SpringBoot应用中发布和调用Web服务。 1. **SpringBoot简介** SpringBoot简化了Spring应用程序的初始设置和配置,通过自动配置和“起步依赖”...
【标题】"CXF+Spring+Tomcat发布WebService"涉及的是使用Apache CXF框架与Spring框架结合,在Tomcat服务器上部署和消费Web服务的过程。这是一个常见的企业级应用开发场景,特别是对于实现基于SOAP协议的Web服务。...
webservice示例 springmvc+maven+cxf发布webservice 博客地址 http://blog.csdn.net/joe_storm/article/details/78839150
在Java世界中,Apache CXF是一个广泛使用的开源框架,它允许开发者创建和消费Web服务。在Web服务开发中,拦截器扮演着至关重要的角色,它们提供了在消息发送和接收过程中插入自定义逻辑的能力。本篇文章将深入探讨...
在服务端配置中,你需要在`web.xml`文件中添加CXF所需的参数和Servlet配置。例如,设置`contextConfigLocation`以指示CXF加载应用程序上下文,包括`applicationContext-cxf.xml`文件。同时,配置CXFServlet,它是CXF...
在学习CXF时,了解源码有助于深入理解其工作原理。你可以查看CXF的GitHub仓库,探索其实现细节。同时,CXF提供了一系列工具,如CXF WSDL2Java生成器,用于从WSDL文件生成Java代码,以及CXF wsdl2wsdl工具,用于处理...
在这个基于CXF的Web服务完整例子中,我们将深入探讨CXF的核心概念、配置、以及如何创建和调用Web服务。 1. **CXF框架介绍**:CXF,全称为"Code first eXtended Framework",最初由XFire项目发展而来,后与Apache ...
然后,当你开始使用CXF和Spring整合时,你将学习如何在Spring配置文件中声明和配置CXF服务,以及如何将服务接口实现类注入到Spring容器中。此外,你还会了解到如何通过CXF的端点发布功能将服务暴露出来,以及如何...
本教程将详细介绍如何在Spring Boot项目中集成CXF来发布Web服务接口。 首先,我们需要确保项目中包含了Spring Boot和CXF的相关依赖。在`pom.xml`文件中,我们需要添加以下依赖: ```xml <groupId>org.spring...
3. **配置服务**:在Spring或其他容器中配置CXF,指定服务地址、服务类等信息。 4. **部署服务**:将服务部署到应用服务器,如Tomcat或Jetty。 5. **创建客户端**:同样,使用CXF工具从WSDL生成客户端代理类,然后...
做开发时,查了大量资料,发现一比较全面的资料,分享一下!...WebService CXF学习——高级篇(一)(二) 1.整合Spring框架 2.CXF+Spring+Hibernate 3.WS-Security WebService CXF学习——JAXB剖析
总结,"CXF+Jetty发布WebService"是一个将Java服务接口通过CXF转换成Web服务,并使用Jetty作为服务器的实践过程。CXF简化了服务开发,而Jetty提供了轻量级的运行环境。理解并掌握这一技术栈,对于开发基于Java的...
在本教程中,我们将深入探讨如何使用CXF在JBoss和Tomcat这两种流行的Java应用服务器上发布Web服务。 ### 一、CXF WebService发布 1. **CXF环境搭建** 在开始之前,确保你已经安装了Java Development Kit (JDK) 和...