CXF2.1+Spring实现WebService

本文介绍如何使用 Apache CXF 2.1 构建 Web 服务,包括搭建 Web 工程、配置服务端及客户端的过程。通过具体实例展示了所需依赖库、接口定义、实现类编写以及 Spring 配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 首先应该把需要的包找齐了,就目前而言应该是apache-cxf-2.1.,下栽地址http://cxf.apache.org/download.html
  2. 建立web工程,导入所需要用到的包,如下: 
    webservice所需要的包:
    commons-logging-1.1.jar
    geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar)
    geronimo-annotation_1.0_spec-1.1.jar (JSR 250)
    geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar)
    geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar)
    geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181)
    jaxb-api-2.1.jar
    jaxb-impl-2.1.6.jar
    jaxws-api-2.1.jar
    jetty-6.1.5.jar
    jetty-util-6.1.5.jar
    neethi-2.0.jar
    saaj-api-1.3.jar
    saaj-impl-1.3.jar
    stax-api-1.0.1.jar
    wsdl4j-1.6.1.jar
    wstx-asl-3.2.1.jar
    XmlSchema-1.2.jar
    xml-resolver-1.2.jar
    
    整合spring所需要的包:
    aopalliance-1.0.jar
    spring-core-2.0.4.jar
    spring-beans-2.0.4.jar
    spring-context-2.0.4.jar
    spring-web-2.0.4.jar
    
    CXF2.1框架所需包:
    cxf-2.1.jar
    cxf-manifest.jar
     
  3.  新建一个接口类:HelloWorld,如下:
    package com.zx.cxf.service;   
      
    import javax.jws.WebParam;   
    import javax.jws.WebService;   
      
    @WebService  
    public interface HelloWorld {   
        String sayHi(@WebParam(name="text") String text);   
    }  
    
     
  4. 创建接口的实现类:HelloWorldImpl,如下
    package com.zx.cxf.service;   
      
    import javax.jws.WebService;   
      
    import com.zx.cxf.service.HelloWorld;   
    @WebService
    public class HelloWorldImpl implements HelloWorld {   
        
        public String sayHi(String text) {   
            return "Hello " + text;   
        }   
    }  
  5.  在WEB-INF目录下新建beans.xml,如下:
    <?xml version="1.0" encoding="gb2312"?>
    <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/beans    
            http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
            http://cxf.apache.org/jaxws    
            http://cxf.apache.org/schemas/jaxws.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" />
    
    	<bean id="helloWordBean" class="com.zx.cxf.service.HelloWorldImpl" />	
    	<jaxws:server id="registerWebService" serviceClass="com.zx.cxf.service.HelloWorldImpl" address="/HelloWorld">
    		<jaxws:serviceBean>
    			<ref bean="helloWordBean" />
    		</jaxws:serviceBean>
    	</jaxws:server>
    </beans>
     
  6. 修改web.xml文件,如下:
    <?xml version="1.0" encoding="ISO-8859-1"?>  
      
    <!DOCTYPE web-app   
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"   
        "http://java.sun.com/dtd/web-app_2_3.dtd">  
      
    <!-- START SNIPPET: webxml -->  
    <web-app>  
        <context-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>/WEB-INF/beans.xml</param-value>  
        </context-param>  
      
        <listener>  
            <listener-class>  
                org.springframework.web.context.ContextLoaderListener   
            </listener-class>  
        </listener>  
      
        <servlet>  
            <servlet-name>CXFServlet</servlet-name>  
            <display-name>CXF Servlet</display-name>  
            <servlet-class>  
                org.apache.cxf.transport.servlet.CXFServlet   
            </servlet-class>  
            <load-on-startup>1</load-on-startup>  
        </servlet>  
      
        <servlet-mapping>  
            <servlet-name>CXFServlet</servlet-name>  
            <url-pattern>/services/*</url-pattern>  
        </servlet-mapping>  
    </web-app>  
    <!-- END SNIPPET: webxml -->  
    
     
  7. 启动tomcat
    测试:简单的测试就是ie测试,在浏览器中输入 http://localhost:8080/CxfService/services/,如果出现

    {http://service.cxf.zx.com/}HelloWorldImplPort ,或者输入http://localhost:8080/CxfService/services/HelloWorld?wsdl,出现wsdl文挡,则说明服务器端配置成功。

  8. 以上是服务端的配置,若成功则配置客户端.(此处服务端和客户端是两个不同的应用程序)

  9. 在客户端项目根目录添加

    <?xml version="1.0"?>
    <project name="cxf wsdl2java" basedir="." default="">   
       <property name="cxf.home" location ="D:\apache-cxf-2.1"/>
    	
       <path id="cxf.classpath">
          <fileset dir="${cxf.home}/lib">
             <include name="*.jar"/>
          </fileset>
       </path>
          
       <target name="register">(此名称可任意)
          <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">
             <arg value="-client"/>
             <arg value="-d"/>
             <arg value="src"/>
             <arg value="-p"/>
             <arg value="com.south.webapp.action.member.bbsclient"/>(生成本地存根的目录,需自己手动建立)
             <arg value="http://bbs.south.com/bbs/service/HelloWord?wsdl"/>(此处为服务端webservice服务访问路径)
             <classpath>
                <path refid="cxf.classpath"/>
             </classpath>
          </java>
       </target>
    </project>

     

  10. 累了,要睡觉了,未完待续吧.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值