Jboss Web服务:错误:java.io.IOException:无法传输消息

时间:2010-01-06 16:14:09

标签: java web-services netbeans jboss

您好我正在尝试在Jboss 4.2.3GA中部署Web服务客户端应用程序。我已经这样做了,它适用于glassfish v2.x.我复制了jboss-saaj.jar,jboss-jaxws-ext.jar,jboss-jaxws.jar,jboss-jaxrpc.jar和jaxb-api.jar。有人可以提供一些信息吗?

我也在netbeans 6.7中部署了它。

# Caused by: java.io.IOException: Could not transmit message  
# at org.jboss.ws.core.client.RemotingConnectionImpl.invoke(RemotingConnectionImpl.java:204)  
# at org.jboss.ws.core.client.SOAPRemotingConnection.invoke(SOAPRemotingConnection.java:77)  
# at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:337)  
# at org.jboss.ws.core.jaxrpc.client.CallImpl.invokeInternal(CallImpl.java:517)  
# ... 4 more  
# Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker.  
# at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:333)  
# at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:135)  
# at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)  
# at org.jboss.remoting.Client.invoke(Client.java:1634)  
# at org.jboss.remoting.Client.invoke(Client.java:548)  
# at org.jboss.ws.core.client.RemotingConnectionImpl.invoke(RemotingConnectionImpl.java:183)  
# ... 7 more  
# Caused by: org.jboss.ws.WSException: Invalid HTTP server response [404] - Not Found  
# at org.jboss.ws.core.soap.SOAPMessageUnMarshaller.read(SOAPMessageUnMarshaller.java:77)  
# at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:473)  
# at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:305)  
# ... 12 more  

我尝试使用版本4.2.2 GA将jboss-saaj.jar和jboss-jaxrpc.jar复制到/ lib / endorsement并且它可以工作。但是我也尝试使用5.1.0GA版本,它在那里不起作用。

为了简单起见,这是我想要帮助的。如果有人在jboss中部署了Web服务并且不得不将jar复制到某些文件夹,请告诉我你做了什么?如果您使用的是4.3.3GA或5.1.0GA,我更愿意。谢谢你的阅读。

2 个答案:

答案 0 :(得分:2)

您还可以在

为您的实例配置 chunksize
  

SERVER_HOME / SERVER_PROFILE /部署者/ jbossws.deployer / META-INF /标准JAXWS客户端-config.xml中

更改

<property-value>2048</property-value>

<property-value>0</property-value>

属性

    <client-config>
        <config-name>Standard Client</config-name>
        <feature>http://org.jboss.ws/dispatch/validate</feature>
        <property>
           <property-name>http://org.jboss.ws/http#chunksize</property-name>
        </property>
    </client-config>

有关详细信息,请参阅http://community.jboss.org/wiki/Workaroundwhenchunkedencodingisnotsupported

答案 1 :(得分:1)

我在JBoss 5.0.1上也遇到了这个问题。我已经将jbossws - * .jars复制到了lib中,并且我在运行junits时引用它并且它工作正常。但是,当我在运行的JBoss AS中使用我的客户端时,我得到了这个:引起:org.jboss.ws.WSException:无效的HTTP服务器响应[404] - 未找到但我已经三次检查我已配置的服务端点是的,我可以在浏览器中找到它,soapUI可以点击它,我的单元测试使用相同的客户端可以调用它。

经过大量研究后,我发现JBoss(和JBossWS)可能在JBossWS 3.0.x版本(可能还有其他版本)中存在一些错误。这可能是由于您使用的JAX-WS版本和您的调用服务器的组合引起的。在我的情况下,服务器不支持分块的HTTP请求,JBoss WS有一些处理它的错误。这是我需要在实际请求之前添加的代码:

    // HACK: This is a hack for disabling chunked encoding. .NET server run by service host does nto seem to support chunked encoding. 
    //Jboss WS version 3.0.5 has multiple bugs disallowing the setting of either a new client type or disabling chunking. 
    //So, we are resporting to this hack here.
    // This essentially sets the chunck size to 0 forcing the Webservice client to not chunk requests and not expect responses to be chunked (effectively HTTP 1.0 mode)

    //      ((StubExt) port).setConfigName("HTTP 1.0 Client"); // does not work in Jboss WS 3.0.5

    EndpointMetaData endpointMetaData = ((StubExt) serviceEndPoint).getEndpointMetaData();
    CommonConfig commonConfig = endpointMetaData.getConfig();
    boolean hacked = false;
    try {
        if (commonConfig.getProperties() != null){
            Iterator<EndpointProperty> iter = commonConfig.getProperties().iterator();
            while (iter.hasNext()){
                EndpointProperty p = iter.next();
                if (p.name.equals(new URI(EndpointProperty.CHUNKED_ENCODING_SIZE))){
                    p.value = "0";
                    hacked = true;
                    log.info("Chunking set to 0 since service host does not support chunked requests");
                }

            }
        }
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

    if (!hacked)commonConfig.addProperty(EndpointProperty.CHUNKED_ENCODING_SIZE, "0");
    // END HACK