「testUpdate」という名前の動的 Web プロジェクトを作成します (もちろん、動的 Web モジュールのバージョンを 2.5 に変更することを忘れずに、構成で Axis 2 Web サービスを選択します)。
- 動的 Web プロジェクトに次の 2 つのクラスを追加します。
SimpleService .java および PWCBHandler.java
SimpleService.java -> New ->Other -> Web Service を右クリックして、Web サービスを作成します。
すべての jar ファイルをランパート ディストリビューションから testUpdate/WebContent/WEB_INF/lib にコピーし、すべての .mar モジュールを testUpdate/WebContent/WEB_INF/modules にコピーすることを忘れないでください。
services.xml ファイルを次のように変更します
<service name="SimpleService" > <module ref="rampart" /> <Description> </Description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass" locked="false">com.gismo.SimpleService</parameter> <parameter name="InflowSecurity"> <action> <items>UsernameToken</items> <passwordCallbackClass>com.gismo.PWCBHandler</passwordCallbackClass> </action> </parameter> </service>
testUpdate を右クリック -> RUN AS _> サーバーで実行 (Web サービスが正常にデプロイされました)
ファイル -> 新規 -> その他 -> Web サービス クライアント
そしてサービス定義にSimpleServiceのwsdlファイルのURLを貼り付けます
( http://localhost:9091/testUpdate/services/SimpleService?wsdl
)
Web サービス クライアントに testcl.java クラスを追加します。ここにコードがあります
public class testCL { public static void main(String[] args) throws Exception { if (args.length != 2) { System.out.println(args.length); System.out .println("Usage: $java Client endpoint_address client_repo_path"); } ConfigurationContext ctx = ConfigurationContextFactory .createConfigurationContextFromFileSystem(args[1], args[1] + "/conf/axis2.xml"); ServiceClient client = new ServiceClient(ctx, null); Options options = new Options(); options.setAction("urn:echo"); options.setTo(new EndpointReference(args[0])); client.setOptions(options); OMElement response = client.sendReceive(getPayload("Hello world")); System.out.println(response); } private static OMElement getPayload(String value) { OMFactory factory = OMAbstractFactory.getOMFactory(); OMNamespace ns = factory.createOMNamespace("com.gismo/xsd", "ns1"); OMElement elem = factory.createOMElement("echo", ns); OMElement childElem = factory.createOMElement("param0", null); childElem.setText(value); elem.addChild(childElem); return elem; } }
webService_client/WebContent/axis2-web/conf/axis2.xml を変更して追加することを忘れないでください
<module ref="rampart"/> <parameter name="OutflowSecurity"> <action> <items>UsernameToken</items> <user>bob</user> <passwordCallbackClass>com.gismo.PWCBHandler</passwordCallbackClass> </action> </parameter>
しかし、testCl を Java アプリケーションとして実行すると、例外が発生します。
使用法: $java Client endpoint_address client_repo_path スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1 at com.gismo.testcl.main(testcl.java:24)