Author: dkulp
Date: Fri Jan 30 18:32:06 2009
New Revision: 739367
URL: http://svn.apache.org/viewvc?rev=739367&view=rev
Log:
When using old style config, delay creating ConnectionFactory to allow
programatic changing
Modified:
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
Modified:
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java?rev=739367&r1=739366&r2=739367&view=diff
==============================================================================
---
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
(original)
+++
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
Fri Jan 30 18:32:06 2009
@@ -20,12 +20,17 @@
import javax.jms.ConnectionFactory;
import javax.jms.Message;
+import javax.naming.NamingException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.core.task.TaskExecutor;
+import org.springframework.jms.connection.SingleConnectionFactory;
+import org.springframework.jms.connection.SingleConnectionFactory102;
+import
org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.support.destination.DestinationResolver;
+import org.springframework.jndi.JndiTemplate;
import org.springframework.transaction.PlatformTransactionManager;
public class JMSConfiguration implements InitializingBean {
@@ -43,7 +48,6 @@
private PlatformTransactionManager transactionManager;
private TaskExecutor taskExecutor;
private boolean useJms11 = DEFAULT_USEJMS11;
- private boolean useJndi;
private boolean messageIdEnabled = true;
private boolean messageTimestampEnabled = true;
private boolean pubSubNoLocal;
@@ -53,6 +57,15 @@
private int priority = Message.DEFAULT_PRIORITY;
private long timeToLive = Message.DEFAULT_TIME_TO_LIVE;
private boolean sessionTransacted;
+
+ //Stuff for JNDI based and old configs
+ private boolean useJndi;
+ private JndiTemplate jndiTemplate;
+ private String jndiConnectionFactoryName;
+ private String connectionUserName;
+ private String connectionPassword;
+ private Boolean reconnectOnException;
+
private int concurrentConsumers = 1;
private int maxConcurrentConsumers = 1;
@@ -214,9 +227,46 @@
}
}
+
public ConnectionFactory getConnectionFactory() {
+ if (connectionFactory == null && jndiTemplate != null &&
jndiConnectionFactoryName != null) {
+ connectionFactory = getConnectionFactoryFromJndi();
+ }
return connectionFactory;
}
+ private ConnectionFactory getConnectionFactoryFromJndi() {
+
+ String connectionFactoryName = getJndiConnectionFactoryName();
+ String userName = getConnectionUserName();
+ String password = getConnectionPassword();
+
+
+ if (connectionFactoryName == null) {
+ return null;
+ }
+ try {
+ ConnectionFactory cf =
(ConnectionFactory)jndiTemplate.lookup(connectionFactoryName);
+ UserCredentialsConnectionFactoryAdapter uccf = new
UserCredentialsConnectionFactoryAdapter();
+ uccf.setUsername(userName);
+ uccf.setPassword(password);
+ uccf.setTargetConnectionFactory(cf);
+
+ if (this.useJms11) {
+ SingleConnectionFactory scf = new
SingleConnectionFactory(uccf);
+ if (isSetReconnectOnException() && isReconnectOnException()) {
+ scf.setReconnectOnException(true);
+ }
+ return scf;
+ }
+ SingleConnectionFactory102 scf = new
SingleConnectionFactory102(uccf, pubSubDomain);
+ if (isSetReconnectOnException() && isReconnectOnException()) {
+ scf.setReconnectOnException(true);
+ }
+ return scf;
+ } catch (NamingException e) {
+ throw new RuntimeException(e);
+ }
+ }
@Required
public void setConnectionFactory(ConnectionFactory connectionFactory) {
@@ -327,4 +377,47 @@
this.maxConcurrentTasks = maxConcurrentTasks;
}
+ public void setJndiTemplate(JndiTemplate jndiTemplate) {
+ this.jndiTemplate = jndiTemplate;
+ }
+
+ public JndiTemplate getJndiTemplate() {
+ return jndiTemplate;
+ }
+
+ public String getJndiConnectionFactoryName() {
+ return jndiConnectionFactoryName;
+ }
+
+ public void setJndiConnectionFactoryName(String jndiConnectionFactoryName)
{
+ this.jndiConnectionFactoryName = jndiConnectionFactoryName;
+ }
+
+ public String getConnectionUserName() {
+ return connectionUserName;
+ }
+
+ public void setConnectionUserName(String connectionUserName) {
+ this.connectionUserName = connectionUserName;
+ }
+
+ public String getConnectionPassword() {
+ return connectionPassword;
+ }
+
+ public void setConnectionPassword(String connectionPassword) {
+ this.connectionPassword = connectionPassword;
+ }
+
+ public boolean isSetReconnectOnException() {
+ return reconnectOnException != null;
+ }
+ public boolean isReconnectOnException() {
+ return reconnectOnException;
+ }
+
+ public void setReconnectOnException(boolean reconnectOnException) {
+ this.reconnectOnException = reconnectOnException;
+ }
+
}
Modified:
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java?rev=739367&r1=739366&r2=739367&view=diff
==============================================================================
---
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
(original)
+++
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOldConfigHolder.java
Fri Jan 30 18:32:06 2009
@@ -23,16 +23,10 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.jms.ConnectionFactory;
-import javax.naming.NamingException;
-
import org.apache.cxf.Bus;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.configuration.Configurer;
import org.apache.cxf.service.model.EndpointInfo;
-import org.springframework.jms.connection.SingleConnectionFactory;
-import org.springframework.jms.connection.SingleConnectionFactory102;
-import
org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter;
import org.springframework.jms.support.destination.JndiDestinationResolver;
import org.springframework.jndi.JndiTemplate;
@@ -47,43 +41,6 @@
private ServerConfig serverConfig;
private ServerBehaviorPolicyType serverBehavior;
- private ConnectionFactory getConnectionFactoryFromJndi(JndiTemplate jt,
- boolean
pubSubDomain) {
-
- String connectionFactoryName = address.getJndiConnectionFactoryName();
- String userName = address.getConnectionUserName();
- String password = address.getConnectionPassword();
- boolean use11 = address.isSetUseJms11()
- ? address.isUseJms11() : JMSConfiguration.DEFAULT_USEJMS11;
-
-
- if (connectionFactoryName == null) {
- return null;
- }
- try {
- ConnectionFactory connectionFactory =
(ConnectionFactory)jt.lookup(connectionFactoryName);
- UserCredentialsConnectionFactoryAdapter uccf = new
UserCredentialsConnectionFactoryAdapter();
- uccf.setUsername(userName);
- uccf.setPassword(password);
- uccf.setTargetConnectionFactory(connectionFactory);
-
- if (use11) {
- SingleConnectionFactory cf = new SingleConnectionFactory(uccf);
- if (address.isSetReconnectOnException() &&
address.isReconnectOnException()) {
- cf.setReconnectOnException(true);
- }
- return cf;
- }
- SingleConnectionFactory102 cf = new
SingleConnectionFactory102(uccf, pubSubDomain);
- if (address.isSetReconnectOnException() &&
address.isReconnectOnException()) {
- cf.setReconnectOnException(true);
- }
- return cf;
- } catch (NamingException e) {
- throw new RuntimeException(e);
- }
- }
-
public JMSConfiguration createJMSConfigurationFromEndpointInfo(Bus bus,
EndpointInfo endpointInfo,
boolean
isConduit) {
@@ -120,8 +77,13 @@
pubSubDomain = DestinationStyleType.TOPIC ==
address.getDestinationStyle();
}
if (jmsConfig.getConnectionFactory() == null) {
- ConnectionFactory cf = getConnectionFactoryFromJndi(jt,
pubSubDomain);
- jmsConfig.setConnectionFactory(cf);
+
jmsConfig.setJndiConnectionFactoryName(address.getJndiConnectionFactoryName());
+ jmsConfig.setJndiTemplate(jt);
+
jmsConfig.setConnectionUserName(address.getConnectionUserName());
+
jmsConfig.setConnectionPassword(address.getConnectionPassword());
+ if (address.isSetReconnectOnException()) {
+
jmsConfig.setReconnectOnException(address.isReconnectOnException());
+ }
}
jmsConfig.setDurableSubscriptionName(serverBehavior.getDurableSubscriberName());
jmsConfig.setExplicitQosEnabled(true);