【发布时间】:2017-06-01 19:50:47
【问题描述】:
我正在开发的一个 xpages 应用程序使用一个 Web 服务,该服务存储附加到存储库中的 xpages 的文件。为此,我调用了一个用 Java 开发的代理,其使用 Web 服务的客户端是从框架 APACHE CXF 创建的。 存储库中存储最大 2.5 MB 的文件没有问题,但是 Web 服务提供的较大文件会出现以下错误。我通过 Eclipse 使用 Web 服务执行了相同的过程,并且对于大于 2.5 MB 的文件没有发生错误。有谁知道问题是否与某些 Domino 服务器配置有关?会不会是 Domino 服务器与存储库所在服务器之间的通信问题?有没有人遇到过类似的问题?
Java.io.IOException: 写入服务器时出错
HTTP JVM: javax.xml.ws.WebServiceException: java.io.IOException: Error
writing to server
HTTP JVM: at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.readResponseCodeAndMessage(HttpClientTransport.java:213)
HTTP JVM: at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:163)
HTTP JVM: at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:95)
HTTP JVM: at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:117)
HTTP JVM: at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:599)
HTTP JVM: at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:558)
HTTP JVM: at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:543)
HTTP JVM: at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:440)
HTTP JVM: at com.sun.xml.internal.ws.client.Stub.process(Stub.java:223)
HTTP JVM: at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:136)
HTTP JVM: at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:110)
HTTP JVM: at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:90)
HTTP JVM: at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:119)
HTTP JVM: at com.sun.proxy.$Proxy30.incluirDossie(Unknown Source)
HTTP JVM: at JavaAgent.NotesMain(Unknown Source)
HTTP JVM: at lotus.domino.AgentBase.runNotes(Unknown Source)
HTTP JVM: at lotus.domino.NotesThread.run(Unknown Source)
HTTP JVM: Caused by:
HTTP JVM: java.io.IOException: Error writing to server
HTTP JVM: at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:594)
HTTP JVM: at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:606)
HTTP JVM: at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1228)
HTTP JVM: at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:390)
HTTP JVM: at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.readResponseCodeAndMessage(HttpClientTransport.java:210)
HTTP JVM: ... 16 more
【问题讨论】:
-
我在 java 代理中的 domino 上使用 jax-ws 开发了一些 Web 服务客户端。我从来没有遇到过这样的问题,并且传输的文件大于 2.5MB。根据我的经验,我无法想象多米诺服务器上的配置会导致该问题。您能否提供完整的堆栈跟踪,而不仅仅是最终消息?
-
我将堆栈跟踪放在问题中
-
堆栈跟踪看起来您在运行时没有使用 apache cxf。看起来您使用的是 jvm 集成的 jax-ws 客户端。您是否将 apache cxf 库附加到代理或将它们放入 jvm/lib/ext?如果将库附加到代理,您应该知道附加库存在内存泄漏 (www-01.ibm.com/support/docview.wss?uid=swg1LO49880)。最好的方法是通过 notes.ini var JavaUserClasses 或 JavaUserClassesExt 添加它们。
-
我没有apache cfx库,也没有附在代理上,也没有在jvm/lib/ext目录下。这些图书馆会是什么?你能列出来吗?
-
正如我所说,我没有使用 Apache CXF 实现我的 Web 服务,因此我不知道 Apache CXF 运行时需要哪些库。我使用 JAXB 和 maven jaxws-maven-plugin 来生成 Web 服务客户端,它们在代理中的 Domino 上运行良好。但我无法为您使用 Apache CXF 生成的代码提供解决方案。如果您使用 Java 6 中捆绑的 jax-ws,也许您不需要任何库。但是,您应该记住,jax-ws 的版本是 2.0 而不是 2.2,并且您在 eclipse 中的测试也使用Java 6 SE JRE。希望你能找到解决办法!
标签: web-services web cxf lotus-domino