推荐: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的连接)我执行了如下步骤:服务器
System.out.println(System.getProperty("java.endorsed.dirs"));
在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
您必须将jaxws-api.jar和jaxb-api.jar 的拟合版本复制到目录/ Library / Java / Home / lib / endorsed(Mac)中。svn
看看这个连接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 ...
我经历了彻底相同的例外
org.glassfish.ha.store.api.BackingStoreException
在确保个人JAX-WS和JAX-B罐子都是相同版本后,问题仍然存在。
修复:而后我添加ha-api.jar
到WEB-INF \ lib目录,这解决了这个问题。
这里的线索是异常类路径中的“ha”包,如上所示。但愿这能够帮助!
这是一个向导,向您展现如何在Tomcat servlet容器上部署JAX-WS Web服务。请参阅如下Web服务部署的摘要步骤。铬