来自第三方的WSDL具有硬编码的IP

时间:2015-09-16 14:36:58

标签: java web-services soap wsdl jax-ws

我们从第三方公司获得了WSDL。它里面有一个硬编码的IP:

<wsdl:service name="SomeWebService">
    <wsdl:port binding="tns:SomeWebService_SOAP_HTTP" name="SomeWebServicePort">
        <soap:address location="http://192.168.0.7:9010/WSProject/SomeWebService"/>
    </wsdl:port>
</wsdl:service>

我们从中生成了客户端和模拟服务,一切都很顺利。我猜IP被忽略了,因为它绝对不是我们域中的有效URL。

最近他们宣布他们必须更换工具,并为我们提供了新的WSDL。在某些方面,它更干净,看起来更好。但是同一部分仍然有一个硬编码的IP。

<WL5G3N0:service name="SomeWebService">
<WL5G3N0:port binding="WL5G3N2:SomeWebService" name="SomeWebServicePort">
  <WL5G3N3:address location="http://192.168.0.7:9010/WSProject/SomeWebServicePort"/>
</WL5G3N0:port>

除了看起来很奇怪的命名空间外,他们还将Port添加到了URL中,而且一切都很奇怪。我们生成了一个模拟服务和一个与模拟对话的JUnit客户端。但是,与模拟服务在同一webapp中的实际代码使用的相同客户端代码将失败,如下所示。注意第一行中的IP。同样,这不会在应用程序的任何其他地方使用,也不会在我们的网络中使用。

我们正常通过客户端设置URL,并且它在某些条件下工作,如上所述。怎么办?

[9/16/15 9:48:00:413 EDT] 000000ce WSChannelFram A   CHFW0019I: The Transport Channel Service has started chain HttpOutboundChain:192.168.0.7:9010.
[9/16/15 9:48:21:546 EDT] 000000ce SystemOut     O 2015-09-16 09:48:21:541 org.quartz.core.JobRunShell - Job DEFAULT.VendorUploadTask threw an unhandled Exception: 
javax.xml.ws.soap.SOAPFaultException: java.net.ConnectException: Connection timed out: no further information
   at org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.createSystemException(MethodMarshallerUtils.java:1353) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.demarshalFaultResponse(MethodMarshallerUtils.java:1079) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.marshaller.impl.alt.RPCLitMethodMarshaller.demarshalFaultResponse(RPCLitMethodMarshaller.java:558) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.getFaultResponse(JAXWSProxyHandler.java:626) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.createResponse(JAXWSProxyHandler.java:566) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:432) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:213) ~[org.apache.axis2.jar:?]
   at com.sun.proxy.$Proxy273.processRequest(Unknown Source) ~[?:?]
   at my.org.st05client.usms.St05Client.sendToWS(St05Client.java:31) ~[classes/:?]
   at my.org.job.VendorUploadJob.sendXml(VendorUploadJob.java:154) ~[classes/:?]
   at my.org.job.VendorUploadJob.executeInternal(VendorUploadJob.java:122) ~[classes/:?]
   at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:111) ~[spring-context-support-4.0.0.RELEASE.jar:4.0.0.RELEASE]
   at org.quartz.core.JobRunShell.run(JobRunShell.java:223) [quartz-1.8.6.jar:?]
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [quartz-1.8.6.jar:?]
Caused by: java.net.ConnectException: Connection timed out: no further information
   at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:1.6.0]
   at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:614) ~[?:1.6.0]
   at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptConnectWork(WorkQueueManager.java:866) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.tcp.channel.impl.ConnectionManager.getConnection(ConnectionManager.java:185) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.tcp.channel.impl.TCPConnLink.connectCommon(TCPConnLink.java:252) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.tcp.channel.impl.TCPConnLink.connect(TCPConnLink.java:201) ~[?:CCX.CF [o1103.02]]
   at com.ibm.wsspi.channel.base.OutboundProtocolLink.connect(OutboundProtocolLink.java:87) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.http.channel.outbound.impl.HttpOutboundLink.connect(HttpOutboundLink.java:281) ~[com.ibm.ws.runtime.jar:?]
   at com.ibm.ws.channel.framework.impl.OutboundVirtualConnectionImpl.connect(OutboundVirtualConnectionImpl.java:79) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.websvcs.transport.http.HTTPConnection.doConnect(HTTPConnection.java:484) ~[com.ibm.wsfp.main.jar:?]
   at com.ibm.ws.websvcs.transport.http.HTTPConnection.connect(HTTPConnection.java:199) ~[com.ibm.wsfp.main.jar:?]
   at com.ibm.ws.websvcs.transport.http.SOAPOverHTTPSender.setupHTTPConnection(SOAPOverHTTPSender.java:2146) ~[com.ibm.wsfp.main.jar:?]
   at com.ibm.ws.websvcs.transport.http.SOAPOverHTTPSender.<init>(SOAPOverHTTPSender.java:2087) ~[com.ibm.wsfp.main.jar:?]
   at com.ibm.ws.websvcs.transport.http.HTTPTransportSender.invoke(HTTPTransportSender.java:352) ~[com.ibm.wsfp.main.jar:?]
   at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:544) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.execute(AxisInvocationController.java:578) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.doInvoke(AxisInvocationController.java:127) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.core.controller.impl.InvocationControllerImpl.invoke(InvocationControllerImpl.java:93) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:419) ~[org.apache.axis2.jar:?]
   ... 8 more
