You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by as...@apache.org on 2007/03/24 19:54:57 UTC

svn commit: r522090 - in /webservices/axis2/trunk/java/modules: integration/test/org/apache/axis2/jms/ kernel/conf/ kernel/src/org/apache/axis2/deployment/ kernel/src/org/apache/axis2/transport/jms/

Author: asankha
Date: Sat Mar 24 11:54:56 2007
New Revision: 522090

URL: http://svn.apache.org/viewvc?view=rev&rev=522090
Log:
apply fixes for 2030 and 2277 again and fix unit tests
enable jms transport sender on the default axis2.xmls

Modified:
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLOneWayTest.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
    webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConnectionFactory.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSSender.java

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLOneWayTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLOneWayTest.java?view=diff&rev=522090&r1=522089&r2=522090
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLOneWayTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLOneWayTest.java Sat Mar 24 11:54:56 2007
@@ -115,7 +115,8 @@
 		if (USE_EMBEDDED_BROKER) {
 	        broker = new BrokerService();
 	        broker.setUseJmx(false);
-	        // To enable security for embedded broker please
+            broker.setPersistent(false);
+            // To enable security for embedded broker please
 	        // follow http://issues.apache.org/activemq/browse/AMQ-982
 	        //broker.setPlugins(new BrokerPlugin[] { new JaasAuthenticationPlugin () });	        
 	        broker.addConnector(PROVIDER_URL);

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java?view=diff&rev=522090&r1=522089&r2=522090
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java Sat Mar 24 11:54:56 2007
@@ -56,12 +56,12 @@
 
 public class JMSEchoRawXMLTest extends TestCase {
     private EndpointReference targetEPR =
-            new EndpointReference("jms:/EchoXMLService?"+JMSConstants.CONFAC_JNDI_NAME_PARAM+"=ConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616");
+            new EndpointReference("jms:/dynamicQueues/EchoXMLService?"+JMSConstants.CONFAC_JNDI_NAME_PARAM+"=ConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616");
     private QName serviceName = new QName("EchoXMLService");
     private QName operationName = new QName("echoOMElement");
 
 
-    String destination = "EchoXMLService";
+    String destination = "dynamicQueues/EchoXMLService";
     BrokerService broker = new BrokerService();
 
     private AxisService clientService;
@@ -81,6 +81,7 @@
     protected void setUp() throws Exception {
         // Start ActiveMQ embedded broker
         broker.setUseJmx(false);
+        broker.setPersistent(false);
         broker.addConnector("tcp://localhost:61616");
         broker.start();
 
@@ -94,7 +95,7 @@
         Parameter param = new Parameter();
         param.setName(JMSConstants.DEST_PARAM);
         param.setValue(destination);
-        service.getParameters().add(param);
+        service.addParameter(param);
         UtilsJMSServer.deployService(service);
         clientService = Utils.createSimpleServiceforClient(serviceName,
                 Echo.class.getName(),
@@ -180,24 +181,18 @@
     public void testEchoXMLCompleteSync() throws Exception {
         ConfigurationContext configContext = UtilServer.createClientConfigurationContext("target/test-resources/jms-enabled-client-repository");
 
-        OMFactory fac = OMAbstractFactory.getOMFactory();
-
-        OMNamespace omNs = fac.createOMNamespace("http://localhost/axis2/services/EchoXMLService", "my");
-        OMElement payloadElement = fac.createOMElement("echoOMElement", omNs);
-        OMElement value = fac.createOMElement("myValue", omNs);
-        value.setText("Isaac Asimov, The Foundation Trilogy");
-        payloadElement.addChild(value);
+        OMElement payload = createPayload();
 
         Options options = new Options();
         options.setTo(targetEPR);
         options.setAction(Constants.AXIS2_NAMESPACE_URI+"/"+operationName.getLocalPart());
         options.setTransportInProtocol(Constants.TRANSPORT_JMS);
-        options.setUseSeparateListener(true);
-        options.setTimeOutInMilliSeconds(60*60*1000);
+        //options.setUseSeparateListener(true);
+        options.setTimeOutInMilliSeconds(30*1000);
 
         ServiceClient sender = new ServiceClient(configContext, clientService);
         sender.setOptions(options);
-        OMElement result = sender.sendReceive(operationName, payloadElement);
+        OMElement result = sender.sendReceive(operationName, payload);
 
         result.serialize(StAXUtils.createXMLStreamWriter(
                 System.out));

Modified: webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml?view=diff&rev=522090&r1=522089&r2=522090
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml (original)
+++ webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml Sat Mar 24 11:54:56 2007
@@ -213,10 +213,8 @@
         <parameter name="PROTOCOL">HTTP/1.1</parameter>
         <parameter name="Transfer-Encoding">chunked</parameter>
     </transportSender>
-    <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ)
     <transportSender name="jms"
                      class="org.apache.axis2.transport.jms.JMSSender"/>
-    -->
 
     <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
    <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml?view=diff&rev=522090&r1=522089&r2=522090
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml Sat Mar 24 11:54:56 2007
@@ -118,8 +118,8 @@
     <!-- Transport Outs -->
     <!-- ================================================= -->
 
-    <!--<transportSender name="jms"-->
-                     <!--class="org.apache.axis2.transport.jms.JMSSender"/>-->
+    <transportSender name="jms"
+                     class="org.apache.axis2.transport.jms.JMSSender"/>
     <transportSender name="tcp"
                      class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
     <transportSender name="local"

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConnectionFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConnectionFactory.java?view=diff&rev=522090&r1=522089&r2=522090
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConnectionFactory.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConnectionFactory.java Sat Mar 24 11:54:56 2007
@@ -18,12 +18,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.Destination;
-import javax.jms.JMSException;
-import javax.jms.MessageConsumer;
-import javax.jms.Session;
+import javax.jms.*;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NameNotFoundException;
@@ -87,9 +82,13 @@
      */
     private String jndiName = null;
     /**
-     * A map of destinations to service names they belong to
+     * Map of destination JNDI names to service names
      */
-    private Map destinations = null;
+    private Map serviceJNDINameMapping = null;
+    /**
+     * Map of destinations to service names
+     */
+    private Map serviceDestinationMapping = null;
     /**
      * The JMS Sessions listening for messages
      */
@@ -124,7 +123,8 @@
     JMSConnectionFactory(String name, String jndiName) {
         this.name = name;
         this.jndiName = jndiName;
-        destinations = new HashMap();
+        serviceJNDINameMapping = new HashMap();
+        serviceDestinationMapping = new HashMap();
         properties = new Hashtable();
         jmsSessions = new HashMap();
     }
@@ -176,17 +176,24 @@
      * @param serviceName     the service to which it belongs
      */
     public void addDestination(String destinationJndi, String serviceName) {
-        destinations.put(destinationJndi, serviceName);
+        serviceJNDINameMapping.put(destinationJndi, serviceName);
+        serviceDestinationMapping.put(getDestinationName(destinationJndi), serviceName);
     }
 
     /**
      * Remove listen destination on this connection factory
      *
      * @param destinationJndi the JMS destination to be removed
+     * @throws if an error occurs trying to stop listening for messages before removal
      */
     public void removeDestination(String destinationJndi) throws JMSException {
+        // find and save provider specific Destination name before we delete
+        String providerSpecificDestination = getDestinationName(destinationJndi);
         stoplistenOnDestination(destinationJndi);
-        destinations.remove(destinationJndi);
+        serviceJNDINameMapping.remove(destinationJndi);
+        if (providerSpecificDestination != null) {
+            serviceDestinationMapping.remove(providerSpecificDestination);
+        }
     }
 
     /**
@@ -227,12 +234,12 @@
     }
 
     /**
-     * Get the list of destinations associated with this connection factory
+     * Get the list of destinations (JNDI) associated with this connection factory
      *
      * @return destinations to service maping
      */
     public Map getDestinations() {
-        return destinations;
+        return serviceJNDINameMapping;
     }
 
     /**
@@ -271,7 +278,7 @@
             }
         }
 
-        Iterator iter = destinations.keySet().iterator();
+        Iterator iter = serviceJNDINameMapping.keySet().iterator();
         while (iter.hasNext()) {
             String destinationJndi = (String) iter.next();
             listenOnDestination(destinationJndi);
@@ -306,7 +313,7 @@
             log.warn("Error looking up destination : " + destinationJndi, e);
             // mark service as faulty
             JMSUtils.markServiceAsFaulty(
-                    (String) destinations.get(destinationJndi),
+                    (String) serviceJNDINameMapping.get(destinationJndi),
                     "Error looking up JMS destination : " + destinationJndi,
                     this.msgRcvr.getAxisConf().getAxisConfiguration());
         }
@@ -334,7 +341,7 @@
      */
     public String getServiceNameForDestination(String destination) {
 
-        return (String) destinations.get(destination);
+        return (String) serviceJNDINameMapping.get(destination);
     }
 
     /**
@@ -346,6 +353,34 @@
         } catch (JMSException e) {
             log.warn("Error shutting down connection factory : " + name, e);
         }
+    }
+
+    /**
+     * Return the provider specific Destination name if any for the destination with the given
+     * JNDI name
+     * @param destinationJndi the JNDI name of the destination
+     * @return the provider specific Destination name or null if cannot be found
+     */
+    public String getDestinationName(String destinationJndi) {
+        try {
+            Destination destination = (Destination) context.lookup(destinationJndi);
+            if (destination != null && destination instanceof Queue) {
+                return ((Queue) destination).getQueueName();
+            } else if (destination != null && destination instanceof Topic) {
+                return ((Topic) destination).getTopicName();
+            }
+        } catch (JMSException e) {
+            log.warn("Error reading provider specific JMS destination name for destination " +
+                "with JNDI name : " + destinationJndi, e);
+        } catch (NamingException e) {
+            log.warn("Error looking up destination with JNDI name : " + destinationJndi +
+                " to map its corresponding provider specific Destination name");
+        }
+        return null;
+    }
+
+    public String getServiceByDestination(String destinationName) {
+        return (String) serviceDestinationMapping.get(destinationName);
     }
 
     private void handleException(String msg) throws AxisJMSException {

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java?view=diff&rev=522090&r1=522089&r2=522090
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java Sat Mar 24 11:54:56 2007
@@ -19,6 +19,7 @@
 import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.RelatesTo;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
@@ -130,7 +131,7 @@
                 destinationName = ((Topic) dest).getTopicName();
             }
 
-            String serviceName = jmsConFac.getServiceNameForDestination(destinationName);
+            String serviceName = jmsConFac.getServiceByDestination(destinationName);
 
             // hack to get around the crazy Active MQ dynamic queue and topic issues
             if (serviceName == null) {
@@ -165,6 +166,7 @@
 
             msgContext.setServerSide(true);
             msgContext.setServiceGroupContextId(UUIDGenerator.getUUID());
+            msgContext.setMessageID(message.getJMSMessageID());
 
             String soapAction = JMSUtils.getProperty(message, JMSConstants.SOAPACTION);
             if (soapAction != null) {
@@ -173,6 +175,14 @@
 
             msgContext.setEnvelope(
                     JMSUtils.getSOAPEnvelope(message, msgContext, in));
+
+            // set correlation id
+            String correlationId = message.getJMSCorrelationID();
+            if (correlationId != null && correlationId.length() > 0) {
+                msgContext.setProperty(JMSConstants.JMS_COORELATION_ID, correlationId);
+                msgContext.setRelationships(
+                    new RelatesTo[] { new RelatesTo(correlationId) });
+            }
 
             return msgContext;
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSSender.java?view=diff&rev=522090&r1=522089&r2=522090
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSSender.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSSender.java Sat Mar 24 11:54:56 2007
@@ -243,6 +243,10 @@
 
         // set the JMS correlation ID if specified
         String correlationId = getProperty(msgContext, JMSConstants.JMS_COORELATION_ID);
+        if (correlationId == null && msgContext.getRelatesTo() != null) {
+            correlationId = msgContext.getRelatesTo().getValue();
+        }
+
         if (correlationId != null) {
             message.setJMSCorrelationID(correlationId);
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org