Fix a few JTA issues

- Search for ConnectionFactories in java:/JmsXA and
  java:/XAConnectionFactory
- Remove javax.transaction:jta managed dependency
- Removed unused JtaProperties argument

Fixes gh-947
This commit is contained in:
Phillip Webb
2014-08-27 09:24:45 -07:00
parent 1024d5d42a
commit ff870de0f0
5 changed files with 23 additions and 15 deletions

View File

@@ -16,6 +16,8 @@
package org.springframework.boot.autoconfigure.jms;
import java.util.Arrays;
import javax.jms.ConnectionFactory;
import javax.naming.NamingException;
@@ -25,6 +27,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnJndi;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.jndi.JndiLocatorDelegate;
/**
@@ -36,12 +39,26 @@ import org.springframework.jndi.JndiLocatorDelegate;
@Configuration
@AutoConfigureBefore(JmsAutoConfiguration.class)
@ConditionalOnMissingBean(ConnectionFactory.class)
@ConditionalOnJndi("java:/JmsXA")
@ConditionalOnJndi({ "java:/JmsXA", "java:/XAConnectionFactory" })
public class JndiConnectionFactoryAutoConfiguration {
@Bean
public ConnectionFactory connectionFactory() throws NamingException {
return new JndiLocatorDelegate().lookup("java:/JmsXA", ConnectionFactory.class);
for (String name : getJndiLocations()) {
try {
return new JndiLocatorDelegate().lookup(name, ConnectionFactory.class);
}
catch (NamingException ex) {
// Swallow and continue
}
}
throw new IllegalStateException(
"Unable to find ConnectionFactory in JNDI locations "
+ Arrays.asList(getJndiLocations()));
}
private String[] getJndiLocations() {
return AnnotationUtils.getAnnotation(getClass(), ConditionalOnJndi.class).value();
}
}

View File

@@ -57,7 +57,7 @@ class BitronixJtaConfiguration {
@Bean
@ConditionalOnMissingBean
@ConfigurationProperties(prefix = JtaProperties.PREFIX)
public bitronix.tm.Configuration bitronixConfiguration(JtaProperties xxx) {
public bitronix.tm.Configuration bitronixConfiguration() {
bitronix.tm.Configuration config = TransactionManagerServices.getConfiguration();
config.setServerId("spring-boot-jta-bitronix");
File logBaseDir = getLogBaseDir();