WstxEOFException:仅在JBoss上的Prolog中出现意外的EOF

时间:2015-04-03 17:56:48

标签: java web-services soap jboss http-basic-authentication

我得到的错误是在一些论坛帖子中,但所有场景似乎与我的略有不同。

我正在编写一个JAX-WS Web服务客户端,以便与使用基本身份验证(仅限http级别)的基于SOAP的Web服务进行通信。我在wsdl上使用wsimport生成了客户端。

我可以使用两种版本的网络服务进行测试:

  • 端口8080 - 无身份验证
  • 端口80 - 需要基本的http级别身份验证

网络服务的作用:

  • 这只是一个简单的Web服务,它允许我将base64编码的xml有效负载发送到它。

我验证了以下内容:

  • 我可以使用我的localhost
  • 中的SOAPUI正确发送两个Web服务(80/8080)
  • 我可以使用来自localhost的测试JAVA应用程序正确发送这两个Web服务

失败的原因:

  • 当我尝试在jboss5.1上将我的Web服务客户端部署为.war时...只有端口8080 Web服务正常工作。当我在端口80上尝试Web服务时,我收到此错误。

10:36:51,467 ERROR [CommonClient]在执行调用时(准备)捕获异常: javax.xml.ws.soap.SOAPFaultException:com.ctc.wstx.exc.WstxEOFException:prolog中出现意外的EOF  在[row,col {unknown-source}]:[1,0]     at org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.getSOAPFaultException(SOAPFaultHelperJAXWS.java:84)     在org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS.throwFaultException(SOAP11BindingJAXWS.java:107)

我的测试客户端的核心代码:

        Service service = Service.create(url, qname);   
        ImportLoan port = service.getPort(ImportLoan.class);
        BindingProvider bp = (BindingProvider) port;
        bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY,  properties.getProperty("username"));
        bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY,  properties.getProperty("password"));
        ImportLoanRequestType requestType = new ImportLoanRequestType();
        requestType.setData(strEncodedPayload);
        ImportLoanResponseType responseType = port.importLoanApp(requestType);

我希望

我只需要一些想法来分类。我假设我收到了一些无法正确解析的无效SOAP响应。我发现奇怪的是它只发生在从JBoss(我的应用服务器)发送服务时,所以它必须是我的结果。 SOAPUI工作正常。在独立的test.java文件中编写的完全相同的代码也可以正常工作。

更新......晚上晚些时候 当然,我会在发布问题的同一天找到答案。我看了http流量并意识到HTTP500错误响应(带有soap eof prolog错误)在发送一半数据后回来了。显然JBoss会对数据进行分块。这对8080服务运行良好,但端口80服务由于某种原因不支持分块。我认为这是一个身份验证错误,但似乎是Web服务不支持分块。我在我的服务器上修改了standard-jaxws-client-config.xml(jbossws.deployer / META-INF文件夹)。将块大小从2048设置为0,瞧...问题解决了。希望有一天能帮助其他人。

0 个答案:

没有答案