一、 我的情况很简单:
只是因为我调用服务端接口方法包名没有写对,应该如下面代码中这样写:
call.setOperationName(new QName("http://com.boco.esb.receive", "example"));
call.setTargetEndpointAddress("http://localhost:7081/Hermes/services/HermesService");
call.setSOAPActionURI("http://com.boco.esb.receive/example");
// com.boco.esb.receive 为服务端代码所在类所属包名、 example 为服务端接口方法名
call.setOperationName(new QName("http://com.boco.esb.receive", "example"));
call.setEncodingStyle(null);
call.setUseSOAPAction(true);
call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);
call.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
call.setSOAPVersion(SOAPConstants.SOAP11_CONSTANTS);
二、再则,看到 网上有另外情况:
此方法出自:http://blog.csdn.net/zhengzhb/article/details/7741396
原文如下:使用axis开发webservice服务 java.net.ConnectException: Connection refused: connect异常的解决办法
最近使用axis开发webservice服务,本机调用一切正常,但是其他人却访问不了,报错信息为:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: Java.NET.ConnectException: Connection refused: connect
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection refused: connect
at java.Net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
...
原来,axis自动生成的wsdl文件是有问题的,在他的wddlsoap标签中会使用localhost作为访问地址,
<wsdlsoap:address location="http://localhost:8080/Axis/services/Test"/>
这样当然是只有本机访问正常,其他机器访问不了,解决办法就是修改一下这个地址,比如你的地址是10.154.23.153,那么就把这里改为
<wsdlsoap:address location="http://10.154.23.153:8080/Axis/services/Test"/>
这样,问题就解决了。