【问题标题】:JAX-WS 2.2 and JDK6 with maven带有 maven 的 JAX-WS 2.2 和 JDK6
【发布时间】:2012-09-28 17:19:03
【问题描述】:

我有一个网络服务,我正在使用Endpoint.publish("http://0.0.0.0:8080")

问题是JAX-WS 2.0 and 2.1 受到在执行endpoint.stop() 时抛出NullPointerException 的问题的影响。

问题已在 2.2 中修复,但在 pom.xml 中添加依赖项时,由于 java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String; 而发布失败,因为我使用的是 java 1.6

解决方法是在endorsed 文件夹中添加一些库。但我想把它全部打包到jar-with-dependencies。一个可执行的 java jar。

这么说,如果你能帮助我,我将不胜感激:

Publishing the endpoint in 2.0 or 2.1 listening to all addresses (0.0.0.0)

Configuring dependencies in maven to pack everything using 2.2.x 
but executable with JDK6

编辑:

需求是一个可交付的 jar。一个打包所有依赖项的 jar(到目前为止 2 个,大约 400k jar)。

但是,如果您认为使其工作的唯一方法是添加外部 shell 脚本,请也告诉我。

谢谢!

【问题讨论】:

    标签: java webserver jax-ws java-ws


    【解决方案1】:

    可执行的 jar 格式不允许 JAX-WS 替换所需的认可文件夹(Java WebStart 启动器显然也不支持)。

    您需要使用可以即时构建和执行new“java”命令的东西。从这里开始最好的方法是最有可能寻找可以直接运行程序而无需安装的安装程序。

    你到底需要做什么?


    编辑:由于要求是一个可运行的 jar,您根本无法使用 JAX-WS 2.2 执行此操作 使用您所针对的 Java 版本的最新版本中存在的 JAX-WS 找到解决方法。

    很高兴 JAX-WS 堆栈附带核心 Java 允许非常小的部署,但您无法轻松提供自己的痛苦。

    请注意,您可以提供自己的 Java 5,但是您需要带上自己的 Endpoint 实现。

    【讨论】:

    • 我需要能够停止端点,使用 2.2.x 打包我的应用程序并与 JDK 6 一起使用,或者以侦听所有地址 0.0.0.0 的方式发布端点。谢谢
    • 我并没有考虑 内部 程序,而是 installationwise。为什么需要一个可运行的 jar - foo.bat 文件不可以吗?
    • 谢谢,这正是我所怀疑的。问题是,我可以绑定到一个监听所有地址的地址(localhost、127.0.0.1、minimal reproducible example10.10.10.10)吗?
    • 使用 0.0.0.0 如您的问题所示。你可能会觉得 stackoverflow.com/q/11097189/53897 很有趣。
    • 设置为0.0.0.0时出现问题
    【解决方案2】:

    您需要使用 JAX-WS RI 吗?您可以改用 CXF,它是一个很好的 JAX-WS 实现,并且不会遇到与 RI 相同的冲突问题。

    编辑:您可以尝试使用 RI 生成类,但在部署中使用 CXF。毕竟 JAX-WS 是一个规范,所以它应该工作......

    【讨论】:

    • 我试过了,但是在生成 WS java 类时,CXF 留下了许多大于最大大小的块
    猜你喜欢
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    相关资源
    最近更新 更多