java – WAR无法部署

我有一个在TomEE中正常运行的Maven JEE应用程序.我在Netbeans中创建了一个SOAP Web服务:New – Web Service,它创建了一个简单的“hello”服务.出于某种原因,我收到了一条消息

《java – WAR无法部署》

The web server you have selected does not seem to support JSR 109
specification. To enable the web server to process annotated web
services, the sun-jaxws.xml file should be created and servlets
entries for web services need to be generated in web.xml file

我接受,清理,构建……无论我做什么,每次打开Netbeans时我都会收到这条消息.喜欢这些变化并不是持久的.

然后主要的问题是当我尝试运行项目时.我得到了一长串错误

在服务器日志中

SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! org.apache.catalina.core.DefaultInstanceManager cannot be cast to org.apache.tomee.catalina.JavaeeInstanceManager
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:292)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5066)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)

在日志中

SEVERE: Unable to deploy collapsed ear in war StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebServiceTest]
org.apache.openejb.OpenEJBException: Unable to load servlet class: com.sun.xml.ws.tx.coord.v11.endpoint.RegistrationRequesterPortImpl: null
    at org.apache.openejb.config.WsDeployer.processPorts(WsDeployer.java:234)
....
Caused by: java.lang.NullPointerException
    at org.apache.openejb.config.WsDeployer.readWsdl(WsDeployer.java:451)

SEVERE: ContainerBase.removeChild: destroy: 
org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_destroy]) for component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebServiceTest]] in state [STARTING_PREP]
    at org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:401)
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:291)
....
SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebServiceTest]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
....
Caused by: org.apache.tomee.catalina.TomEERuntimeException: org.apache.openejb.OpenEJBException: Unable to load servlet class: com.sun.xml.ws.tx.coord.v11.endpoint.RegistrationRequesterPortImpl: null
    at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1270)
....
Caused by: org.apache.openejb.OpenEJBException: Unable to load servlet class: com.sun.xml.ws.tx.coord.v11.endpoint.RegistrationRequesterPortImpl: null
    at org.apache.openejb.config.WsDeployer.processPorts(WsDeployer.java:234)
....
Caused by: java.lang.NullPointerException
    at org.apache.openejb.config.WsDeployer.readWsdl(WsDeployer.java:451)
....
SEVERE: Error deploying configuration descriptor C:\Program Files\Apache-Tomee-jaxrs-1.7.4\conf\Catalina\localhost\WebServiceTest.xml
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebServiceTest]]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:903)
....

编辑

我添加了这些依赖项,但在构建/运行时仍然遇到相同的错误

<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina-ws -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-catalina-ws</artifactId>
    <version>7.0.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml/jaxrpc-api -->
<dependency>
    <groupId>javax.xml</groupId>
    <artifactId>jaxrpc-api</artifactId>
    <version>1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/wsdl4j/wsdl4j -->
<dependency>
    <groupId>wsdl4j</groupId>
    <artifactId>wsdl4j</artifactId>
    <version>1.6.2</version>
</dependency>

除了Maven依赖项之外,我还手动复制了TomEE lib文件夹中的文件jaxrpc-api-1.1.jar和tomcat-catalina-ws-7.0.5.jar.文件wsdl4j-1.6.3.jar已经存在.我重新启动了Netbeans.不确定这些是否是必需的罐子,但它们无法解决问题.

最佳答案 您收到此错误是因为Tomcat不是开箱即用的JSR-109.我在Tomcat
documentation中发现了这个可能对你有所帮助:

Web Services support (JSR 109)

Tomcat provides factories for JSR 109 which may be used to resolve web services references. Place the generated catalina-ws.jar as well as jaxrpc.jar and wsdl4j.jar (or another implementation of JSR 109) in the Tomcat lib folder.

Users should be aware that wsdl4j.jar is licensed under CPL 1.0 and not the Apache License version 2.0.

点赞