CXFはwebserviceクライアントとサービス端末を作成する

9481 ワード

一、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
 
  
    
    CXFServlet    
    org.apache.cxf.transport.servlet.CXFServlet    
    1    
    
    
    CXFServlet    
    /ws/*    
  
3、アプリケーションContext.xmlにxmlをインポートし、webserviceサービスをパブリッシュ
 
[html] 
view plain
copy
 
  

    xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:jaxws="http://cxf.apache.org/jaxws"    
    xmlns:jaxrs="http://cxf.apache.org/jaxrs"    
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
                        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
                        http://www.springframework.org/schema/tx  
                        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  
                        http://www.springframework.org/schema/aop  
                        http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
                        http://cxf.apache.org/jaxws    
                        http://cxf.apache.org/schemas/jaxws.xsd    
                        http://cxf.apache.org/jaxrs    
                        http://cxf.apache.org/schemas/jaxrs.xsd  
                        "  
                        default-autowire="byName"  
                        >  
      
      
      
      
    
 
 
    address="/userWebservice">
 

  
  • 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、アプリケーションContext.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>