CXF创建webservice客户端和服务端

本文详细介绍了如何使用Apache CXF框架创建WebService服务端和客户端。首先介绍了CXF的基本概念和准备条件,然后逐步讲解了从配置jar包、web.xml,到发布服务端、生成并配置客户端代码的全过程。
摘要由CSDN通过智能技术生成

一、CXF的介绍

Apache CXF是一个开源的WebService框架,CXF大大简化了Webservice的创建,同时它继承了XFire的传统,一样可以和spring天然的进行无缝的集成。CXF框架是一种基于servlet技术的SOA应用开发框架,要正常运用基于CXF应用框架开发的企业应用,除了CXF应用本身之外,还需要JDK和servlet容器的支持。

 

二、CXF的准备条件

所需要的jar包:

  xmlbeans-2.4.0.jar

  wss4j-1.5.9.jar

  jetty-server-7.1.6.v20100715.jar

  jetty-util-7.1.6.v20100715.jar

  geronimo-ws-metadata_2.0_spec-1.1.3.jar

  geronimo-activation_1.1_spec-1.1.jar

  geronimo-servlet_3.0_spec-1.0.jar

  velocity-1.6.4.jar

  jaxb-xjc-2.2.1.1.jar

  xml-resolver-1.2.jar

  wsdl4j-1.6.2.jar

  cxf-2.3.0.jar

  XmlSchema-1.4.7.jar

  jaxb-api-2.2.1.jar

  jaxb-impl-2.2.1.1.jar

  neethi-2.0.4.jar

  geronimo-annotation_1.0_spec-1.1.1.jar

  geronimo-stax-api_1.0_spec-1.0.1.jar

下载地址:http://download.csdn.net/detail/ch656409110/5748183   (取自己需要的jar包)

 

三、创建webservice服务端

1、先将jar包放入lib目录

2、在web.xml中配置CXF框架的核心servlet

 

[html]  view plain copy
 
  1. <!-- CXF -->  
  2. <servlet>    
  3.     <servlet-name>CXFServlet</servlet-name>    
  4.     <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>    
  5.     <load-on-startup>1</load-on-startup>    
  6. </servlet>    
  7. <servlet-mapping>    
  8.     <servlet-name>CXFServlet</servlet-name>    
  9.     <url-pattern>/ws/*</url-pattern>    
  10. </servlet-mapping>  

3、在applicationContext.xml中导入xml,并且发布webservice服务

 

[html]  view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.     xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:p="http://www.springframework.org/schema/p"  
  6.     xmlns:tx="http://www.springframework.org/schema/tx"  
  7.     xmlns:aop="http://www.springframework.org/schema/aop"  
  8.     xmlns:jaxws="http://cxf.apache.org/jaxws"    
  9.     xmlns:jaxrs="http://cxf.apache.org/jaxrs"    
  10.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  11.                         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  12.                         http://www.springframework.org/schema/tx  
  13.                         http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  
  14.                         http://www.springframework.org/schema/aop  
  15.                         http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  16.                         http://cxf.apache.org/jaxws    
  17.                         http://cxf.apache.org/schemas/jaxws.xsd    
  18.                         http://cxf.apache.org/jaxrs    
  19.                         http://cxf.apache.org/schemas/jaxrs.xsd  
  20.                         "  
  21.                         default-autowire="byName"  
  22.                         >  
  23.     <import resource="classpath:META-INF/cxf/cxf.xml" />  
  24.     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  25.     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  26.       
  27.     
  28.   <bean id="userWebservice" class="com.mm.ws.service.impl.UserWebserviceImpl"></bean>
  29.   <jaxws:endpoint implementor="#userWebservice"
  30.     address="/userWebservice">
  31.   </jaxws:endpoint>
  32. </beans>   

4、定义webservice接口UserWebservice和 实现类UserWebserviceImpl

package com.mm.ws.service;

import javax.jws.WebParam;
import javax.jws.WebService;
import com.mm.ws.result.UserResult;

@WebService(targetNamespace="http://ws.mm.com/")
public interface UserWebservice {
    /**
     *  用户登录
     *  这里的WebParam必须指定,否则调用的时候返回null 
     */
    public UserResult login(@WebParam(name = "userName") String userName, @WebParam(name = "pwd") String pwd);
}

 
public class UserWebserviceImpl implements UserWebservice {
 

    @Override
    public UserResult login(String userName, String password) {
        UserResult loginResult = new UserResult();
        return loginResult;
    }
}

 

 这样子,基本上就可以了。

 

5、保存代码,发布项目,启动tomact。

在地址栏输入:http://localhost:8880/ws/userWebservice?wsdl  即可看到发布的服务端的明细。

 

6、通过客户端调用服务端webservice,CXF生成客户端代码

通过maven引入cxf相关jar包

maven:

<dependency>
         <groupId>org.apache.cxf</groupId>
         <artifactId>cxf-rt-frontend-jaxws</artifactId>
         <version>${cxf.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.cxf</groupId>
         <artifactId>cxf-rt-transports-http</artifactId>
         <version>${cxf.version}</version>
      </dependency>
      <dependency>
         <groupId>org.apache.cxf</groupId>
         <artifactId>cxf-tools-common</artifactId>
         <version>${cxf.version}</version>
         <exclusions>
            <exclusion>
               <groupId>org.apache.velocity</groupId>
               <artifactId>velocity</artifactId>
            </exclusion>
         </exclusions>
      </dependency>

 

通过ant生成客户端代码:

 

<?xml version="1.0"?>
<project name="cxf wsdl2java" basedir="." default="cxfWSDLToJava">
	<property name="cxf.home" location="E:\tools\apache-cxf-2.5.0" />

	<path id="cxf.classpath">
		<fileset dir="${cxf.home}/lib">
			<include name="*.jar" />
		</fileset>
	</path>


	<target name="cxfWSDLToJava">
		
		<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">
		            <arg value="-client" />
		            <arg value="-p" />
		            <arg value="com.dii.ws.user" />
		            <arg value="-b" />
		            <arg value="ydd-user-binding-date.xml" />
		            <arg value="-d" />
		            <arg value="../src/main/java" />
		            <arg value="http://localhost:8880/ws/userWebservice?wsdl" />
		            <classpath>
		                <path refid="cxf.classpath" />
		            </classpath>
		        </java>
		</target>

</project>

 

 

 

7、在applicationContext.xml中导入xml,并且配置webservice客户端

<?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" xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
   xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd 
       http://cxf.apache.org/transports/http/configuration
       http://cxf.apache.org/schemas/configuration/http-conf.xsd">


	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
  <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
   
	
	<jaxws:client id="userWebservice" serviceClass="com.dii.ws.user.UserWebservice"
      address="http://localhost:8880/ws/userWebservice" />
</beans>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值