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