今天学习了一下SCA,做一个简单Demo无论是url还是用客户端调用都没有问题,但是把SCA集成到我的项目中去,访问url没有问题但是用客户端调用时就会出现如下错误:

客户端报如下错误:

Exception in thread "main" org.apache.axis2.AxisFault: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
 at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:512)
 at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:370)
 at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
 at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
 at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
 at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:548)
 at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)
 at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
 at com.tuscanytest.client.HelloTuscanyClient.main(HelloTuscanyClient.java:25)
 

服务器端报如下错误:

四月 9, 2011 05:47 下午 - 严重      : java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
[Exception: org.osoa.sca.ServiceRuntimeException: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V]
2011-04-09 17:47:53,359 ERROR [org.apache.axis2.engine.AxisEngine] - java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
org.apache.axis2.AxisFault: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
 at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
 at org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver.invokeBusinessLogic(Axis2ServiceInOutSyncMessageReceiver.java:100)
 at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42)
 at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:100)
 at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
 at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
 at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.tuscany.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:107)
 at org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:93)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
 at java.lang.Thread.run(Thread.java:619)
Caused by: org.osoa.sca.ServiceRuntimeException: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
 at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:138)
 at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:104)
 at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:98)
 at org.apache.tuscany.sca.core.assembly.RuntimeWireImpl.invoke(RuntimeWireImpl.java:159)
 at org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceProvider.invokeTarget(Axis2ServiceProvider.java:758)
 at org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver.invokeBusinessLogic(Axis2ServiceInOutSyncMessageReceiver.java:70)
 ... 25 more
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
 at org.apache.tuscany.sca.interfacedef.java.jaxws.BaseBeanGenerator.generate(BaseBeanGenerator.java:436)
 at org.apache.tuscany.sca.interfacedef.java.jaxws.WrapperBeanGenerator.generateRequestWrapper(WrapperBeanGenerator.java:99)
 at org.apache.tuscany.sca.interfacedef.java.jaxws.GeneratedDataTypeImpl.getPhysical(GeneratedDataTypeImpl.java:99)
 at org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper.findClasses(JAXBContextHelper.java:230)
 at org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper.createJAXBContext(JAXBContextHelper.java:210)
 at org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper.createJAXBContext(JAXBContextHelper.java:89)
 at org.apache.tuscany.sca.databinding.jaxb.axiom.OMElement2JAXB$1.run(OMElement2JAXB.java:56)
 at java.security.AccessController.doPrivileged(Native Method)
 at org.apache.tuscany.sca.databinding.jaxb.axiom.OMElement2JAXB.transform(OMElement2JAXB.java:50)
 at org.apache.tuscany.sca.databinding.jaxb.axiom.OMElement2JAXB.transform(OMElement2JAXB.java:41)
 at org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:200)
 at org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:113)
 at org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:228)
 at org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:45)
 at org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:113)
 at org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediateInput(MediatorImpl.java:431)
 at org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:65)
 at org.apache.tuscany.sca.core.invocation.RuntimeWireInvoker.invoke(RuntimeWireInvoker.java:129)
 ... 30 more

在网上搜了搜关于这个问题的原因,基本上都是因为jar包冲突的原因,综合网上的以及我在我的项目中的解决方法提出两点方案:

1.可能是cglib-2.1_3.jar和asm-1.5.3.jar冲突,将cglib-2.1_3.jar替换为cglib-nodep-2.2.jar

2.可能是asm版本不够高,在我的项目中将asm-1.5.3.jar替换为asm-3.3.jar