我正在尝试在jboss上的web应用程序中使用Web服务。 Web服务WSDL:https://uk.ws.ondemand.qas.com/ProOnDemand/V3/ProOnDemandService.asmx?WSDL
首先我创建了一个独立的runnable类: 我使用wsimport创建了存根方法,然后使用虚拟代码执行简单查询:
public static void main( String[] args )
{
try {
QASOnDemandIntermediary service = new QASOnDemandIntermediary();
QAQueryHeader qaQueryHeader = new QAQueryHeader();
QAAuthentication authenticationInfo = new QAAuthentication();
authenticationInfo.setUsername(USERNAME);
authenticationInfo.setPassword(PASSWORD);
qaQueryHeader.setQAAuthentication(authenticationInfo);
QAPortType port = service.getQAPortType();
QACanSearch body = new QACanSearch();
body.setCountry("GBR");
EngineType engineType = new EngineType();
engineType.setValue(EngineEnumType.SINGLELINE);
body.setEngine(engineType);
QASearchOk result = port.doCanSearch(body, qaQueryHeader, new Holder<QAInformation>());
System.out.println("Webservice call result: " + result.isIsOk());
} catch(Exception e) {
e.printStackTrace();
}
}
这完全没问题=它很快,正在通过并返回正确的响应。
在此测试之后,我将代码复制到servlet方法。 构建和部署war并调用servlet方法(来自浏览器) 不幸的是,它无法连接到有错误的Web服务:
javax.xml.ws.WebServiceException: Could not send Message.
...
javax.xml.ws.WebServiceException: Could not send Message.
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
com.sun.proxy.$Proxy66.doCanSearch(Unknown Source)
...
java.net.ConnectException: ConnectException invoking https://ws.ondemand.qas.com/ProOnDemand/V3/ProOnDemandService.asmx: Connection refused: connect
sun.reflect.GeneratedConstructorAccessor26.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1453)
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1438)
...
java.net.ConnectException: Connection refused: connect
java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
java.net.AbstractPlainSocketImpl.connect(Unknown Source)
java.net.PlainSocketImpl.connect(Unknown Source)
java.net.Socket.connect(Unknown Source)
JDK:7u45
的Jboss:7.1.3-redhat4
服务证书由我的计算机上安装的信任CA签名
我可以使用apache httpclient从Jboss下载WSDL(因此它不是防火墙问题)
你能帮我搞定吗?
答案 0 :(得分:0)
可能是您的代理限制连接。 您可以通过添加以下代码来绕过代理。
//proxy setting
System.setProperty("proxySet", "true");
System.setProperty("proxyHost", "proxy_ip");
System.setProperty("proxyPort", "proxy_port");