簡體   English   中英

使用Java6從Tomcat6調用JAX-WS RI 2.2服務

[英]Calling a JAX-WS RI 2.2 service from Tomcat6 with java6

我正在嘗試使用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 ,例如,在這里(#問題3):

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

其他人在這里談論jaxb-api-2.2.jarjaxws-api.jar

灰熊-java.lang.NoSuchMethodError:javax.xml.ws.WebFault.messageName

我已經下載了所有三個文件,並將它們放在兩個目錄中(在JAVA_HOME和TOMCAT_HOME內部)。

我的問題:

·從NetBeans或從命令行運行.jar的獨立Java6應用程序訪問此服務都沒有問題,僅從Tomcat失敗。 因此,我不確定上述問題是否是造成我問題的原因。 因為,它也不應該在命令行中失敗嗎?

·我無法測試上述解決方案,因為Tomcat似乎不知道“認可”目錄。 當我在獨立應用程序中運行此命令時:

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認可目錄位於何處? 您是否認為我的問題可能與上述問題不同,因為它可以在獨立應用程序中工作?

因此,解決方案:

您是否認為我的問題可能與上述問題不同,因為它可以在獨立應用程序中工作?

不,那正是問題所在。

如何告訴Tomcat認可目錄位於何處?

似乎在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....]"

我認為這還沒有很好地記錄在案的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM