[jboss-svn-commits] JBL Code SVN: r29124 - labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 31 15:09:57 EDT 2009


Author: kevin.conner at jboss.com
Date: 2009-08-31 15:09:56 -0400 (Mon, 31 Aug 2009)
New Revision: 29124

Modified:
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
Log:
Reuse soap message factory: JBESB-2806

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2009-08-31 15:37:53 UTC (rev 29123)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2009-08-31 19:09:56 UTC (rev 29124)
@@ -65,6 +65,7 @@
 
     private static final boolean RETURN_STACK_TRACES ;
     private static final Logger LOGGER = Logger.getLogger(BaseWebService.class);
+    private static final javax.xml.soap.MessageFactory SOAP_MESSAGE_FACTORY ;
 
     protected final ServiceInvoker serviceInvoker ;
 
@@ -76,6 +77,11 @@
 
     public SOAPMessage invoke(final SOAPMessage request)
     {
+        if (SOAP_MESSAGE_FACTORY == null)
+        {
+            throw new WebServiceException("Failed to instantiate SOAP Message Factory") ;
+        }
+        
         final Message esbReq = MessageFactory.getInstance().getMessage() ;
         try
         {
@@ -121,14 +127,14 @@
 
                 final Document respDoc = YADOMUtil.parseStream(new ByteArrayInputStream(soapRes.getBytes()),
                         false, false, true);
-                final SOAPMessage response = javax.xml.soap.MessageFactory.newInstance().createMessage();
+                final SOAPMessage response = SOAP_MESSAGE_FACTORY.createMessage();
                 response.getSOAPBody().addDocument(respDoc) ;
                 return response ;
             }
             else
             {
                 // We should be able to return null here but this causes JBossWS to NPE.
-                return javax.xml.soap.MessageFactory.newInstance().createMessage();
+                return SOAP_MESSAGE_FACTORY.createMessage();
             }
         }
         catch (final WebServiceException wse)
@@ -153,7 +159,7 @@
 
                         if (faultCode != null)
                         {
-                            faultMsg = javax.xml.soap.MessageFactory.newInstance().createMessage() ;
+                            faultMsg = SOAP_MESSAGE_FACTORY.createMessage() ;
                             final SOAPFault fault = faultMsg.getSOAPBody().addFault(faultCode, faultDescription) ;
                             if (faultDetail != null)
                             {
@@ -194,7 +200,7 @@
     private SOAPMessage generateFault(final Throwable th)
         throws SOAPException
     {
-        final SOAPMessage faultMsg = javax.xml.soap.MessageFactory.newInstance().createMessage() ;
+        final SOAPMessage faultMsg = SOAP_MESSAGE_FACTORY.createMessage() ;
         if (RETURN_STACK_TRACES)
         {
             final StringWriter sw = new StringWriter() ;
@@ -219,5 +225,16 @@
         final PropertyManager propertyManager = ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE) ;
         final String returnStackTraces = propertyManager.getProperty(Environment.WS_RETURN_STACK_TRACE);
         RETURN_STACK_TRACES = Boolean.parseBoolean(returnStackTraces) ;
+        
+        javax.xml.soap.MessageFactory soapMessageFactory = null ;
+        try
+        {
+            soapMessageFactory = javax.xml.soap.MessageFactory.newInstance() ;
+        }
+        catch (final SOAPException soape)
+        {
+            LOGGER.error("Could not instantiate SOAP Message Factory", soape) ;
+        }
+        SOAP_MESSAGE_FACTORY = soapMessageFactory ;
     }
 }



More information about the jboss-svn-commits mailing list