2015-10-16 46 views
0

我已經爲我的應用程序(jdk 1.6.24)實現了一個包含cxf的Web服務,並且它在jboss 5.1.0上運行良好。 一段時間之後,Web服務無法正常工作,因爲它會引發以下異常用於xml安全的ClassCastException(TransformC14NExclusive)

java.lang.ClassCastException: org.apache.xml.security.transforms.implementations.TransformC14NExclusive cannot be cast to org.apache.xml.security.transforms.TransformSpi 
     at org.apache.xml.security.transforms.Transform.getTransformSpi(Unknown Source) 
     at org.apache.xml.security.transforms.Transform.<init>(Unknown Source) 
     at org.apache.xml.security.transforms.Transform.getInstance(Unknown Source) 
     at org.apache.xml.security.transforms.Transform.getInstance(Unknown Source) 
     at org.apache.xml.security.transforms.Transforms.addTransform(Unknown Source) 
     at org.apache.ws.security.message.WSSecSignature.addReferencesToSign(WSSecSignature.java:599) 
     at org.apache.ws.security.message.WSSecSignature.build(WSSecSignature.java:774) 
     at org.apache.ws.security.action.SignatureAction.execute(SignatureAction.java:65) 
     at org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:206) 
     at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor.access$200(WSS4JOutInterceptor.java:50) 
     at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:257) 
     at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:134) 
     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) 
     at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516) 
     at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313) 
     at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265) 
     at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) 
     at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) 
     at $Proxy566.getEntityRepresentatives(Unknown Source) 
     at mycodeClient() 
     at mycodeMethodCall() 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122) 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111) 
     at org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69) 
     at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73) 
     at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59) 
     at sun.reflect.GeneratedMethodAccessor325.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174) 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
     at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72) 
     at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_1509825954.invoke(InvocationContextInterceptor_z_fillMethod_1509825954.java) 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
     at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88) 
     at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_1509825954.invoke(InvocationContextInterceptor_z_setup_1509825954.java) 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
     at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62) 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
     at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56) 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
     at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 
     at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) 

我用的是去除TMP,數據和工作從JBoss的文件夾中的解決方法。 它後來工作正常,直到它再次拋出此錯誤很多。

回答

0

異常的最可能原因是您獲得多個類加載器加載的相同類。

您必須檢查如何打包應用程序。

JBoss有一些CXF jar,默認情況下它們對應用程序是可見的。 如果您還將CXF jar打包到您的應用程序中,那麼您必須完全理解JBoss classloading rules以及如何調整它們。