weblogic項目轉爲tomcat以後出現的問題

解決java - JAX-WS和版本衝突

itPublisher分享於2017-03-19

推薦:JWS,JAX-WS,JAX-RS,REST,Restlet,SOAP(JAVA Web Services技術)html

JWS,JAX-WS,JAX-RS,REST,Restlet,SOAP l JWS:是指與webservice相關的J2EE(其實如今應該叫作Java EE吧)技術叫作JWS(全稱就是java webservice)。沒錯,java

2018阿里雲所有產品優惠券(新購或升級均可以使用,強烈推薦)
領取地址https//promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode = hu9qh5ki&utm_source = hu9qh5kiweb

 

做爲測試項目,我使用wsdl和jax-ws建立了一個很是簡單的WebService。若是客戶端在GlassFish中部署爲Web應用程序可是若是我直接在Eclipse中啓動相同的(WebService-)代碼,則會運行得很好,我收到如下錯誤:api

WARNUNG: Input Action on WSDL operation AddNumbers and @Action on its associated Web Method addNumbers did not match and will cause problems in dispatching the requests Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/ha/store/api/BackingStoreException at com.sun.xml.ws.rx.mc.runtime.McConfigurationFactory.createInstance(McConfigurationFactory.java:66) at com.sun.xml.ws.rx.mc.runtime.McTubeFactory.createTube(McTubeFactory.java:68) at com.sun.xml.ws.assembler.TubeCreator.createTube(TubeCreator.java:84) at com.sun.xml.ws.assembler.TubelineAssemblerFactoryImpl$MetroTubelineAssembler.createClient(TubelineAssemblerFactoryImpl.java:130) at com.sun.xml.ws.client.Stub.createPipeline(Stub.java:228) at com.sun.xml.ws.client.Stub.<init>(Stub.java:205) at com.sun.xml.ws.client.Stub.<init>(Stub.java:178) at com.sun.xml.ws.client.sei.SEIStub.<init>(SEIStub.java:85) at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:608) at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:348) at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:330) at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:312) at javax.xml.ws.Service.getPort(Service.java:134) at mnm.namedesdienstes.webservice.service.NameDesDienstesService.getNameDesDienstesPortTypePort(NameDesDienstesService.java:56) at webserviceClient.NameDesDienstesClient.myTest(NameDesDienstesClient.java:12) at webserviceClient.NameDesDienstesClient.main(NameDesDienstesClient.java:25) Caused by: java.lang.ClassNotFoundException: org.glassfish.ha.store.api.BackingStoreException at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 16 more 

通過一些研究後,我發現它必須與某些庫文件的不一樣版本有關。因此如今個人問題是,如何「修復」個人eclipse java執行來正確運行個人webservice客戶端?我找到了一些技巧,將一些jar複製到一個endorsed目錄,可是哪一個jar到哪一個目錄:-)tomcat

我正在使用Max OS 10.6.8,Eclipse Project使用JVM 1.6。個人Mac Java版本是ruby

xmacbook:~ cstraube$ java -version java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode) 

更新:個人第一次嘗試(感謝remipod的連接)我執行了如下步驟:服務器

  1. 獲取承認的lirbaries目錄 System.out.println(System.getProperty("java.endorsed.dirs"));
  2. 接下來,我將兩個文件JAXWS2.1.7-20090419.jar和JAXB2_20080513.jar(兩個版本2.1.7)複製到此目錄中
  3. 不幸的是,我仍然遇到一樣的錯誤
java  eclipse  web-services 
 | 
  這個問題
  編輯於2011年9 月28日9:22詢問2011年9月28日9:05 strauberry 2,800 3 23 45從這個文件建立你本身的BackupStoreException: svn-mirror.glassfish.org/glassfish-svn/trunk/api/ha -api / src / ...爲我工做。-  Karl Geerts 2011年11月8日9:28

 | 

答案
4

在tomcat 7中部署Web服務(JAX-WS)時,我遇到了相似的問題。能夠在ha-api.jar中找到缺乏的類定義。 

org/glassfish/ha/store/api/BackingStoreException eclipse

您應該將ha-api.jar(來自JAX-WS發行版)添加到服務器lib中。對於個人狀況,eclipse運行tomcat 7,因此位置是(Tomcat 7.0 \ lib)。ide



  這個答案
回答於2013年5月14日15:33 indrap 520 2 8 17

 |   解決方法

您必須將jaxws-api.jar和jaxb-api.jar 擬合版本複製到目錄/ Library / Java / Home / lib / endorsed(Mac)中。svn



  這個答案
 編輯 2012年5月8日22:32 扎克湯普森 9,900 30 48回答11年8月8日在7:39 strauberry2,800 3 23 45您可能須要添加ha-api.jar(記住版本),由於這爲我修好了。-  Continuity82015年3月4日9:04


 | 

看看這個連接JAX WS與WS 2.1.1您須要優先使用jre 1.6提供的jaxws版本的jaxws。

編輯: Glassfish已經包含了一些庫,以及java 6.我必須在glassfish 3.1 / 3.1.1和java 6/7中跟蹤與jaxws的版本衝突。您能夠檢查eclipse用於啓動應用程序的確切java運行時和在有效的類路徑上查找重複的jar。

承認機制只是提供了一種簡單且容易出錯的方式來覆蓋包含的jaxws分發。容易出錯,由於你的同事會遇到一樣的問題。

 

推薦:爲何我在eclipse中新建一個java web項目的時候多出了幾個文件(Jax-Ws-Web Services等等)我原先的項

如截圖所示,多是由於選擇的視圖爲JAVAEE因此就會出現下面的狀況視圖切換java沒有計算原項目面搞web服務只須要打開Java視圖便可窗口菜單---> Open Per

 

我沒有在jaxws的上下文中看到異常org.glassfish.ha.store.api.BackingStoreException。您的版本衝突可能由另外一個庫建立,而不是jaxws ...



  這個答案
 編輯於2011年9月28日9:50回答2011年9月28日9:09 remipod 5,983 1 15 21謝謝你的回答!我已經更新了個人問題...... -  斯特勞貝里2011年 9月28日9:23


 | 

我經歷了徹底相同的例外

org.glassfish.ha.store.api.BackingStoreException

在確保個人JAX-WS和JAX-B罐子都是相同版本後,問題仍然存在。

修復:而後我添加ha-api.jar到WEB-INF \ lib目錄,這解決了這個問題。

這裏的線索是異常類路徑中的「ha」包,如上所示。但願這能夠幫助!



  這個答案
回答於2015年3月4日9:03 Continuity8 456 1 4 25


 | 

 

推薦:在Tomcat上部署JAX-WS Web服務

這是一個嚮導,向您展現如何在Tomcat servlet容器上部署JAX-WS Web服務。請參閱如下Web服務部署的摘要步驟。

轉自:http://www.itkeyword.com/doc/3025270947233508x404/jax-ws-and-version-conflicts
相關文章
相關標籤/搜索