【问题标题】:Domino limitation whith CXF web service?CXF Web 服务的 Domino 限制?
【发布时间】: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


【解决方案1】:

您是否检查过 Domino 服务器的“最大请求内容大小”和“最大 POST 数据”设置?默认值通常分别为 10MB 和无限制 (0),但可能已设置为更低。可以在服务器文档中找到这些设置,然后转到 Internet 协议 - Domino Web 引擎选项卡。检查值是什么并根据需要进行更新。如果更改设置,则需要重新启动 HTTP。

【讨论】:

  • 这不能解决此问题,因为此设置仅与 Web 服务提供商相关,但与客户端无关
猜你喜欢
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
相关资源
最近更新 更多