配置JTA数据源JBoss的8(WildFly)

问题描述:

所以,我看了几遍,如果您使用的是Java EE容器,你不需要在PARAMS为了能够使用JNDI环境添加到InitialContext配置JTA数据源JBoss的8(WildFly)

所以,我想这一点:

@Bean 
    public DataSource dataSource() { 
     JndiDataSourceLookup jndiDataSourceLookup = new JndiDataSourceLookup(); 
     return jndiDataSourceLookup.getDataSource("java:global/ExpensesDataSource"); 
    } 

但是,使用JNDI像这给了我一个NoInitialContextException,告诉我指定环境PARAMS检索数据源。现在

,好吧,看来我错误地认为它会工作那么完美,所以我想取回这样的数据源:

@Bean 
    public DataSource dataSource() { 
     Properties jndiProperties = new Properties(); 
     jndiProperties.setProperty(Context.PROVIDER_URL, "jnp://localhost:1099"); 
     jndiProperties.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); 
     jndiProperties.put("java.naming.factory.url.pkgs", "org.jboss.naming.org.jnp.interfaces"); 
     JndiDataSourceLookup jndiDataSourceLookup = new JndiDataSourceLookup(); 
     jndiDataSourceLookup.setJndiEnvironment(jndiProperties); 
     return jndiDataSourceLookup.getDataSource("java:global/ExpensesDataSource"); 
    } 

但是这给了我一个javax.naming.CommunicationException: Failed to connect to server localhost:1099

我已经也尝试使用localhost:1099localhost,他们都没有工作。

所以我的问题是:我甚至需要指定这些属性,因为8的JBoss是一个Java EE容器,据我所知。如果是这样,我需要在这里指定什么提供商网址?

如果使用javax.naming.InitialContext中,你并不需要指定环境参数,可以就像你说的。例如:

InitialContext ctx = new InitialContext(); 
DataSource ds = (DataSource)ctx.lookup("java:jboss/datasources/ExampleDS"); 

不知道JndiDataSourceLookup如何运作..

为了查找一个数据源,你可以使用@Resource(在EJB上下文中)注入它

@Resource(name= "java:jboss/datasources/ExampleDS") 
private Datasource ds; 

希望它可以帮助!

+0

我已经尝试过这一点,但是这给了我一个javax.naming.NoInitialContextException:需要环境或系统属性指定的类名,或者作为一个小程序参数,或在应用程序的资源文件:....例外。我的代码来自Spring配置文件 – 2014-11-25 14:26:35