XFire+Spring Webサービス構築
5950 ワード
以前はずっと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の内容は以下の通りです.
WebサービスのインタフェースクラスJAvaと対応する実装クラスHelloWorldImpl.java
アプリケーションContext.xmlファイルには、対応するbean、HelloWorldBeanが構成されています.このxmlファイルの内容は次のとおりです.
xfire-servlet.xmlの内容は次のとおりです.
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として成功したことがわかります.
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として成功したことがわかります.