您的位置:首页 > 编程语言 > Java开发

myeclipse2014创建webservice从0开始,跳过一个个的坑

2017-12-10 13:57 876 查看
1. 创建一个webservice project:





2.新建一个主类:



3.生成新的webservice(此部会生成delegate文件),发布WS:







这一步如果不勾选,Generte WSDL,则相应的Webroot下面会缺失如下内容,导致部署tomcat出错



4.因为本地测试,配置tomcat相关:





5.启动Tomcat



6.将webservice 部署到Tomcat上,此部可能会出现各种报错,我遇到的有三个,具体问题具体分析,后面会详细说明。



7.webservice调用,首先我们需要知道生成webservice的地址:



可以在如上所示的地方找到webservice地址,复制到浏览器中会找到wsdl地址,如下:






下面开始调用该webservice,选中其他工程(其他工程也可以是webservice工程,可以实现循环调用),新建








8.写调用代码,如下:



测试完成。大功告成!!!!!

9.最后要要说三个心血大坑:

三个大坑,webservice部署tomcat的时候报的错三个错。

第一个坑:报错如下:

Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:495)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:477)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:113)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5026)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5633)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1015)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:991)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1296)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2038)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


这个花了两天时间解决了,网上有说工程需要增加myeclipse的引用的JAX-WS的jar包( JAX-WS 2.1 API Libraries和JAX-WS 2.1 Runtime Libraries),实际上myclipse的可导入的只有



并且引用该jar包,问题并未得到解决。还是会报如上报错。时间解决思路如下:下载JAX-WS所有引用包,并放到tomcat的lib(E:\apache-tomcat-7.0.82-windows-x86\apache-tomcat-7.0.82\lib)中,如下:



放入这些引用jar包后,问题得以解决,并且其实一开始引用的jar包实际不需要引用,也可以完成部署。

第二个坑:.部署的时候报如下错:

