服务端代码
- @WebService??
- @SOAPBinding(style?=?SOAPBinding.Style.RPC)??
- public?class?WebserviceServer?{??
- ????@WebMethod??
- ????void?doSomething()?{??
- ????????System.out.println("hello");??
- ????}??
- ??
- static?void?main(String[]?args)?{??
- ????????WebserviceServer?server?=?new?WebserviceServer();??
- ????????Endpoint.publish("http://172.16.160.67:8888/login",?server);??
- ????}??
- }??
服务端发布成功时的wsdl文件内容
[html]?

<?xml?version="1.0"?encoding="UTF-8"?>??
- ??
- <!--?Generated?by?JAX-WS?RI?at?http://jax-ws.dev.java.net.?RI's?version?is?JAX-WS?RI?2.2.4-b01.?-->??
- -<definitions?name="WebserviceServerService"?targetNamespace="http://test.kedacom.com/"?xmlns="http://schemas.xmlsoap.org/wsdl/"?xmlns:xsd="http://www.w3.org/2001/XMLSchema"?xmlns:tns="http://test.kedacom.com/"?xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"?xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"?xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy"?xmlns:wsp="http://www.w3.org/ns/ws-policy"?xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">?-typesxsd:schema>?xsd:import?schemaLocation="http://172.16.160.67:8888/login?xsd=1"?namespace="http://test.kedacom.com/"/>?</message?name="doSomething"part?name="parameters"?element="tns:doSomething"messagemessage?name="doSomethingResponse"part?name="parameters"?element="tns:doSomethingResponse"portType?name="WebserviceServer"operation?name="doSomething"input?message="tns:doSomething"?wsam:Action="http://test.kedacom.com/WebserviceServer/doSomethingRequest"output?message="tns:doSomethingResponse"?wsam:Action="http://test.kedacom.com/WebserviceServer/doSomethingResponse"operationportTypebinding?name="WebserviceServerPortBinding"?type="tns:WebserviceServer"soap:binding?style="document"?transport="http://schemas.xmlsoap.org/soap/http"/>?-soap:operation?soapAction=""inputsoap:body?use="literal"outputbindingservice?name="WebserviceServerService"port?name="WebserviceServerPort"?binding="tns:WebserviceServerPortBinding"soap:address?location="http://172.16.160.67:8888/login"portservicedefinitions>??
客户端调用代码
String?endPoint?=?"http://172.16.160.67:8888/login";??
- ????????Service?service?=?new?Service();??
- ????????try?{??
- ????????????Call?call?=?(Call)?service.createCall();??
- ????????????call.setTargetEndpointAddress(new?URL(endPoint));??
- ????????????call.setOperation("doSomething");??
- ????????????call.invoke(new?Object[]?{});??
- ????????}?catch?(ServiceException?e)?{??
- ????????????e.printStackTrace();??
- catch?(AxisFault?e)?{??
- catch?(RemoteException?e)?{??
- catch?(MalformedURLException?e)?{??
- ????????}??
调用时出现的了错误:
AxisFault???
- ?faultCode:?{http:??
- ?faultSubcode:???
- ?faultString:?Cannot?find?dispatch?method?for?{}doSomething??
- ?faultActor:???
- ?faultNode:???
- ?faultDetail:???
- ???{http:??
原因:
可以通过wsdl文件看到,利用jws发布时,namespace="http://test.kedacom.com/",而在客户端访问时没有指定命名空间。
修改方法:
修改客户端调用代码
????????????call.setOperationName(new?QName("http://test.kedacom.com/",?"doSomething"));??
- ????????}??
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|