Most likely, the SAAJ jar that is being picked up by WebLogic is an SAAJ
1.2 version instead of a 1.3 version that we need. My gut feeling is
that weblogic includes an old version. Not sure what the workaround is
(I'm not familliar with weblogic), but that may be something to look
for.
Dan
On Tuesday 08 April 2008, stevewu wrote:
> Hi all,
>
> When I create a SoapFault in my WebServices running in WebLogic 9.2 I
> am getting "NoSuchMethodError" exception. The same code works fine in
> JBoss.
>
> I tried using all possible "addFault()" methods but it give me the
> same exception. Am I missing some JARs?
>
> Here's the code to create SoapFault:
>
> public static SOAPMessage processException(Throwable th)
> {
>
> String errorcode = "GENERAL1122";
> String message = th.getMessage();
>
> String nsURI =
> "http://schemas.mysite.com/2007/test/testFaultType"; SOAPMessage
> faultMessage = null;
>
> try
> {
> MessageFactory factory = MessageFactory.newInstance();
> faultMessage = factory.createMessage();
> SOAPBody soapBody = faultMessage.getSOAPBody();
>
> //SOAPFault soapFault = soapBody.addFault();
> QName faultCode = new QName(nsURI, errorcode, "ns");
>
> SOAPFault soapFault =
> soapBody.addFault(faultCode,"P6wsFault"); Detail detail =
> soapFault.addDetail();
> QName qName = new QName(nsURI, "IntegrationFault", "ns");
> DetailEntry detailEntry = detail.addDetailEntry(qName);
> qName = new QName(nsURI, "ErrorCode", "ns");
>
> SOAPElement errorElement =
> detailEntry.addChildElement(qName);
> errorElement.setTextContent(errorcode);
> qName = new QName(nsURI, "ErrorDescription", "ns";
>
> SOAPElement errorMessage =
> detailEntry.addChildElement(qName);
> errorMessage.setTextContent(message);
>
> }
> catch (SOAPException e)
> {
> e.printStackTrace();
> }
>
> return faultMessage;
> }
>
> Here's the exception appear on WL console:
>
> Apr 8, 2008 1:15:13 PM org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault:
> javax.xml.soap.SOAPBody.addFault(Ljavax/xml/namespace/QName;Ljava/lang
>/String;)Ljavax/xml/soap/SOAPFault; at
> org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInv
>oker.java:107) at
> org.apache.cxf.jaxws.JAXWSMethodInvoker.createFault(JAXWSMethodInvoker
>.java:76) at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.
>java:95) at
> org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java
>:100) at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.
>java:68) at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvo
>kerInterceptor.java:56) at
> org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecut
>or.java:37) at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(Ser
>viceInvokerInterceptor.java:92) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto
>rChain.java:207) at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitia
>tionObserver.java:73) at
> org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletD
>estination.java:79) at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(S
>ervletController.java:256) at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletContr
>oller.java:160) at
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXF
>Servlet.java:170) at
> org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXF
>Servlet.java:148) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(
>StubSecurityHelper.java:225) at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurit
>yHelper.java:127) at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java
>:283) at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java
>:175) at
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction
>.run(WebAppServletContext.java:3214) at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticated
>Subject.java:321) at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:1
>21) at
> weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppSe
>rvletContext.java:1983) at
> weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletCo
>ntext.java:1890) at
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.ja
>va:1344) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
> at weblogic.work.ExecuteThread.run(ExecuteThread.java:181) Caused by:
> java.lang.NoSuchMethodError:
> javax.xml.soap.SOAPBody.addFault(Ljavax/xml/namespace/QName;Ljava/lang
>/String;)Ljavax/xml/soap/SOAPFault; at
> com.primavera.ws.common.ExceptionHandler.processException(ExceptionHan
>dler.java:111) at
> com.primavera.ws.jaxws.provider.ProviderBase.invokeBase(ProviderBase.j
>ava:149) at
> com.primavera.ws.jaxws.provider.generated.ActivityProvider.invoke(Acti
>vityProvider.java:29) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>ava:39) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>orImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585)
> at
> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abstr
>actInvoker.java:124) at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.
>java:82) ... 26 more
--
J. Daniel Kulp
Principal Engineer, IONA
[EMAIL PROTECTED]
http://www.dankulp.com/blog