我有简单的网络服务:
我有同样的问题。当我不附加“?wsdl”时,我有肥皂faylt。我该如何避免这种异常?
@WebService
@SOAPBinding(style = Style.RPC)
public interface TimeServer {
@WebMethod
@WebResult(partName = "time_response")
String getTimeAsString();
@WebMethod
@WebResult(partName = "time_response")
long getTimeAsElapsed();
}
和impl:
@WebService(endpointInterface = "x.y.z.TimeServer")
public class TimeServiceImpl implements TimeServer {
public TimeServiceImpl() {}
@Override
public String getTimeAsString() {return new Date().toString();}
@Override
public long getTimeAsElapsed() {return new Date().getTime();}
}
我在Jboss As 7.0.1中运行此Web服务。 一切运作良好!
当我打开链接 localhost:8080 / project / time?wsdl 时 一切顺利 - 我有wsdl。
但是当我不附加“?wsdl”时,我有例外。
14:26:58,192 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (http-localhost-127.0.0.1-8080-1) Interceptor for {http://x.z.y/}HelloWorld has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: No such operation: null (HTTP GET PATH_INFO: /project/timenull)
at org.apache.cxf.interceptor.URIMappingInterceptor.handleMessage(URIMappingInterceptor.java:88)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
我从服务器获得此响应:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>
No such operation: null (HTTP GET PATH_INFO: /soap-service/timenull)
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
我如何避免此例外?
如果客户端会看到另一条消息而不是此错误响应,那会更好吗?如果客户端在没有“?wsdl”的情况下打开链接,我该如何发送另一个XML?
thnaks
答案 0 :(得分:2)
Webservices不支持HTTP GET。如果您输入服务URL,则直接进行HTTP GET。这就是它回应错误No such operation
相反,您需要进行SOAP POST以从Web服务获取响应。为此编写一个Web服务客户端。您可以参考 this link 创建Web服务客户端
答案 1 :(得分:0)
@grep 我认为这篇文章有点陈旧,但如果其他有类似问题的人能够做到,我仍会尝试回答。好吧,我有同样的问题,并想知道这些背后的原因是什么。这是我尝试并解决问题的两个步骤。确保您能够在浏览器中访问wsdl。
创建新项目。 这确实解决了我的问题并得到了SOAPUI中webservice的响应。
其次,在这种情况下,请确保已按照@Dinal的说明正确部署了Web服务。