我创建了一个名为“testUpdate”的动态 Web 项目(当然我不会忘记将动态 Web 模块版本更改为 2.5,并且在配置中我选择了 Axis 2 Web 服务
- 我将这两个类添加到我的动态网络项目中:
SimpleService .java 和 PWCBHandler.java
我右键单击 SimpleService.java -> 新建 -> 其他 -> Web 服务来创建我的 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
)
我将 testcl.java 类添加到我的 Web 服务客户端。这是代码
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; } }
我不要忘记更改 webSercice_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 Application 运行时,它给了我一个异常
用法:$java Client endpoint_address client_repo_path 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 1 at com.gismo.testcl.main(testcl.java:24)