今天在做Axis2测试时,出现以下错误:
Exception in thread "main" org.apache.axis2.AxisFault: Transport out has not been set at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:439) at org.apache.axis2.description.RobustOutOnlyAxisOperation$RobustOutOnlyOperationClient.send(RobustOutOnlyAxisOperation.java:80) at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:294) at org.apache.axis2.client.ServiceClient.sendRobust(ServiceClient.java:446) at org.apache.axis2.client.ServiceClient.sendRobust(ServiceClient.java:426) at org.apache.axis2.rpc.client.RPCServiceClient.invokeRobust(RPCServiceClient.java:132) at sample.pojo.rpcclient.WeatherRPCClient.main(WeatherRPCClient.java:36)
我样例的结构是这样的,webservice部署在Tomcat,然后在Eclipse里使用RPC进行调用。
检查了EPR,并没有不对的地方(网上说http前面有空格或者EPR有其它错误就会报上述错)
EndpointReference targetEPR = new EndpointReference("http://192.168.87.222:8080/webservice/services/WeatherService");
我又用下面的URL在浏览器里访问了一下,没有问题。
http://192.168.87.222:8080/webservice/services/WeatherService?wsdl
然后自己又从很多方面进行了尝试,结果还是报这个错。
最后,当我把Axis2 axis2-1.2.zip里lib下的所有包加入Tomcat的lib里和Eclipse当前项目的classpath(开始只加入了一些必须的包),错误消失,并且访问成功!!经过后期排查,是由于少了commons-httpclient-3.0.1.jar。