WSSERVLET11: 无法解析运行时描述符: com.sun.xml.ws.util.ServiceConfigurationError: com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtension: Provider com.sun.xml.ws.policy.jaxws.PolicyWSDLGeneratorExtension is specified in jar:file:/E:/apache-tomcat-7.0.82-windows-x86/apache-tomcat-7.0.82/webapps/DemoInte04/WEB-INF/lib/webservices-rt.jar!/META-INF/services/com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtensionbut could not be instantiated: java.lang.ClassCastException
com.sun.xml.ws.util.ServiceConfigurationError: com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtension: Provider com.sun.xml.ws.policy.jaxws.PolicyWSDLGeneratorExtension is specified in jar:file:/E:/apache-tomcat-7.0.82-windows-x86/apache-tomcat-7.0.82/webapps/DemoInte04/WEB-INF/lib/webservices-rt.jar!/META-INF/services/com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtensionbut could not be instantiated: java.lang.ClassCastException
at com.sun.xml.ws.util.ServiceFinder.fail(ServiceFinder.java:258)
at com.sun.xml.ws.util.ServiceFinder.access$300(ServiceFinder.java:151)
at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:465)
at com.sun.xml.ws.util.ServiceFinder$CompositeIterator.next(ServiceFinder.java:402)
at com.sun.xml.ws.util.ServiceFinder.toArray(ServiceFinder.java:250)
at com.sun.xml.ws.server.EndpointFactory.generateWSDL(EndpointFactory.java:551)
at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:278)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:147)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:574)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:557)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:260)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:152)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131)
at com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer.onStartup(WSServletContainerInitializer.java:65)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5622)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1015)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:991)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1296)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2038)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException
at java.lang.Class.cast(Unknown Source)
at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:460)
... 24 more
2017-12-10 12:20:50 org.apache.catalina.core.StandardContext startInternal
严重: Error during ServletContainerInitializer processing
javax.servlet.ServletException: com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: 无法解析运行时描述符: com.sun.xml.ws.util.ServiceConfigurationError: com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtension: Provider com.sun.xml.ws.policy.jaxws.PolicyWSDLGeneratorExtension is specified in jar:file:/E:/apache-tomcat-7.0.82-windows-x86/apache-tomcat-7.0.82/webapps/DemoInte04/WEB-INF/lib/webservices-rt.jar!/META-INF/services/com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtensionbut could not be instantiated: java.lang.ClassCastException
at com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer.onStartup(WSServletContainerInitializer.java:70)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5622)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1015)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:991)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1296)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2038)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: 无法解析运行时描述符: com.sun.xml.ws.util.ServiceConfigurationError: com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtension: Provider com.sun.xml.ws.policy.jaxws.PolicyWSDLGeneratorExtension is specified in jar:file:/E:/apache-tomcat-7.0.82-windows-x86/apache-tomcat-7.0.82/webapps/DemoInte04/WEB-INF/lib/webservices-rt.jar!/META-INF/services/com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtensionbut could not be instantiated: java.lang.ClassCastException
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:141)
at com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer.onStartup(WSServletContainerInitializer.java:65)
... 13 more
Caused by: com.sun.xml.ws.util.ServiceConfigurationError: com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtension: Provider com.sun.xml.ws.policy.jaxws.PolicyWSDLGeneratorExtension is specified in jar:file:/E:/apache-tomcat-7.0.82-windows-x86/apache-tomcat-7.0.82/webapps/DemoInte04/WEB-INF/lib/webservices-rt.jar!/META-INF/services/com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtensionbut could not be instantiated: java.lang.ClassCastException
at com.sun.xml.ws.util.ServiceFinder.fail(ServiceFinder.java:258)
at com.sun.xml.ws.util.ServiceFinder.access$300(ServiceFinder.java:151)
at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:465)
at com.sun.xml.ws.util.ServiceFinder$CompositeIterator.next(ServiceFinder.java:402)
at com.sun.xml.ws.util.ServiceFinder.toArray(ServiceFinder.java:250)
at com.sun.xml.ws.server.EndpointFactory.generateWSDL(EndpointFactory.java:551)
at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:278)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:147)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:574)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:557)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:260)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:152)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131)
... 14 more
Caused by: java.lang.ClassCastException
at java.lang.Class.cast(Unknown Source)
at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:460)
... 24 more
2017-12-10 12:20:50 org.apache.catalina.core.StandardContext startInternal
严重: Context [/DemoInte04] startup failed due to previous errors
2017-12-10 12:20:50 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory E:\apache-tomcat-7.0.82-windows-x86\apache-tomcat-7.0.82\webapps\DemoInte04 has finished in 2,972 ms


造成这种测试数据,首先工程依赖的library要选全,其次不勾选生成WSDL,然后部署tomcat的时候会报如上错。即使此时去除引用,问题依旧,这时候我再生成WSDL,重新部署一遍webservice到tomcat,问题依旧。只有将所引用的library去掉,重新部署问题会得到解决,如果加上library引用,重新部署问题依旧。

重新部署:必须是关闭tomcat服务,remove调,然后再加上tomcat相应,然后再部署tomcat服务。如果只是重启tomcat服务,或这remove-add,重新部署都不会生效。!!!!!!!!!!!!!!!!

如果不勾选过多的library,即使不勾选生成WSDL,也不会包类似的解析的错误!!!!!!!!

第三个坑:报错如下:引用library,但是又没有选中生成WSDL导致的。

