【发布时间】:2017-07-24 09:48:01
【问题描述】:
我尝试在 Wildfly 10 中使用 JAX-WS Metro 实现更改默认 (CXF) 实现。我必须执行大量步骤(遵循此 link)并适应 Wildfly 10。
- 已禁用 Web 服务子系统。
- 添加 Metro 实现 jar 作为模块
- 提供了 javax.xml.ws.spi.Provider 文件。
- 从 javax 模块中禁用 org.jboss.modules。
但是在服务器启动时,初始化时出现异常。这是堆栈跟踪。看起来仍然在实例化 jboss __XMLInputFactory 而不是 Metro 一个。
有什么想法吗?我尝试使用以下类添加文件 services/javax.xml.stream.XMLInputFactory 并且没有运气。
com.sun.xml.internal.stream.XMLInputFactoryImpl
堆栈跟踪
com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: failed to parse runtime descriptor: java.lang.ExceptionInInitializerError
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: java.lang.RuntimeException: javax.servlet.ServletException: com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: failed to parse runtime descriptor: java.lang.ExceptionInInitializerError
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:231)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82)
... 6 more
Caused by: javax.servlet.ServletException: com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: failed to parse runtime descriptor: java.lang.ExceptionInInitializerError
at com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer.onStartup(WSServletContainerInitializer.java:66)
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:184)
... 8 more
Caused by: com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: failed to parse runtime descriptor: java.lang.ExceptionInInitializerError
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:137)
at com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer.onStartup(WSServletContainerInitializer.java:61)
... 9 more
Caused by: java.lang.ExceptionInInitializerError
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:144)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:127)
... 10 more
Caused by: java.lang.ClassCastException: __redirected.__XMLInputFactory cannot be cast to javax.xml.stream.XMLInputFactory
at javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136)
at com.sun.xml.ws.api.streaming.XMLStreamReaderFactory.getXMLInputFactory(XMLStreamReaderFactory.java:109)
at com.sun.xml.ws.api.streaming.XMLStreamReaderFactory.<clinit>(XMLStreamReaderFactory.java:78)
... 12 more
【问题讨论】:
-
这可能很难改变。像这样替换集成实现通常并不容易。也就是说,请确保您的部署中没有包含 JAXP 库或模块中的资源。
-
谢谢。 JBoss 7.2 中部署了相同的耳朵,但该应用程序还没有工作。我知道他们之间有很多不同之处。但显然较新的版本不像旧版本那样灵活。
标签: jax-ws wildfly wildfly-10