java - 使用 java6 从 Tomcat6 调用 JAX-WS RI 2.2 服务

标签 java web-services tomcat jax-ws

我正在尝试使用 Java6 从 Tomcat6 访问 JAX-WS 2.2 服务。对于我所研究的内容,这存在一个问题,因为 Java 会首先尝试使用它的一些默认 javax.xml.ws 库,这些库没有 WebFault.messageName 方法。所以它失败并出现此错误:

GRAVE: javax.xml.ws.WebFault.messageName()Ljava/lang/String;
java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String;
at com.sun.xml.ws.model.RuntimeModeler.processExceptions(RuntimeModeler.java:1162)
...

解决方案似乎是在 JAVA_HOME/jre/lib/(或 TOMCAT_HOME)中创建一个“认可的”目录,并将所需的库放在那里。

但是,有人说需要的库是webservices-api.jar,例如这里(#Issue 3):

https://www.fromdev.com/2010/01/trying-to-run-jax-ws-sample-application.html

其他人谈论jaxb-api-2.2.jarjaxws-api.jar,例如这里:

Grizzly - java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName

我已经下载了所有三个并将它们放在两个目录中(在 JAVA_HOME 和 TOMCAT_HOME 内)。

我的问题:

· 无论是从 Netbeans 还是从命令行运行 .jar,我都可以从独立的 java6 应用程序访问此服务,它仅从 Tomcat 失败。所以我不确定上述是否是我的问题的原因。因为,它不应该也从命令行失败吗?

· 我无法测试上述解决方案,因为 Tomcat 似乎不知道“endorsed”目录。当我在独立应用程序中运行它时:

System.out.println(System.getProperty("java.endorsed.dirs"));

它打印:

/usr/lib/jvm/jdk1.6.0_45/jre/lib/endorsed

但是,Tomcat 会打印一个空行。

我已经尝试用这个修改 tomcat6.conf(当然还要重新启动):

JAVA_OPTS="-Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -Djava.awt .headless=true -Xms1024m -Xmx1024m -XX:PermSize=1024m -XX:MaxPermSize=1024m"

但它似乎仍然不知道该属性。

那么,如何告诉Tomcat endorsed 目录位于何处呢?您是否认为我的问题可能不同于所述问题,因为它是在独立应用程序中运行的?

最佳答案

所以,解决方案:

Do you think that my problem can be another than the stated, as it works from a standalone application?

不,这正是问题所在。

how can I tell Tomcat where the endorsed directory is located?

似乎在tomcat6.conf中设置了这个选项:

-Djava.endorsed.dirs=/usr/share/tomcat6/endorsed

还不够。需要创建一个名为 JAVA_ENDORSED_DIRS 的变量。所以在tomcat6.conf中需要这两行:

JAVA_ENDORSED_DIRS="/usr/share/tomcat6/endorsed"
JAVA_OPTS="-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS [-Djava....]"

我认为没有很好记录的问题。

关于java - 使用 java6 从 Tomcat6 调用 JAX-WS RI 2.2 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51063548/

相关文章:

java - 从编辑文本检索地名到字符串时,来自地理编码器类的 NullPointerException

java - 如何在 selenium webdriver 中处理 Javascript 警报/弹出窗口

java - Spring配置Web服务: get XsdSchema from wsdl

Java 文本抗锯齿 : how to debug when not working?

java - 插入的条目不会永久保留在数据库中

python - 从 Web 运行 Python 脚本

适用于 Android 的 Java REST 客户端 API

java - 错误 : Server Tomcat v7. 0 localhost 上的服务器无法启动。在部署 Spring-MVC 项目期间

java - 本地主机上的 Apache Tomcat websockets 实现

java - 如何解析命名空间文件位置