我得到的错误是在一些论坛帖子中,但所有场景似乎与我的略有不同。
我正在编写一个JAX-WS Web服务客户端,以便与使用基本身份验证(仅限http级别)的基于SOAP的Web服务进行通信。我在wsdl上使用wsimport生成了客户端。
我可以使用两种版本的网络服务进行测试:
网络服务的作用:
我验证了以下内容:
失败的原因:
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,瞧...问题解决了。希望有一天能帮助其他人。