Java 为JBoss 8(WildFly)配置JTA数据源
因此,我读了好几次,如果您使用JavaEE容器,您不需要向Java 为JBoss 8(WildFly)配置JTA数据源,java,jboss,datasource,jndi,Java,Jboss,Datasource,Jndi,因此,我读了好几次,如果您使用JavaEE容器,您不需要向InitialContext添加环境参数,就可以使用JNDI 所以我试了一下: @Bean public DataSource dataSource() { JndiDataSourceLookup jndiDataSourceLookup = new JndiDataSourceLookup(); return jndiDataSourceLookup.getDataSource("jav
InitialContext
添加环境参数,就可以使用JNDI
所以我试了一下:
@Bean
public DataSource dataSource() {
JndiDataSourceLookup jndiDataSourceLookup = new JndiDataSourceLookup();
return jndiDataSourceLookup.getDataSource("java:global/ExpensesDataSource");
}
但是,像这样使用JNDI检索数据源会给我一个NoInitialContextException
,告诉我指定环境参数
现在,好吧,看来我认为它可以完美地工作是错误的,所以我试着像这样检索数据源:
@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:无法连接到服务器localhost:1099
我也尝试过只使用localhost:1099
或localhost
,但都不起作用
所以我的问题是:我甚至需要指定这些属性吗,因为据我所知JBoss8是一个JavaEE容器。如果是这样,我需要在这里指定什么提供者url?如果使用javax.naming.InitialContext,就不需要像您所说的那样指定环境参数。例如:
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:jboss/datasources/ExampleDS");
不确定JndiDataSourceLookup是如何工作的
为了查找数据源,可以使用@Resource(在ejb上下文中)注入它
希望有帮助 我以前尝试过这个,但是这给了我一个javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或者作为小程序参数,或者在应用程序资源文件中指定:。。。。例外我的代码来自Spring配置文件
@Resource(name= "java:jboss/datasources/ExampleDS")
private Datasource ds;