2

当我将 (Win64) 服务器从 8.5.3FP2 升级到 FP3 时,我的Domino Web 服务提供程序坏了。我在XPage 论坛上写了一些关于它的信息。

我不想使用基于 Axis 的遗留东西,而是使用 Java 1.6 附带的 JAX WS。我决定尝试这个非常简单的例子。我将代码复制粘贴到我的 Designer Eclipse 上的 Java 项目中,运行它,Web 服务在我的本地机器上启动并运行:它响应并返回 WSDL。

接下来,我将代码作为代码/Java 元素复制粘贴到服务器上的 NSF 并更改:

public static void main(String[] args)

public HelloWorldPublisher()

并在 XPage 中从 SSJS 调用此构造函数。我收到了这个错误:

线程“主”com.sun.xml.internal.ws.model.RuntimeModelerException 中的异常:必须在没有包的类上指定 @WebService.targetNamespace。类:HelloWorldImpl

这些类在包中。我也在 Domino 服务器 JVM 上使用命令行运行它并得到了同样的错误。谷歌搜索后我添加了这个

@WebService(targetNamespace="http://mycompany.net/dev/ph")

HelloWorld

@WebService(endpointInterface="com.mkyong.ws.HelloWorld", targetNamespace="http://mycompany.net/dev/ph", portName="HelloWorldPort", name="HelloWorld", serviceName="HelloWorldService")

到NSF中的HelloWorldImpl并运行它。之后,Web 服务似乎已启动并正在运行!

接下来我启动了服务器,因为它很慢,之后我没有看到 WSDL!我已经多次运行代码,重新启动 HTTP 并尝试删除@WebService属性。我还尝试再次在服务器上使用命令行运行代码,但这总是给我上面的@WebService.targetNamespace错误,我不知道为什么。

现在我总是得到这个到 Domino 控制台:

java.lang.NoClassDefFoundError: com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory(初始化失败) 在 java.lang.J9VMInternals.initialize(J9VMInternals.java:140) 在 com.sun.xml.internal.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:266) 在 com.sun.xml.internal.ws.transport .http.HttpAdapter.publishWSDL(HttpAdapter.java:538) 在 com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:230) 在 com.sun.xml.internal.ws.transport .http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:107) 在 com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:92) 在 com.sun.net.httpserver .Filter$Chain.doFilter(Filter.java:77) at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:77) at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80 ) 在 sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:569) 在 com.sun.net.httpserver。Filter$Chain.doFilter(Filter.java:77) at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:541) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919) 在 java.lang.Thread.run(Thread.java:738)

在服务器上访问此 URL 时:

http://localhost:9999/ws/hello?wsdl

我对 Domino 日志中的任何内容感到有些惊讶,因为我认为这使用了 JVM http 服务器。我不明白为什么它首先起作用,现在它找不到这个类。

如何将 JAX WS 端点发布到 Domino 服务器?

编辑

我从这里下载了 JAX WS jars:

http://jax-ws.java.net/

并将它们放在\jvm\lib\ext文件夹中。WSDL URL 又开始工作了!端点 URL 现在也有一些信息。我不知道为什么我必须这样做,因为该功能应该包含在 JVM 1.6 中。接下来我将尝试在端点代码中使用 Domino 对象。

是否可以让 JAX WS 使用 Domino http 服务器?

谢谢,

  • 帕努
4

1 回答 1

1

JAX-WS 已经包含在 Notes/Domino 中。我怀疑当您在开发过程中往返时,您的服务器中可能引入了一些不稳定因素。

自 8.5.3 和 9.0 以来,我已经在 XPages 应用程序 c/w SSJS 和自定义 Java 访问中创建了自定义提供程序和消费者,没有问题。

你现在的问题过去了吗?(如果是这样,你能相应地结束这个问题吗:-)

于 2013-03-21T20:38:59.387 回答