在Jboss 7.1.3上运行JAX-WS客户端

时间:2014-01-09 17:31:39

标签: jax-ws jboss7.x

我正在尝试在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(因此它不是防火墙问题)

你能帮我搞定吗?

1 个答案:

答案 0 :(得分:0)

可能是您的代理限制连接。 您可以通过添加以下代码来绕过代理。

//proxy setting
System.setProperty("proxySet", "true");
System.setProperty("proxyHost", "proxy_ip");
System.setProperty("proxyPort", "proxy_port");