严重: WSSERVLET11: 无法解析运行时描述符: WSDL 解析期间出现异常错误: jndi:/localhost/DemoInte04/WEB-INF/wsdl/Demo04Service.wsdl
com.sun.xml.ws.server.ServerRtException: WSDL 解析期间出现异常错误: jndi:/localhost/DemoInte04/WEB-INF/wsdl/Demo04Service.wsdl
at com.sun.xml.ws.server.EndpointFactory.getWSDLPort(EndpointFactory.java:667)
at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:241)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:147)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:574)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:557)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:260)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:152)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131)
at com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer.onStartup(WSServletContainerInitializer.java:65)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5622)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1015)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:991)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1296)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2038)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.sun.xml.ws.util.ServiceConfigurationError: com.sun.xml.ws.api.wsdl.parser.WSDLParserExtension: Provider com.sun.xml.ws.policy.jaxws.PolicyWSDLParserExtension is specified in jar:file:/E:/apache-tomcat-7.0.82-windows-x86/apache-tomcat-7.0.82/webapps/DemoInte04/WEB-INF/lib/webservices-rt.jar!/META-INF/services/com.sun.xml.ws.api.wsdl.parser.WSDLParserExtensionbut could not be instantiated: java.lang.ClassCastException
at com.sun.xml.ws.util.ServiceFinder.fail(ServiceFinder.java:258)
at com.sun.xml.ws.util.ServiceFinder.access$300(ServiceFinder.java:151)
at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:465)
at com.sun.xml.ws.util.ServiceFinder$CompositeIterator.next(ServiceFinder.java:402)
at com.sun.xml.ws.util.ServiceFinder.toArray(ServiceFinder.java:250)
at com.sun.xml.ws.server.EndpointFactory.getWSDLPort(EndpointFactory.java:645)
... 21 more
Caused by: java.lang.ClassCastException
at java.lang.Class.cast(Unknown Source)
at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:460)
... 24 more
2017-12-10 12:42:56 org.apache.catalina.core.StandardContext startInternal
严重: Error during ServletContainerInitializer processing
javax.servlet.ServletException: com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: 无法解析运行时描述符: WSDL 解析期间出现异常错误: jndi:/localhost/DemoInte04/WEB-INF/wsdl/Demo04Service.wsdl
at com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer.onStartup(WSServletContainerInitializer.java:70)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5622)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1015)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:991)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1296)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2038)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: 无法解析运行时描述符: WSDL 解析期间出现异常错误: jndi:/localhost/DemoInte04/WEB-INF/wsdl/Demo04Service.wsdl
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:141)
at com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer.onStartup(WSServletContainerInitializer.java:65)
... 13 more
Caused by: com.sun.xml.ws.server.ServerRtException: WSDL 解析期间出现异常错误: jndi:/localhost/DemoInte04/WEB-INF/wsdl/Demo04Service.wsdl
at com.sun.xml.ws.server.EndpointFactory.getWSDLPort(EndpointFactory.java:667)
at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:241)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:147)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:574)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:557)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:260)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:152)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131)
... 14 more
Caused by: com.sun.xml.ws.util.ServiceConfigurationError: com.sun.xml.ws.api.wsdl.parser.WSDLParserExtension: Provider com.sun.xml.ws.policy.jaxws.PolicyWSDLParserExtension is specified in jar:file:/E:/apache-tomcat-7.0.82-windows-x86/apache-tomcat-7.0.82/webapps/DemoInte04/WEB-INF/lib/webservices-rt.jar!/META-INF/services/com.sun.xml.ws.api.wsdl.parser.WSDLParserExtensionbut could not be instantiated: java.lang.ClassCastException
at com.sun.xml.ws.util.ServiceFinder.fail(ServiceFinder.java:258)
at com.sun.xml.ws.util.ServiceFinder.access$300(ServiceFinder.java:151)
at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:465)
at com.sun.xml.ws.util.ServiceFinder$CompositeIterator.next(ServiceFinder.java:402)
at com.sun.xml.ws.util.ServiceFinder.toArray(ServiceFinder.java:250)
at com.sun.xml.ws.server.EndpointFactory.getWSDLPort(EndpointFactory.java:645)
... 21 more
Caused by: java.lang.ClassCastException
at java.lang.Class.cast(Unknown Source)
at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:460)
... 24 more
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息