You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by as...@apache.org on 2007/03/29 19:53:45 UTC
svn commit: r523781 - in
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2:
Constants.java transport/jms/JMSConnectionFactory.java
transport/jms/JMSConstants.java transport/jms/JMSMessageReceiver.java
transport/jms/JMSSender.java
Author: asankha
Date: Thu Mar 29 10:53:45 2007
New Revision: 523781
URL: http://svn.apache.org/viewvc?view=rev&rev=523781
Log:
Fix AXIS2-2434 and AXIS2-2266
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
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/JMSConstants.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/kernel/src/org/apache/axis2/Constants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java?view=diff&rev=523781&r1=523780&r2=523781
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java Thu Mar 29 10:53:45 2007
@@ -266,8 +266,6 @@
public static final String CONTENT_TYPE = "ContentType";
public static final String CONTENT_TYPE_OF_FAULT = "ContentTypeOfFault";
- public static final String IS_USING_SEPARATE_LISTENER = "IsUsingSeparateListener";
-
public static final String CONFIG_CONTEXT_TIMOUT_INTERVAL = "ConfigContextTimeoutInterval";
public static final String TRANSPORT_IN_URL = "TransportInURL";
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=523781&r1=523780&r2=523781
==============================================================================
--- 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 Thu Mar 29 10:53:45 2007
@@ -17,6 +17,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.axis2.addressing.EndpointReference;
import javax.jms.*;
import javax.naming.Context;
@@ -176,8 +177,38 @@
* @param serviceName the service to which it belongs
*/
public void addDestination(String destinationJndi, String serviceName) {
+
serviceJNDINameMapping.put(destinationJndi, serviceName);
- serviceDestinationMapping.put(getDestinationName(destinationJndi), serviceName);
+ String destinationName = getDestinationName(destinationJndi);
+ log.warn("JMS Destination with JNDI name : " + destinationJndi + " does not exist");
+
+ Connection con = null;
+ try {
+ con = conFactory.createConnection();
+ Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Queue queue = session.createQueue(destinationJndi);
+ destinationName = queue.getQueueName();
+ log.warn("JMS Destination with JNDI name : " + destinationJndi + " created");
+
+ } catch (JMSException e) {
+ log.error("Unable to create a Destination with JNDI name : " + destinationJndi, e);
+ // mark service as faulty
+ JMSUtils.markServiceAsFaulty(
+ (String) serviceJNDINameMapping.get(destinationJndi),
+ "Error looking up JMS destination : " + destinationJndi,
+ msgRcvr.getAxisConf().getAxisConfiguration());
+
+ } finally {
+ if (con != null) {
+ try {
+ con.close();
+ } catch (JMSException ignore) {}
+ }
+ }
+
+ serviceDestinationMapping.put(destinationName, serviceName);
+ log.info("Mapping JNDI name : " + destinationJndi + " and JMS Destination name : " +
+ destinationName + " against service : " + serviceName);
}
/**
@@ -377,6 +408,28 @@
" to map its corresponding provider specific Destination name");
}
return null;
+ }
+
+ /**
+ * Return the EPR for the JMS Destination with the given JNDI name and using
+ * this connection factory
+ * @param destination the JNDI name of the JMS Destionation
+ * @return the EPR
+ */
+ public EndpointReference getEPRForDestination(String destination) {
+
+ StringBuffer sb = new StringBuffer();
+ sb.append(JMSConstants.JMS_PREFIX).append(destination);
+ sb.append("?").append(JMSConstants.CONFAC_JNDI_NAME_PARAM).
+ append("=").append(getJndiName());
+ Iterator props = getProperties().keySet().iterator();
+ while (props.hasNext()) {
+ String key = (String) props.next();
+ String value = (String) getProperties().get(key);
+ sb.append("&").append(key).append("=").append(value);
+ }
+
+ return new EndpointReference(sb.toString());
}
public String getServiceByDestination(String destinationName) {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java?view=diff&rev=523781&r1=523780&r2=523781
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java Thu Mar 29 10:53:45 2007
@@ -28,9 +28,14 @@
public static final String JMS_PREFIX = "jms:/";
/**
- * The Parameter name indicating a JMS destination
+ * The Parameter name indicating a JMS destination for requests
*/
public static final String DEST_PARAM = "transport.jms.Destination";
+
+ /**
+ * The Parameter name indicating the response JMS destination
+ */
+ public static final String REPLY_PARAM = "transport.jms.ReplyDestination";
/**
* The Parameter name indicating the JMS destination type
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=523781&r1=523780&r2=523781
==============================================================================
--- 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 Thu Mar 29 10:53:45 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.description.Parameter;
import org.apache.axis2.addressing.RelatesTo;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ContextFactory;
@@ -101,8 +102,14 @@
public void onMessage(Message message) {
// directly create a new worker and delegate processing
try {
- log.debug("Received JMS message to destination : " +
- message.getJMSDestination());
+ if (log.isDebugEnabled()) {
+ StringBuffer sb = new StringBuffer();
+ sb.append("Received JMS message to destination : " + message.getJMSDestination());
+ sb.append("\nMessage ID : " + message.getJMSMessageID());
+ sb.append("\nCorrelation ID : " + message.getJMSCorrelationID());
+ sb.append("\nReplyTo ID : " + message.getJMSReplyTo());
+ log.debug(sb.toString());
+ }
} catch (JMSException e) {
e.printStackTrace();
}
@@ -168,6 +175,19 @@
msgContext.setServerSide(true);
msgContext.setServiceGroupContextId(UUIDGenerator.getUUID());
msgContext.setMessageID(message.getJMSMessageID());
+
+ Destination replyTo = message.getJMSReplyTo();
+ String jndiDestinationName = null;
+ if (replyTo == null) {
+ Parameter param = msgContext.getAxisService().getParameter(JMSConstants.REPLY_PARAM);
+ if (param != null && param.getValue() != null) {
+ jndiDestinationName = (String) param.getValue();
+ }
+ }
+
+ if (jndiDestinationName != null) {
+ msgContext.setReplyTo(jmsConFac.getEPRForDestination(jndiDestinationName));
+ }
String soapAction = JMSUtils.getProperty(message, JMSConstants.SOAPACTION);
if (soapAction != null) {
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=523781&r1=523780&r2=523781
==============================================================================
--- 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 Thu Mar 29 10:53:45 2007
@@ -22,6 +22,8 @@
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.description.WSDL2Constants;
+import org.apache.axis2.description.Parameter;
import org.apache.axis2.handlers.AbstractHandler;
import org.apache.axis2.transport.TransportSender;
import org.apache.commons.logging.Log;
@@ -38,8 +40,13 @@
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.xml.stream.XMLStreamException;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.naming.Context;
+import javax.naming.NameNotFoundException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.util.Hashtable;
/**
* The TransportSender for JMS
@@ -83,17 +90,6 @@
msgContext.getProperty(Constants.OUT_TRANSPORT_INFO);
}
- // should we wait and listen for a response?
- boolean waitForResponse = false;
-
- Object seprLisn = msgContext.getProperty(
- Constants.Configuration.IS_USING_SEPARATE_LISTENER);
- if (Boolean.TRUE.equals(seprLisn)) {
- waitForResponse = false;
- } else if (!msgContext.isServerSide()) {
- waitForResponse = !msgContext.getOptions().isUseSeparateListener();
- }
-
// get the ConnectionFactory to be used for the send
ConnectionFactory connectionFac = transportInfo.getConnectionFactory();
@@ -119,14 +115,45 @@
MessageProducer producer = session.createProducer(dest);
Destination replyDest = null;
+ boolean waitForResponse =
+ msgContext.getOperationContext() != null &&
+ WSDL2Constants.MEP_URI_OUT_IN.equals(
+ msgContext.getOperationContext().getAxisOperation().getMessageExchangePattern());
+
if (waitForResponse) {
- try {
- // create temporary queue to receive reply
- replyDest = session.createTemporaryQueue();
- message.setJMSReplyTo(replyDest);
- } catch (JMSException e) {
- handleException("Error creating temporary queue for response");
+ String replyToJNDIName = (String) msgContext.getProperty(JMSConstants.REPLY_PARAM);
+ if (replyToJNDIName != null && replyToJNDIName.length() > 0) {
+ Context context = null;
+ Hashtable props = JMSUtils.getProperties(targetAddress);
+ try {
+ context = new InitialContext(props);
+ } catch (NamingException e) {
+ handleException("Could not get the initial context", e);
+ }
+
+ try {
+ replyDest = (Destination) context.lookup(replyToJNDIName);
+
+ } catch (NameNotFoundException e) {
+ log.warn("Cannot get or lookup JMS response destination : " +
+ replyToJNDIName + " : " + e.getMessage() +
+ ". Attempting to create a Queue named : " + replyToJNDIName);
+ replyDest = session.createQueue(replyToJNDIName);
+
+ } catch (NamingException e) {
+ handleException("Cannot get JMS response destination : " +
+ replyToJNDIName + " : ", e);
+ }
+
+ } else {
+ try {
+ // create temporary queue to receive reply
+ replyDest = session.createTemporaryQueue();
+ } catch (JMSException e) {
+ handleException("Error creating temporary queue for response");
+ }
}
+ message.setJMSReplyTo(replyDest);
}
try {
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org
Re: svn commit: r523781 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2:
Constants.java transport/jms/JMSConnectionFactory.java transport/jms/JMSConstants.java
transport/jms/JMSMessageReceiver.java transport/jms/JMSSender.java
Posted by Deepal Jayasinghe <de...@opensource.lk>.
Hi Asankha;
Dont we need to commit this change to 1.2 branch ?
Thanks
Deepal
asankha@apache.org wrote:
>Author: asankha
>Date: Thu Mar 29 10:53:45 2007
>New Revision: 523781
>
>URL: http://svn.apache.org/viewvc?view=rev&rev=523781
>Log:
>Fix AXIS2-2434 and AXIS2-2266
>
>Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
> 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/JMSConstants.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/kernel/src/org/apache/axis2/Constants.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java?view=diff&rev=523781&r1=523780&r2=523781
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java Thu Mar 29 10:53:45 2007
>@@ -266,8 +266,6 @@
> public static final String CONTENT_TYPE = "ContentType";
> public static final String CONTENT_TYPE_OF_FAULT = "ContentTypeOfFault";
>
>- public static final String IS_USING_SEPARATE_LISTENER = "IsUsingSeparateListener";
>-
> public static final String CONFIG_CONTEXT_TIMOUT_INTERVAL = "ConfigContextTimeoutInterval";
>
> public static final String TRANSPORT_IN_URL = "TransportInURL";
>
>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=523781&r1=523780&r2=523781
>==============================================================================
>--- 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 Thu Mar 29 10:53:45 2007
>@@ -17,6 +17,7 @@
>
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
>+import org.apache.axis2.addressing.EndpointReference;
>
> import javax.jms.*;
> import javax.naming.Context;
>@@ -176,8 +177,38 @@
> * @param serviceName the service to which it belongs
> */
> public void addDestination(String destinationJndi, String serviceName) {
>+
> serviceJNDINameMapping.put(destinationJndi, serviceName);
>- serviceDestinationMapping.put(getDestinationName(destinationJndi), serviceName);
>+ String destinationName = getDestinationName(destinationJndi);
>+ log.warn("JMS Destination with JNDI name : " + destinationJndi + " does not exist");
>+
>+ Connection con = null;
>+ try {
>+ con = conFactory.createConnection();
>+ Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
>+ Queue queue = session.createQueue(destinationJndi);
>+ destinationName = queue.getQueueName();
>+ log.warn("JMS Destination with JNDI name : " + destinationJndi + " created");
>+
>+ } catch (JMSException e) {
>+ log.error("Unable to create a Destination with JNDI name : " + destinationJndi, e);
>+ // mark service as faulty
>+ JMSUtils.markServiceAsFaulty(
>+ (String) serviceJNDINameMapping.get(destinationJndi),
>+ "Error looking up JMS destination : " + destinationJndi,
>+ msgRcvr.getAxisConf().getAxisConfiguration());
>+
>+ } finally {
>+ if (con != null) {
>+ try {
>+ con.close();
>+ } catch (JMSException ignore) {}
>+ }
>+ }
>+
>+ serviceDestinationMapping.put(destinationName, serviceName);
>+ log.info("Mapping JNDI name : " + destinationJndi + " and JMS Destination name : " +
>+ destinationName + " against service : " + serviceName);
> }
>
> /**
>@@ -377,6 +408,28 @@
> " to map its corresponding provider specific Destination name");
> }
> return null;
>+ }
>+
>+ /**
>+ * Return the EPR for the JMS Destination with the given JNDI name and using
>+ * this connection factory
>+ * @param destination the JNDI name of the JMS Destionation
>+ * @return the EPR
>+ */
>+ public EndpointReference getEPRForDestination(String destination) {
>+
>+ StringBuffer sb = new StringBuffer();
>+ sb.append(JMSConstants.JMS_PREFIX).append(destination);
>+ sb.append("?").append(JMSConstants.CONFAC_JNDI_NAME_PARAM).
>+ append("=").append(getJndiName());
>+ Iterator props = getProperties().keySet().iterator();
>+ while (props.hasNext()) {
>+ String key = (String) props.next();
>+ String value = (String) getProperties().get(key);
>+ sb.append("&").append(key).append("=").append(value);
>+ }
>+
>+ return new EndpointReference(sb.toString());
> }
>
> public String getServiceByDestination(String destinationName) {
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java?view=diff&rev=523781&r1=523780&r2=523781
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java Thu Mar 29 10:53:45 2007
>@@ -28,9 +28,14 @@
> public static final String JMS_PREFIX = "jms:/";
>
> /**
>- * The Parameter name indicating a JMS destination
>+ * The Parameter name indicating a JMS destination for requests
> */
> public static final String DEST_PARAM = "transport.jms.Destination";
>+
>+ /**
>+ * The Parameter name indicating the response JMS destination
>+ */
>+ public static final String REPLY_PARAM = "transport.jms.ReplyDestination";
>
> /**
> * The Parameter name indicating the JMS destination type
>
>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=523781&r1=523780&r2=523781
>==============================================================================
>--- 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 Thu Mar 29 10:53:45 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.description.Parameter;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ContextFactory;
>@@ -101,8 +102,14 @@
> public void onMessage(Message message) {
> // directly create a new worker and delegate processing
> try {
>- log.debug("Received JMS message to destination : " +
>- message.getJMSDestination());
>+ if (log.isDebugEnabled()) {
>+ StringBuffer sb = new StringBuffer();
>+ sb.append("Received JMS message to destination : " + message.getJMSDestination());
>+ sb.append("\nMessage ID : " + message.getJMSMessageID());
>+ sb.append("\nCorrelation ID : " + message.getJMSCorrelationID());
>+ sb.append("\nReplyTo ID : " + message.getJMSReplyTo());
>+ log.debug(sb.toString());
>+ }
> } catch (JMSException e) {
> e.printStackTrace();
> }
>@@ -168,6 +175,19 @@
> msgContext.setServerSide(true);
> msgContext.setServiceGroupContextId(UUIDGenerator.getUUID());
> msgContext.setMessageID(message.getJMSMessageID());
>+
>+ Destination replyTo = message.getJMSReplyTo();
>+ String jndiDestinationName = null;
>+ if (replyTo == null) {
>+ Parameter param = msgContext.getAxisService().getParameter(JMSConstants.REPLY_PARAM);
>+ if (param != null && param.getValue() != null) {
>+ jndiDestinationName = (String) param.getValue();
>+ }
>+ }
>+
>+ if (jndiDestinationName != null) {
>+ msgContext.setReplyTo(jmsConFac.getEPRForDestination(jndiDestinationName));
>+ }
>
> String soapAction = JMSUtils.getProperty(message, JMSConstants.SOAPACTION);
> if (soapAction != null) {
>
>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=523781&r1=523780&r2=523781
>==============================================================================
>--- 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 Thu Mar 29 10:53:45 2007
>@@ -22,6 +22,8 @@
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.TransportOutDescription;
>+import org.apache.axis2.description.WSDL2Constants;
>+import org.apache.axis2.description.Parameter;
> import org.apache.axis2.handlers.AbstractHandler;
> import org.apache.axis2.transport.TransportSender;
> import org.apache.commons.logging.Log;
>@@ -38,8 +40,13 @@
> import javax.jms.Session;
> import javax.jms.TextMessage;
> import javax.xml.stream.XMLStreamException;
>+import javax.naming.InitialContext;
>+import javax.naming.NamingException;
>+import javax.naming.Context;
>+import javax.naming.NameNotFoundException;
> import java.io.ByteArrayOutputStream;
> import java.io.IOException;
>+import java.util.Hashtable;
>
> /**
> * The TransportSender for JMS
>@@ -83,17 +90,6 @@
> msgContext.getProperty(Constants.OUT_TRANSPORT_INFO);
> }
>
>- // should we wait and listen for a response?
>- boolean waitForResponse = false;
>-
>- Object seprLisn = msgContext.getProperty(
>- Constants.Configuration.IS_USING_SEPARATE_LISTENER);
>- if (Boolean.TRUE.equals(seprLisn)) {
>- waitForResponse = false;
>- } else if (!msgContext.isServerSide()) {
>- waitForResponse = !msgContext.getOptions().isUseSeparateListener();
>- }
>-
> // get the ConnectionFactory to be used for the send
> ConnectionFactory connectionFac = transportInfo.getConnectionFactory();
>
>@@ -119,14 +115,45 @@
> MessageProducer producer = session.createProducer(dest);
> Destination replyDest = null;
>
>+ boolean waitForResponse =
>+ msgContext.getOperationContext() != null &&
>+ WSDL2Constants.MEP_URI_OUT_IN.equals(
>+ msgContext.getOperationContext().getAxisOperation().getMessageExchangePattern());
>+
> if (waitForResponse) {
>- try {
>- // create temporary queue to receive reply
>- replyDest = session.createTemporaryQueue();
>- message.setJMSReplyTo(replyDest);
>- } catch (JMSException e) {
>- handleException("Error creating temporary queue for response");
>+ String replyToJNDIName = (String) msgContext.getProperty(JMSConstants.REPLY_PARAM);
>+ if (replyToJNDIName != null && replyToJNDIName.length() > 0) {
>+ Context context = null;
>+ Hashtable props = JMSUtils.getProperties(targetAddress);
>+ try {
>+ context = new InitialContext(props);
>+ } catch (NamingException e) {
>+ handleException("Could not get the initial context", e);
>+ }
>+
>+ try {
>+ replyDest = (Destination) context.lookup(replyToJNDIName);
>+
>+ } catch (NameNotFoundException e) {
>+ log.warn("Cannot get or lookup JMS response destination : " +
>+ replyToJNDIName + " : " + e.getMessage() +
>+ ". Attempting to create a Queue named : " + replyToJNDIName);
>+ replyDest = session.createQueue(replyToJNDIName);
>+
>+ } catch (NamingException e) {
>+ handleException("Cannot get JMS response destination : " +
>+ replyToJNDIName + " : ", e);
>+ }
>+
>+ } else {
>+ try {
>+ // create temporary queue to receive reply
>+ replyDest = session.createTemporaryQueue();
>+ } catch (JMSException e) {
>+ handleException("Error creating temporary queue for response");
>+ }
> }
>+ message.setJMSReplyTo(replyDest);
> }
>
> try {
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
>For additional commands, e-mail: axis-cvs-help@ws.apache.org
>
>
>
>
>
--
Thanks,
Deepal
................................................................
"The highest tower is built one brick at a time"
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org
Re: svn commit: r523781 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2:
Constants.java transport/jms/JMSConnectionFactory.java transport/jms/JMSConstants.java
transport/jms/JMSMessageReceiver.java transport/jms/JMSSender.java
Posted by Deepal Jayasinghe <de...@opensource.lk>.
Hi Asankha;
Dont we need to commit this change to 1.2 branch ?
Thanks
Deepal
asankha@apache.org wrote:
>Author: asankha
>Date: Thu Mar 29 10:53:45 2007
>New Revision: 523781
>
>URL: http://svn.apache.org/viewvc?view=rev&rev=523781
>Log:
>Fix AXIS2-2434 and AXIS2-2266
>
>Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
> 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/JMSConstants.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/kernel/src/org/apache/axis2/Constants.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java?view=diff&rev=523781&r1=523780&r2=523781
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java Thu Mar 29 10:53:45 2007
>@@ -266,8 +266,6 @@
> public static final String CONTENT_TYPE = "ContentType";
> public static final String CONTENT_TYPE_OF_FAULT = "ContentTypeOfFault";
>
>- public static final String IS_USING_SEPARATE_LISTENER = "IsUsingSeparateListener";
>-
> public static final String CONFIG_CONTEXT_TIMOUT_INTERVAL = "ConfigContextTimeoutInterval";
>
> public static final String TRANSPORT_IN_URL = "TransportInURL";
>
>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=523781&r1=523780&r2=523781
>==============================================================================
>--- 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 Thu Mar 29 10:53:45 2007
>@@ -17,6 +17,7 @@
>
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
>+import org.apache.axis2.addressing.EndpointReference;
>
> import javax.jms.*;
> import javax.naming.Context;
>@@ -176,8 +177,38 @@
> * @param serviceName the service to which it belongs
> */
> public void addDestination(String destinationJndi, String serviceName) {
>+
> serviceJNDINameMapping.put(destinationJndi, serviceName);
>- serviceDestinationMapping.put(getDestinationName(destinationJndi), serviceName);
>+ String destinationName = getDestinationName(destinationJndi);
>+ log.warn("JMS Destination with JNDI name : " + destinationJndi + " does not exist");
>+
>+ Connection con = null;
>+ try {
>+ con = conFactory.createConnection();
>+ Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
>+ Queue queue = session.createQueue(destinationJndi);
>+ destinationName = queue.getQueueName();
>+ log.warn("JMS Destination with JNDI name : " + destinationJndi + " created");
>+
>+ } catch (JMSException e) {
>+ log.error("Unable to create a Destination with JNDI name : " + destinationJndi, e);
>+ // mark service as faulty
>+ JMSUtils.markServiceAsFaulty(
>+ (String) serviceJNDINameMapping.get(destinationJndi),
>+ "Error looking up JMS destination : " + destinationJndi,
>+ msgRcvr.getAxisConf().getAxisConfiguration());
>+
>+ } finally {
>+ if (con != null) {
>+ try {
>+ con.close();
>+ } catch (JMSException ignore) {}
>+ }
>+ }
>+
>+ serviceDestinationMapping.put(destinationName, serviceName);
>+ log.info("Mapping JNDI name : " + destinationJndi + " and JMS Destination name : " +
>+ destinationName + " against service : " + serviceName);
> }
>
> /**
>@@ -377,6 +408,28 @@
> " to map its corresponding provider specific Destination name");
> }
> return null;
>+ }
>+
>+ /**
>+ * Return the EPR for the JMS Destination with the given JNDI name and using
>+ * this connection factory
>+ * @param destination the JNDI name of the JMS Destionation
>+ * @return the EPR
>+ */
>+ public EndpointReference getEPRForDestination(String destination) {
>+
>+ StringBuffer sb = new StringBuffer();
>+ sb.append(JMSConstants.JMS_PREFIX).append(destination);
>+ sb.append("?").append(JMSConstants.CONFAC_JNDI_NAME_PARAM).
>+ append("=").append(getJndiName());
>+ Iterator props = getProperties().keySet().iterator();
>+ while (props.hasNext()) {
>+ String key = (String) props.next();
>+ String value = (String) getProperties().get(key);
>+ sb.append("&").append(key).append("=").append(value);
>+ }
>+
>+ return new EndpointReference(sb.toString());
> }
>
> public String getServiceByDestination(String destinationName) {
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java?view=diff&rev=523781&r1=523780&r2=523781
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSConstants.java Thu Mar 29 10:53:45 2007
>@@ -28,9 +28,14 @@
> public static final String JMS_PREFIX = "jms:/";
>
> /**
>- * The Parameter name indicating a JMS destination
>+ * The Parameter name indicating a JMS destination for requests
> */
> public static final String DEST_PARAM = "transport.jms.Destination";
>+
>+ /**
>+ * The Parameter name indicating the response JMS destination
>+ */
>+ public static final String REPLY_PARAM = "transport.jms.ReplyDestination";
>
> /**
> * The Parameter name indicating the JMS destination type
>
>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=523781&r1=523780&r2=523781
>==============================================================================
>--- 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 Thu Mar 29 10:53:45 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.description.Parameter;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ContextFactory;
>@@ -101,8 +102,14 @@
> public void onMessage(Message message) {
> // directly create a new worker and delegate processing
> try {
>- log.debug("Received JMS message to destination : " +
>- message.getJMSDestination());
>+ if (log.isDebugEnabled()) {
>+ StringBuffer sb = new StringBuffer();
>+ sb.append("Received JMS message to destination : " + message.getJMSDestination());
>+ sb.append("\nMessage ID : " + message.getJMSMessageID());
>+ sb.append("\nCorrelation ID : " + message.getJMSCorrelationID());
>+ sb.append("\nReplyTo ID : " + message.getJMSReplyTo());
>+ log.debug(sb.toString());
>+ }
> } catch (JMSException e) {
> e.printStackTrace();
> }
>@@ -168,6 +175,19 @@
> msgContext.setServerSide(true);
> msgContext.setServiceGroupContextId(UUIDGenerator.getUUID());
> msgContext.setMessageID(message.getJMSMessageID());
>+
>+ Destination replyTo = message.getJMSReplyTo();
>+ String jndiDestinationName = null;
>+ if (replyTo == null) {
>+ Parameter param = msgContext.getAxisService().getParameter(JMSConstants.REPLY_PARAM);
>+ if (param != null && param.getValue() != null) {
>+ jndiDestinationName = (String) param.getValue();
>+ }
>+ }
>+
>+ if (jndiDestinationName != null) {
>+ msgContext.setReplyTo(jmsConFac.getEPRForDestination(jndiDestinationName));
>+ }
>
> String soapAction = JMSUtils.getProperty(message, JMSConstants.SOAPACTION);
> if (soapAction != null) {
>
>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=523781&r1=523780&r2=523781
>==============================================================================
>--- 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 Thu Mar 29 10:53:45 2007
>@@ -22,6 +22,8 @@
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.TransportOutDescription;
>+import org.apache.axis2.description.WSDL2Constants;
>+import org.apache.axis2.description.Parameter;
> import org.apache.axis2.handlers.AbstractHandler;
> import org.apache.axis2.transport.TransportSender;
> import org.apache.commons.logging.Log;
>@@ -38,8 +40,13 @@
> import javax.jms.Session;
> import javax.jms.TextMessage;
> import javax.xml.stream.XMLStreamException;
>+import javax.naming.InitialContext;
>+import javax.naming.NamingException;
>+import javax.naming.Context;
>+import javax.naming.NameNotFoundException;
> import java.io.ByteArrayOutputStream;
> import java.io.IOException;
>+import java.util.Hashtable;
>
> /**
> * The TransportSender for JMS
>@@ -83,17 +90,6 @@
> msgContext.getProperty(Constants.OUT_TRANSPORT_INFO);
> }
>
>- // should we wait and listen for a response?
>- boolean waitForResponse = false;
>-
>- Object seprLisn = msgContext.getProperty(
>- Constants.Configuration.IS_USING_SEPARATE_LISTENER);
>- if (Boolean.TRUE.equals(seprLisn)) {
>- waitForResponse = false;
>- } else if (!msgContext.isServerSide()) {
>- waitForResponse = !msgContext.getOptions().isUseSeparateListener();
>- }
>-
> // get the ConnectionFactory to be used for the send
> ConnectionFactory connectionFac = transportInfo.getConnectionFactory();
>
>@@ -119,14 +115,45 @@
> MessageProducer producer = session.createProducer(dest);
> Destination replyDest = null;
>
>+ boolean waitForResponse =
>+ msgContext.getOperationContext() != null &&
>+ WSDL2Constants.MEP_URI_OUT_IN.equals(
>+ msgContext.getOperationContext().getAxisOperation().getMessageExchangePattern());
>+
> if (waitForResponse) {
>- try {
>- // create temporary queue to receive reply
>- replyDest = session.createTemporaryQueue();
>- message.setJMSReplyTo(replyDest);
>- } catch (JMSException e) {
>- handleException("Error creating temporary queue for response");
>+ String replyToJNDIName = (String) msgContext.getProperty(JMSConstants.REPLY_PARAM);
>+ if (replyToJNDIName != null && replyToJNDIName.length() > 0) {
>+ Context context = null;
>+ Hashtable props = JMSUtils.getProperties(targetAddress);
>+ try {
>+ context = new InitialContext(props);
>+ } catch (NamingException e) {
>+ handleException("Could not get the initial context", e);
>+ }
>+
>+ try {
>+ replyDest = (Destination) context.lookup(replyToJNDIName);
>+
>+ } catch (NameNotFoundException e) {
>+ log.warn("Cannot get or lookup JMS response destination : " +
>+ replyToJNDIName + " : " + e.getMessage() +
>+ ". Attempting to create a Queue named : " + replyToJNDIName);
>+ replyDest = session.createQueue(replyToJNDIName);
>+
>+ } catch (NamingException e) {
>+ handleException("Cannot get JMS response destination : " +
>+ replyToJNDIName + " : ", e);
>+ }
>+
>+ } else {
>+ try {
>+ // create temporary queue to receive reply
>+ replyDest = session.createTemporaryQueue();
>+ } catch (JMSException e) {
>+ handleException("Error creating temporary queue for response");
>+ }
> }
>+ message.setJMSReplyTo(replyDest);
> }
>
> try {
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
>For additional commands, e-mail: axis-cvs-help@ws.apache.org
>
>
>
>
>
--
Thanks,
Deepal
................................................................
"The highest tower is built one brick at a time"
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org