WebServiceの2つのクライアント呼び出し方式
7319 ワード
WebServiceの2つのクライアント呼び出し方式
1.WebServiceインタフェースを構築する.
インタフェースクラス:
実装クラス:
services.xml:
web.xml:
注:ここではXFireを使用してWebServiceを構築するが、XFireパッケージを参照する必要があり、XFireと表記する必要があるが、どのフレームワークでWebServiceを構築してもアクセス原理は同じであるため、どのクライアントでもアクセス可能であり、導入するパッケージは文章の末尾に明記する必要がある.
2.WebServiceを呼び出す2つのクライアントについて説明します.
2.1 XFireクライアント:
XFireクライアントがWebServiceにアクセスするには、WSのインタフェースをシミュレートする必要があります.インタフェースの構造は一般的にインタフェースを定義するサービス業者が提供しています.自分で書いたものならもっと明確です.
シミュレーションWebServiceインタフェース(このインタフェースの書き方はWSサーバと同じですが、同じプロジェクトでも同じクラスでもありません):
クライアントインタフェースクラス:
ここでAnyNameという名前は、任意のアナログインタフェースの任意の名前が可能であることを意味し、呼び出す方法の構造がWSと同じであればよい.
クライアント呼び出しクラス、テストクラス:
2.2 Axisクライアント:
以上のコードは本人のテストに合格した.
ちなみに個人的な理解:
XFireクライアントの呼び出し方式は、WSインタフェースを先に指定する構造と同様に、リモートアドレスから1つのオブジェクトをローカルにインスタンス化する方法であり、方法構造と同様であるため、強制的に変換することができる.その後、ローカルコールを直接行う.
Axisクライアントの呼び出し方式はHTTPアクセスと類似しており、パラメータを設定して直接遠隔呼び出しする.
?wsdlアドレスのソース=サービスプロバイダが提供します.自分で作ったWebServiceであれば、デフォルトのフォーマットにアクセスできます.
http://[IPアドレス:ポート]/[プロジェクトアクセスパス]/services
のように
http://localhost:9415/rcfeng-WebService/services
urlのソースについては、先に手に入れますか?wsdlアドレス、次にアクセスします.
http://localhost:9415/rcfeng-WebService/services/Hello?wsdlを下に引くと赤い部分が見えます.
呼び出されたメソッドの名前は次のとおりです.
WebServiceのインタフェースを呼び出すことができます.
XFireで使用するパッケージ:
activation-1.1.jar
commons-beanutils-1.7.0.jar
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.0.4.jar
jaxen-1.1-beta-9.jar
jaxws-api-2.0.jar
jdom-1.0.jar
jsf-api.jar
jsf-impl.jar
jsr173_api-1.0.jar
jstl-1.2.jar
mail-1.4.jar
saaj-api-1.3.jar
saaj-impl-1.3.jar
spring-1.2.6.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.0.jar
xbean-2.2.0.jar
xbean-spring-2.8.jar
xfire-aegis-1.2.6.jar
xfire-annotations-1.2.6.jar
xfire-core-1.2.6.jar
xfire-java5-1.2.6.jar
xfire-jaxws-1.2.6.jar
xfire-jsr181-api-1.0-M1.jar
xfire-spring-1.2.6.jar
XmlSchema-1.1.jar
Axisで使用するパッケージ:
axis.jar
commons-discovery-0.2.jar
注:以上の2つのクライアント本人は同じプロジェクトに書いてあるので、Axisが使うパッケージが少なく見えます.いくつかの汎用パッケージはXFireを使用するときに追加されたからです.
項目の説明を添付します.
rcfeng-WebServiceはWebServiceサービス側のプロジェクトです
rcfeng-TestWebServiceはクライアントプロジェクト
rcfeng-WebServiceプロジェクトにはパッケージがありません.rcfeng-TestWebServiceWebRootWEB-INFlibXFireで入手できます.また、rcfeng-WebServiceプロジェクトではMyEclipseリファレンスパッケージを使用しています.直接プロジェクトをインポートするにはjarパスを更新したりパスを削除したりして、自分でjarパッケージをインポートする必要がある場合があります
1.WebServiceインタフェースを構築する.
インタフェースクラス:
package hello;
public interface IHello {
public String hello(String str,String str2) ;
}
実装クラス:
package hello;
public class Hello implements IHello{
public String hello(String str,String str2) {
return "Hello world ,i'am "+str+". = "+str2 ;
}
}
services.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>Hello</name>
<namespace>rcfeng</namespace>
<serviceClass>hello.IHello</serviceClass>
<implementationClass>hello.Hello</implementationClass>
</service>
</beans>
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.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注:ここではXFireを使用してWebServiceを構築するが、XFireパッケージを参照する必要があり、XFireと表記する必要があるが、どのフレームワークでWebServiceを構築してもアクセス原理は同じであるため、どのクライアントでもアクセス可能であり、導入するパッケージは文章の末尾に明記する必要がある.
2.WebServiceを呼び出す2つのクライアントについて説明します.
2.1 XFireクライアント:
XFireクライアントがWebServiceにアクセスするには、WSのインタフェースをシミュレートする必要があります.インタフェースの構造は一般的にインタフェースを定義するサービス業者が提供しています.自分で書いたものならもっと明確です.
シミュレーションWebServiceインタフェース(このインタフェースの書き方はWSサーバと同じですが、同じプロジェクトでも同じクラスでもありません):
クライアントインタフェースクラス:
ここでAnyNameという名前は、任意のアナログインタフェースの任意の名前が可能であることを意味し、呼び出す方法の構造がWSと同じであればよい.
package xfire;
public interface IAnyName {
public String hello(String str,String str2) ;
}
クライアント呼び出しクラス、テストクラス:
package xfire;
import org.codehaus.xfire.XFire;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class XFireTest {
public static void main(String[] args) {
try {
String url = "http://localhost:9415/rcfeng-WebService/services/Hello" ;
Service service = new ObjectServiceFactory().create(IAnyName.class) ;
// XFire fire=XFireFactory.newInstance().getXFire();
// XFireProxyFactory factory=new XFireProxyFactory(fire);
XFireProxyFactory factory = new XFireProxyFactory() ;
IAnyName hello = (IAnyName) factory.create(service,url) ;
String str = hello.hello("rcfeng","Parameter two") ;
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.2 Axisクライアント:
package axis;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class AxisTest {
public static void main(String[] args) {
try {
String str = "rcfeng" ;
String endpoint = "http://localhost:9415/rcfeng-WebService/services/Hello" ;
Service service = new Service() ;
Call call = (Call) service.createCall() ;
call.setTargetEndpointAddress(endpoint) ;
call.setOperationName("hello") ;//ws
// , , , new Object
call.addParameter("parameter1",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN) ;
call.addParameter("parameter2",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN) ;
call.setReturnType(XMLType.XSD_STRING) ;
call.setUseSOAPAction(true) ;
// call.setSOAPActionURI("http://172.20.35.123:6110/cea-ws/services/ChangeMemberPinService");
String result = (String) call.invoke(new Object[]{str,"Parameter two"}) ;
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上のコードは本人のテストに合格した.
ちなみに個人的な理解:
XFireクライアントの呼び出し方式は、WSインタフェースを先に指定する構造と同様に、リモートアドレスから1つのオブジェクトをローカルにインスタンス化する方法であり、方法構造と同様であるため、強制的に変換することができる.その後、ローカルコールを直接行う.
Axisクライアントの呼び出し方式はHTTPアクセスと類似しており、パラメータを設定して直接遠隔呼び出しする.
?wsdlアドレスのソース=サービスプロバイダが提供します.自分で作ったWebServiceであれば、デフォルトのフォーマットにアクセスできます.
http://[IPアドレス:ポート]/[プロジェクトアクセスパス]/services
のように
http://localhost:9415/rcfeng-WebService/services
urlのソースについては、先に手に入れますか?wsdlアドレス、次にアクセスします.
http://localhost:9415/rcfeng-WebService/services/Hello?wsdlを下に引くと赤い部分が見えます.
呼び出されたメソッドの名前は次のとおりです.
WebServiceのインタフェースを呼び出すことができます.
XFireで使用するパッケージ:
activation-1.1.jar
commons-beanutils-1.7.0.jar
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.0.4.jar
jaxen-1.1-beta-9.jar
jaxws-api-2.0.jar
jdom-1.0.jar
jsf-api.jar
jsf-impl.jar
jsr173_api-1.0.jar
jstl-1.2.jar
mail-1.4.jar
saaj-api-1.3.jar
saaj-impl-1.3.jar
spring-1.2.6.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.0.jar
xbean-2.2.0.jar
xbean-spring-2.8.jar
xfire-aegis-1.2.6.jar
xfire-annotations-1.2.6.jar
xfire-core-1.2.6.jar
xfire-java5-1.2.6.jar
xfire-jaxws-1.2.6.jar
xfire-jsr181-api-1.0-M1.jar
xfire-spring-1.2.6.jar
XmlSchema-1.1.jar
Axisで使用するパッケージ:
axis.jar
commons-discovery-0.2.jar
注:以上の2つのクライアント本人は同じプロジェクトに書いてあるので、Axisが使うパッケージが少なく見えます.いくつかの汎用パッケージはXFireを使用するときに追加されたからです.
項目の説明を添付します.
rcfeng-WebServiceはWebServiceサービス側のプロジェクトです
rcfeng-TestWebServiceはクライアントプロジェクト
rcfeng-WebServiceプロジェクトにはパッケージがありません.rcfeng-TestWebServiceWebRootWEB-INFlibXFireで入手できます.また、rcfeng-WebServiceプロジェクトではMyEclipseリファレンスパッケージを使用しています.直接プロジェクトをインポートするにはjarパスを更新したりパスを削除したりして、自分でjarパッケージをインポートする必要がある場合があります