Spring統合CXf WebServiceまとめ
Webサービスは、プラットフォームが独立した低結合で、プログラム可能なWebベースのアプリケーションから構成され、オープンXML(標準的な汎用タグ言語の下のサブセット)標準を使用して、分散型の相互運用アプリケーションを開発するために、これらのアプリケーションを記述、公開、発見、協調、構成することができます.Java WebServiceフレームワークについては、主にAXIS、XFire、CXF、そしてJavaが持参したJAX-WS(JDK 6以上の環境が必要)があります.
SOAP RPCの動作原理:WebクライアントとWebサーバの間でHTMLデータが伝送される点で、Webのリクエスト/応答方式と同様です.SOAP RPCモードでは、SOAPクライアント(プログラム)とSOAPサービスとの間で、SOAP仕様に適合したXMLデータが伝送される.
Webサービスでは、次の2つのテクノロジーが使用されます.
XML(標準汎用タグ言語の下のサブセット):XMLはweb上で構造化データを転送する偉大な方法であり、Webサービスは信頼できる自動的な方法でデータを操作しなければならない.HTML(標準汎用タグ言語の下のアプリケーション)は要求を満たさないが、XMLはwebサービスが非常に便利にデータを処理することができ、その内容と表示の分離は非常に理想的である.
SOAP:SOAPはXMLメッセージを使用してリモートメソッドを呼び出し、WebサービスはHTTPプロトコルのpostとgetメソッドを通じてリモートマシンとインタラクティブになり、SOAPはより丈夫で柔軟で使いやすい.
UDDIおよびWSDLのような他の技術は、XMLおよびSOAP技術と密接に結合してサービス実装に使用される.
1、AXISはapacheソフトウェア組織のSOAP規範の実現である.
SOAPクライアント-->AXIS API-RPCリクエスト->AXIS Webアプリケーション(SOAPサービス)は、Tomcatコンテナに格納できます.
RPCベースのSOAPサービス手順をAXISで作成し、配布します.
2、webサービスオープンソースフレームワークXFire
XFireは次世代java soapオープンソースフレームワークです.XFireは便利なAPIを提供し、これらのAPIを使用してサービス(SOA)向けのプログラムを開発することができる.XFireはcodehausがウェブサービスオープンソースフレームワークプロジェクトを組織し、公式ホームページはhttp://xfire.codehaus.org.
主な機能は次のとおりです.
XFireとspring統合(XFireはspringコンテナで動作)XFireはspringの統合を提供し、spring beanを構成してwebサービスを提供することができます.
Webサービスのセキュリティ説明
デジタル署名(signature)により秘密鍵を用いてメッセージの要約を暗号化するサービスセキュリティメカニズムを提供し、メッセージが伝送中に改ざんされない限り、受信側はデジタル署名検証を行う際に成功する可能性がある.デジタル署名は、完全性と信頼性のないセキュリティの問題を解決しますが、メッセージ・ボディは明文的に送信され、伝送中にメッセージ・ボディの内容が監視される可能性があります.暗号化(encryption)が必要です.
3、CXFとSpringの完璧な統合方案
(1)CxfDemoのようなWebプロジェクトを新規作成し、pom.xmlに依存コードを以下のように追加する.
インタフェースを定義し、@webservice注記を使用します.コードは次のとおりです.
実装クラス,@WebService注記はパブリッシュするウェブサービスを表し,endpointInterfaceパラメータの値はそのサービスクラスに対応するインタフェースである.
アプリケーションcontext-springファイルを構成します.具体的なコードは次のとおりです.
implementorパラメータ:具体的な実装クラスを示す;addressパラメータ:このwebserviceの相対アドレスを指定します.
Web.xmlファイルには、次の構成が追加されます.具体的なコードは次のとおりです.
Webサーバに配備し、Webサービスプロジェクトをパブリッシュし、入力http://localhost:8080/CxfDemo/Hello?wsdl
(2)クライアント呼び出しWebServiceサービステストの作成
インタフェースを定義します.コードは次のとおりです.
アプリケーションcontext-springファイルを構成します.具体的なコードは次のとおりです.
Actionメソッドで@Resource注記を参照します.コードは次のとおりです.
このHelloServiceのメソッドをactionで呼び出すと、データが取得されます.
SOAP RPCの動作原理:WebクライアントとWebサーバの間でHTMLデータが伝送される点で、Webのリクエスト/応答方式と同様です.SOAP RPCモードでは、SOAPクライアント(プログラム)とSOAPサービスとの間で、SOAP仕様に適合したXMLデータが伝送される.
Webサービスでは、次の2つのテクノロジーが使用されます.
XML(標準汎用タグ言語の下のサブセット):XMLはweb上で構造化データを転送する偉大な方法であり、Webサービスは信頼できる自動的な方法でデータを操作しなければならない.HTML(標準汎用タグ言語の下のアプリケーション)は要求を満たさないが、XMLはwebサービスが非常に便利にデータを処理することができ、その内容と表示の分離は非常に理想的である.
SOAP:SOAPはXMLメッセージを使用してリモートメソッドを呼び出し、WebサービスはHTTPプロトコルのpostとgetメソッドを通じてリモートマシンとインタラクティブになり、SOAPはより丈夫で柔軟で使いやすい.
UDDIおよびWSDLのような他の技術は、XMLおよびSOAP技術と密接に結合してサービス実装に使用される.
1、AXISはapacheソフトウェア組織のSOAP規範の実現である.
SOAPクライアント-->AXIS API-RPCリクエスト->AXIS Webアプリケーション(SOAPサービス)は、Tomcatコンテナに格納できます.
RPCベースのSOAPサービス手順をAXISで作成し、配布します.
a、 SOAP java ;
b、 SOAP ;
c、 AXIS AdminClient SOAP ;
web web ——— ———> web AXIS (SOAP )
2、webサービスオープンソースフレームワークXFire
XFireは次世代java soapオープンソースフレームワークです.XFireは便利なAPIを提供し、これらのAPIを使用してサービス(SOA)向けのプログラムを開発することができる.XFireはcodehausがウェブサービスオープンソースフレームワークプロジェクトを組織し、公式ホームページはhttp://xfire.codehaus.org.
主な機能は次のとおりです.
a、 webservice , SOAP、WSDL 。
b、 JSR181, JDK5 web 。
c、 HTTP、JMS web 。
d、 spring、Pico 。
e、 。
XFireとspring統合(XFireはspringコンテナで動作)XFireはspringの統合を提供し、spring beanを構成してwebサービスを提供することができます.
a、 spring bean web.xml spring , XFire bean spring 。
b、 XFire Servlet spring , org.codehaus.xfire.spring.XFireSpringServlet web servlet 。
c、 web Bean spring bean, XFire spring , servicers.xml , applicationContext.xml bean。
Webサービスのセキュリティ説明
デジタル署名(signature)により秘密鍵を用いてメッセージの要約を暗号化するサービスセキュリティメカニズムを提供し、メッセージが伝送中に改ざんされない限り、受信側はデジタル署名検証を行う際に成功する可能性がある.デジタル署名は、完全性と信頼性のないセキュリティの問題を解決しますが、メッセージ・ボディは明文的に送信され、伝送中にメッセージ・ボディの内容が監視される可能性があります.暗号化(encryption)が必要です.
3、CXFとSpringの完璧な統合方案
(1)CxfDemoのようなWebプロジェクトを新規作成し、pom.xmlに依存コードを以下のように追加する.
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.6.2</version>
</dependency>
インタフェースを定義し、@webservice注記を使用します.コードは次のとおりです.
@WebService(name="HelloService", targetNamespace="http://www.yoodb.com")
public interface HelloService {
@WebMethod
@WebResult(name = "result")
public String sayHello(@WebParam(name = "s")String s);
}
実装クラス,@WebService注記はパブリッシュするウェブサービスを表し,endpointInterfaceパラメータの値はそのサービスクラスに対応するインタフェースである.
@WebService(name="HelloService", targetNamespace="http://www.yoodb.com",endpointInterface = "com.yoodb.webservice.HelloService")
public class HelloServiceImpl implements HelloService{
public String sayHello(String s) {
System.out.println( "====>>>>" + s);
return "sucess";
}
}
アプリケーションcontext-springファイルを構成します.具体的なコードは次のとおりです.
<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.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schema/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="helloServiceImpl" class="com.yoodb.webservice.HelloServiceImpl" />
<jaxws:endpoint id="hello" implementor="#helloServiceImpl" address="/Hello" />
</beans>
implementorパラメータ:具体的な実装クラスを示す;addressパラメータ:このwebserviceの相対アドレスを指定します.
Web.xmlファイルには、次の構成が追加されます.具体的なコードは次のとおりです.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationcontext-spring.xml</param-value><!-- spring -->
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-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>/*</url-pattern>
</servlet-mapping>
Webサーバに配備し、Webサービスプロジェクトをパブリッシュし、入力http://localhost:8080/CxfDemo/Hello?wsdl
(2)クライアント呼び出しWebServiceサービステストの作成
// WebService
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// WebService
factory.setServiceClass(HelloService.class);
// WebService
factory.setAddress(http://localhost:8080/CxfDemo/Hello);
HelloService hello = (HelloService)factory.create();
// webservice
hello.sayHello("hello");// sucess
インタフェースを定義します.コードは次のとおりです.
@WebService(name="HelloService", targetNamespace="http://www.yoodb.com")
public interface HelloService {
@WebMethod
@WebResult(name = "result")
public String sayHello(@WebParam(name = "s")String s);
}
アプリケーションcontext-springファイルを構成します.具体的なコードは次のとおりです.
<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.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schema/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="helloService" class="com.yoodb.webservice.HelloService" factory-bean="helloClientFactory" factory-method="create"/>
<bean id="helloClientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.yoodb.webservice.HelloService" />
<property name="address" value="http://localhost:8080/CxfDemo/Hello" />
</bean>
</beans>
Actionメソッドで@Resource注記を参照します.コードは次のとおりです.
@Resource(name="helloService")
private HelloService helloService;
このHelloServiceのメソッドをactionで呼び出すと、データが取得されます.