首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SOAP请求在Web Logic中返回EOFException

SOAP请求在Web Logic中返回EOFException
EN

Stack Overflow用户
提问于 2015-12-15 22:41:19
回答 1查看 1.5K关注 0票数 0

我正在使用HTTPS上的Web Logic测试SOAP请求。我已经从WSDL创建了所需的类(使用wsimport)。我已经启用了SSL调试,看起来会话是在握手过程之后建立的。但是,在那之后,我得到了一个EOFException。同样的服务在另一个端口的HTTP中运行得很好,访问这个端口没有任何问题。

代码语言:javascript
复制
***
%% Cached client session: [Session-8, TLS_RSA_WITH_AES_128_CBC_SHA]
[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)', WRITE: TLSv1 Application Data, length = 405
[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)', WRITE: TLSv1 Application Data, length = 1
[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)', WRITE: TLSv1 Application Data, length = 1573
javax.xml.ws.WebServiceException: java.io.EOFException: Response contained no data
        at com.sun.xml.ws.transport.http.client.HttpClientTransport.readResponseCodeAndMessage(HttpClientTransport.java:221)
        at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:204)
        at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:124)
        at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:118)
        at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:866)
        at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:815)
        at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:778)
        at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:680)
        at com.sun.xml.ws.client.Stub.process(Stub.java:272)
        at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:153)
        at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:115)
        at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:95)
        at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:136)
        at com.sun.proxy.$Proxy194.postEWOOrder(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)

客户端代码

代码语言:javascript
复制
// These two classes are WSDL -> java generated class
EWOProviderWSEWOWsdl ewoProvider = new EWOProviderWSEWOWsdl();
EWOWsdlPortType servicePort = ewoProvider.getEWOProviderWSEWOWsdlPort();

BindingProvider bindingProvider = (BindingProvider) servicePort;
Map<String, Object> requestContext = bindingProvider
            .getRequestContext();

// Target End Point URL is set in the context here
requestContext
        .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
                    "https://MY Url where WSDL is deployed");

// Timeouts in milliseconds
requestContext.put("com.sun.xml.internal.ws.request.timeout", "25000");
requestContext.put("com.sun.xml.internal.ws.connect.timeout", "15000");

// Credentials are set in over here
Map<String, List<String>> headers = new HashMap<String, List<String>>();
headers.put("Username", Collections.singletonList("UserName"));
headers.put("Password", Collections.singletonList("Password"));
requestContext.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
System.setProperty("proxySet", "true");
System.setProperty("proxyPort", "80");
System.setProperty("proxyHost", "myproxy_host");

JAXBElement<EWOOrders> ewoOrders = generateWSRequestObject();

String generatedXml = generateXmlRequestForProgistix(ewoOrders);
System.out.println("XML >> " + generatedXml);

DocTypeRefStatusMessageResponse responseMessage = servicePort
    .postEWOOrder(ewoOrders.getValue());

经过长时间的搜索,我在这里找到了一些东西,但不确定如何才能做到这一点,因为我的代码主要是由wsimport生成的,我只是通过wsimport访问服务。看看我所说的链接,

代码语言:javascript
复制
http://deepakmodi2006.blogspot.ca/2011/05/how-to-fix-javaioeofexception-response.html
EN

回答 1

Stack Overflow用户

发布于 2015-12-30 03:35:32

我们从一个独立的客户端执行此操作,以再现实际发生的情况,并发现由于我们的代理返回的异常,内部有5次向发送的试用请求迭代。

5警告/异常,如下所述:

< 2015年12月18日上午9:18:30 EST> secure-test.myserver.com不受信任,导致EST>握手失败。检查证书链以确定是否应该信任它。如果它应该是受信任的,则更新客户端受信任的CA配置以信任签署了对等证书链的CA证书。如果要连接到使用演示证书的WLS服务器(默认的WLS服务器行为),并且希望此客户端信任演示证书,请在命令行上为此client.>指定-Dweblogic.security.TrustKeyStore=DemoTrust

最后,客户端应用程序只抛出一个异常,即EOF异常。

原因是我们的代理不信任这种通信。在安全团队将服务器证书安装到它的代理/证书存储中之后,这个问题就解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34292026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档