`
eksliang
  • 浏览: 601923 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

CXF学习笔记二(在WEB容器中发布WebService)

阅读更多

转载请出自出处: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,返回结果如下发布成功。



 

 

 

 

  • 大小: 26 KB
分享到:
评论

相关推荐

    CXF webservice初学笔记

    - 配置并发布服务:在Spring或CXF的XML配置文件中配置服务端点,然后启动服务容器。 5. **CXF Webservice客户端** 消费CXF Webservice主要包括: - 服务引用:通过CXF的wsdl2java工具,根据WSDL生成客户端所需的...

    webservice+cxf基础笔记和视频,

    然后,当你开始使用CXF和Spring整合时,你将学习如何在Spring配置文件中声明和配置CXF服务,以及如何将服务接口实现类注入到Spring容器中。此外,你还会了解到如何通过CXF的端点发布功能将服务暴露出来,以及如何...

    SSH CXF webservice 开发笔记demo(包含步骤文档及所需war包)

    在"SSH CXF webservice 开发笔记demo.pdf"中,可能详细记录了从设置环境、创建项目、配置SSH框架、集成CXF、编写服务接口和实现、部署服务到服务器的每一步骤。"lib.rar"可能包含了项目所需的第三方库文件,包括SSH...

    Apache_cxf_学习笔记.docx

    ### Apache CXF 学习笔记知识点汇总 #### 一、CXF简介 ##### 1.1 CXF概述 - **背景介绍**:Apache CXF 是一个高性能、功能丰富的开源框架,用于构建和消费 Web 服务。它融合了 Celtix 和 XFire 两个开源项目的...

    webservice(cxf)与spring整合源码+文档

    学习者可以通过此项目了解如何在Spring容器中配置和管理CXF服务提供者,以及如何处理请求和响应。 3. "ws_1231_cxf_spring_client":对应的客户端项目,展示了如何在Spring环境中创建Web服务客户端,调用由CXF提供的...

Global site tag (gtag.js) - Google Analytics