带有maven的JAX-WS 2.2和JDK6

时间:2012-09-27 22:32:01

标签: java webserver jax-ws java-ws

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

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

此问题已在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脚本,请告诉我。

谢谢!

2 个答案:

答案 0 :(得分:2)

可执行jar格式不允许更换JAX-WS所需的已签名文件夹(显然Java WebStart启动器也没有)。

您需要使用可以动态构建和执行 new “java”命令的内容。从这里开始的最佳方式是最有可能找到一个可以直接运行程序而无需安装的安装程序。

你到底需要做什么?


编辑:由于需求是一个可运行的jar,你根本无法用JAX-WS做到这一点2.2找到你正在使用的Java版本的最新版本中存在的JAX-WS的解决方法。

非常好的是,带有核心Java的JAX-WS堆栈允许进行非常小的部署,但是你无法轻易提供自己的痛苦。

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

答案 1 :(得分:0)

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

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