XFire+Spring Webサービス構築


以前はずっとWebサービスを勉强する时间がありませんでしたが、今日はプロジェクトが必要なので、夜勉强しました.あまり难しくないと思います.    
MyEclipseでWebプロジェクトを新規作成します.webservice_という名前です.test.このプロジェクトを選択したら、右クリックしてMyEclipse->Add Web Service Capabilitiesを選択し、右クリックしてMyEclipse->Add Spring Capabilitiesを選択します.
まずWEB-INFの下に2つの構成Springプロファイルを作成し、1つはアプリケーションContextである.xml、このファイルは本プロジェクトのbeanを定義するために使用され、1つはxfire-servletである.xmlは、XFireの関連beanを構成するために使用されます.修正後のweb.xmlの内容は以下の通りです.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<servlet>
		<servlet-name>XFireServlet</servlet-name>
		<servlet-class>
			org.codehaus.xfire.spring.XFireSpringServlet
		</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>XFireServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/applicationContext.xml,/WEB-INF/xfire-servlet.xml
		</param-value>
	</context-param>
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	<servlet>
		<servlet-name>xfire</servlet-name>
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>xfire</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>


 
WebサービスのインタフェースクラスJAvaと対応する実装クラスHelloWorldImpl.java 
 
package webservice;

public interface HelloWorld {
	String sayHelloWorld(String name);

}

 
package webservice;

public class HelloWorldImpl implements HelloWorld {

	public String sayHelloWorld(String name) {
		String helloWorld = "hello," + name;
		return helloWorld;
	}
}

 
アプリケーションContext.xmlファイルには、対応するbean、HelloWorldBeanが構成されています.このxmlファイルの内容は次のとおりです.
   
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="HelloWorldBean" class="webservice.HelloWorldImpl"/>
</beans>

    xfire-servlet.xmlの内容は次のとおりです.
  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

	<!--   XFire      -->
	<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />

	<bean
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="urlMap">
			<map>
				<entry key="/HelloWorldService.do">
					<ref bean="HelloWorldService" />
				</entry>
			</map>
		</property>
	</bean>
	<!--   XFire    -->
	<bean id="baseWebService"
		class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
		<!--   xfire.xml       -->
		<property name="serviceFactory" ref="xfire.serviceFactory" />
		<!--   xfire.xml  xfire   -->
		<property name="xfire" ref="xfire" />
	</bean>
	
	<bean id="HelloWorldService" parent="baseWebService">
		<!--     bean -->
		<property name="serviceBean" ref="HelloWorldBean" />
		<!--     bean      -->
		<property name="serviceClass" value="webservice.HelloWorld" />
	</bean>


</beans>

 
XFireはSpringに便利で使いやすいエクスポータXFireExporterを提供しています.このエクスポータのサポートにより、SpringコンテナでPOJOをWebサービスにエクスポートできます.HelloWorldはビジネス・サービス・クラスで、sayHelloWorldのメソッドがあり、Webサービスとしてオープンしたいと考えています.実際のアプリケーションでは、クラスに多くのメソッドがあり、一部のメソッドがWebサービスとしてオープンする必要がない場合、Webサービスとしてオープンなビジネスメソッドを定義するだけで、狭いインタフェースを定義できます.
上記の構成では、この構成ファイルにxfireが導入することがわかる.xmlというSpringプロファイル.XFireコアJARパッケージには、Springで使用する必要があるBeanとリソースの一部を定義する事前定義されたSpringプロファイルがあります.この事前定義されたプロファイルを導入する必要があります.このプロファイルから分かるように、XFireExporterによってビジネスクラスをWeb Serviceにエクスポートするには、どのエクスポータに対しても、XFire環境、すなわちserviceFactoryとxfireを導入する必要があります.これが標準的な構成です.ServiceFactoryはXFireのコアクラスであり、POJOをWeb Serviceに生成することができます. 
この例では、baseWebServiceを定義することで、残りのwebService構成は親beanとして使用されます.これにより、serviceFactoryとxfireを複数回導入することなくSpringの構成を簡素化できます.
 
前回の操作が完了した後、この簡単なWebサービスが作成されましたので、自分の労働成果を見てみましょう.
ブラウザにアドレスを入力:http://localhost:8080/webservice_test/HelloWorldService.do?wsdlああ、HelloWorldService対応のWSDL情報を見ることができます.このWSDLドキュメントを読むと、HelloWorldのsayHelloWorldメソッドがWeb Serviceとして成功したことがわかります.