2015-09-16 09:48:21:546 org.quartz.core.ErrorLogger - Job (DEFAULT.VendorUploadTask threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
   at org.quartz.core.JobRunShell.run(JobRunShell.java:234) [quartz-1.8.6.jar:?]
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [quartz-1.8.6.jar:?]
Caused by: javax.xml.ws.soap.SOAPFaultException: java.net.ConnectException: Connection timed out: no further information
   at org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.createSystemException(MethodMarshallerUtils.java:1353) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.demarshalFaultResponse(MethodMarshallerUtils.java:1079) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.marshaller.impl.alt.RPCLitMethodMarshaller.demarshalFaultResponse(RPCLitMethodMarshaller.java:558) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.getFaultResponse(JAXWSProxyHandler.java:626) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.createResponse(JAXWSProxyHandler.java:566) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:432) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:213) ~[org.apache.axis2.jar:?]
   at com.sun.proxy.$Proxy273.processRequest(Unknown Source) ~[?:?]
   at my.org.st05client.usms.St05Client.sendToPACES(St05Client.java:31) ~[classes/:?]
   at my.org.job.VendorUploadJob.sendXml(VendorUploadJob.java:154) ~[classes/:?]
   at my.org.job.VendorUploadJob.executeInternal(VendorUploadJob.java:122) ~[classes/:?]
   at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:111) ~[spring-context-support-4.0.0.RELEASE.jar:4.0.0.RELEASE]
   at org.quartz.core.JobRunShell.run(JobRunShell.java:223) ~[quartz-1.8.6.jar:?]
   ... 1 more
Caused by: java.net.ConnectException: Connection timed out: no further information
   at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:1.6.0]
   at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:614) ~[?:1.6.0]
   at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptConnectWork(WorkQueueManager.java:866) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.tcp.channel.impl.ConnectionManager.getConnection(ConnectionManager.java:185) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.tcp.channel.impl.TCPConnLink.connectCommon(TCPConnLink.java:252) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.tcp.channel.impl.TCPConnLink.connect(TCPConnLink.java:201) ~[?:CCX.CF [o1103.02]]
   at com.ibm.wsspi.channel.base.OutboundProtocolLink.connect(OutboundProtocolLink.java:87) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.http.channel.outbound.impl.HttpOutboundLink.connect(HttpOutboundLink.java:281) ~[com.ibm.ws.runtime.jar:?]
   at com.ibm.ws.channel.framework.impl.OutboundVirtualConnectionImpl.connect(OutboundVirtualConnectionImpl.java:79) ~[?:CCX.CF [o1103.02]]
   at com.ibm.ws.websvcs.transport.http.HTTPConnection.doConnect(HTTPConnection.java:484) ~[com.ibm.wsfp.main.jar:?]
   at com.ibm.ws.websvcs.transport.http.HTTPConnection.connect(HTTPConnection.java:199) ~[com.ibm.wsfp.main.jar:?]
   at com.ibm.ws.websvcs.transport.http.SOAPOverHTTPSender.setupHTTPConnection(SOAPOverHTTPSender.java:2146) ~[com.ibm.wsfp.main.jar:?]
   at com.ibm.ws.websvcs.transport.http.SOAPOverHTTPSender.<init>(SOAPOverHTTPSender.java:2087) ~[com.ibm.wsfp.main.jar:?]
   at com.ibm.ws.websvcs.transport.http.HTTPTransportSender.invoke(HTTPTransportSender.java:352) ~[com.ibm.wsfp.main.jar:?]
   at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:544) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.execute(AxisInvocationController.java:578) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.doInvoke(AxisInvocationController.java:127) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.core.controller.impl.InvocationControllerImpl.invoke(InvocationControllerImpl.java:93) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:419) ~[org.apache.axis2.jar:?]
   at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:213) ~[org.apache.axis2.jar:?]
   at com.sun.proxy.$Proxy273.processRequest(Unknown Source) ~[?:?]
   at my.org.st05client.usms.St05Client.sendToPACES(St05Client.java:31) ~[classes/:?]
   at my.org.job.VendorUploadJob.sendXml(VendorUploadJob.java:154) ~[classes/:?]
   at my.org.job.VendorUploadJob.executeInternal(VendorUploadJob.java:122) ~[classes/:?]
   at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:111) ~[spring-context-support-4.0.0.RELEASE.jar:4.0.0.RELEASE]
   at org.quartz.core.JobRunShell.run(JobRunShell.java:223) ~[quartz-1.8.6.jar:?]
   ... 1 more

1 个答案:

答案 0 :(得分:0)

最后,我们发现对旧服务的引用仍然在ibm web-bind xml中挥之不去,而在wsdl目录中的一些非常好奇的生成文件中,我们以前从未见过我们的事情是我们的事实。当旧的仍在项目中时生成了新的服务客户端。

我们试图调整问题的方式无济于事,最终选择了“焦土”。我们删除了任一客户端的每个跟踪并从头开始重新生成。这很有用。