【发布时间】:2018-07-17 07:25:39
【问题描述】:
我在部署我的应用程序时收到此错误:
Caused by: java.lang.VerifyError: JVMVRFY013 class loading constraint violated; class=org/apache/axiom/om/impl/dom/DocumentImpl, method=getDomConfig()Lorg/w3c/dom/DOMConfiguration;, pc=0
at java.lang.J9VMInternals.prepareClassImpl(Native Method)
at java.lang.J9VMInternals.prepare(J9VMInternals.java:291)
at java.lang.Class.getConstructor(Class.java:531)
at org.apache.axiom.core.NodeFactoryImpl.<init>(NodeFactoryImpl.java:87)
at org.apache.axiom.om.impl.dom.factory.DOOMNodeFactory.<init>(DOOMNodeFactory.java:32)
at org.apache.axiom.om.impl.dom.factory.DOOMNodeFactory.<clinit>(DOOMNodeFactory.java:25)
at org.apache.axiom.om.impl.dom.factory.OMDOMMetaFactory.<init>(OMDOMMetaFactory.java:40)
at org.apache.axiom.om.impl.dom.factory.OMDOMMetaFactory.<clinit>(OMDOMMetaFactory.java:38)
at org.apache.axiom.om.impl.dom.factory.OMDOMMetaFactoryLoader.load(OMDOMMetaFactoryLoader.java:28)
at org.apache.axiom.locator.ImplementationFactory.parseImplementation(ImplementationFactory.java:141)
at org.apache.axiom.locator.ImplementationFactory.parseDescriptor(ImplementationFactory.java:98)
at org.apache.axiom.locator.DefaultOMMetaFactoryLocator.<init>(DefaultOMMetaFactoryLocator.java:87)
at java.lang.J9VMInternals.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1899)
at org.apache.axiom.om.OMAbstractFactory.<clinit>(OMAbstractFactory.java:104)
at org.apache.axis2.description.AxisDescription.<init>(AxisDescription.java:72)
at org.apache.axis2.engine.AxisConfiguration.<init>(AxisConfiguration.java:175)
at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:627)
at org.apache.axis2.deployment.WarBasedAxisConfigurator.<init>(WarBasedAxisConfigurator.java:157)
at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:620)
at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:471)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:341)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:168)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadOnStartupCheck(ServletWrapper.java:1375)
at com.ibm.ws.webcontainer.webapp.WebApp.doLoadOnStartupActions(WebApp.java:655)
at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinally(WebApp.java:621)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:449)
at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:170)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:904)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:789)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:427)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:719)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1219)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1514)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:704)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:1096)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:786)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$5.run(ApplicationMgrImpl.java:2238)
at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:5488)
at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:5614)
at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:255)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2243)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:436)
at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:379)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:127)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:985)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:502)
... 1 more
我已经关注了这个链接,但在这种情况下,错误是不同的。
http://www-01.ibm.com/support/docview.wss?uid=nas8N1011249
从我的网络应用程序中删除 axiom-dom 后,它工作正常。但我不知道我的应用程序可能会使用其他类的 axiom-dom。
请帮忙。
同时设置父级最后一个选项。
【问题讨论】:
-
您使用 PARENT_LAST 是否有特定原因?如果没有 PARENT_LAST 加载,您所看到的类型的 VerifyErrors 基本上是不可能的。如果您确实需要 PARENT_LAST,则必须非常小心您在应用程序中添加的内容。 VerifyErrors 的消息传递不是非常精确,但最可能的原因是您有一个没有相关实现的 XML API(最好的猜测是错误消息中的方法中引用的 DOMConfiguration 类)。
-
parent last 被保留,因为我希望我的 web 应用程序下的类首先被加载
-
这当然可以理解...但是您应该意识到使用它会带来额外的风险 - PARENT_LAST 更容易受到 VerifyErrors 和 ClassCastExceptions 的影响,并且有一些技术(特别是核心 Java EE API,如 EJB 或Servlet),您根本无法将其打包到 PARENT_LAST 加载程序中而不破坏事物。是否存在您认为需要您的版本而不是简单地使用服务器附带的版本的特定库?
-
问题在于 WebSphere 的 JAX-WS 实现基于 Axis2,并且 WebSphere 运行时中的 Axis2 类对应用程序是可见的。因此,使用打包在 WebSphere 上部署的应用程序中的 Axis2 的唯一方法是切换到 PARENT_LAST。
标签: java websphere axis2 websphere-8 axiom