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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 14 06:34:22 EDT 2009


Author: kevin.conner at jboss.com
Date: 2009-09-14 06:34:21 -0400 (Mon, 14 Sep 2009)
New Revision: 29328

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

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2009-09-14 10:22:22 UTC (rev 29327)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2009-09-14 10:34:21 UTC (rev 29328)
@@ -73,6 +73,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 ;
 
     private static final AddressingBuilder ADDRESSING_BUILDER = AddressingBuilder.getAddressingBuilder() ;
     private static final String ADDRESSING_NAMESPACE = ADDRESSING_BUILDER.getNamespaceURI() ;
@@ -94,6 +95,11 @@
 
     public SOAPMessage invoke(final SOAPMessage request)
     {
+        if (SOAP_MESSAGE_FACTORY == null)
+        {
+            throw new WebServiceException("Failed to instantiate SOAP Message Factory") ;
+        }
+        
         final SOAPAddressingProperties soapIncomingProps = AddressingContext.getAddressingProperties() ;
         
         final Message esbReq = MessageFactory.getInstance().getMessage() ;
@@ -146,7 +152,7 @@
 
                 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) ;
                 if (soapIncomingProps == null)
                 {
@@ -167,7 +173,7 @@
             {
                 AddressingContext.setAddressingProperties(null) ;
                 // 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)
@@ -192,7 +198,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)
                             {
@@ -233,7 +239,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() ;
@@ -298,5 +304,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