【发布时间】:2014-11-25 10:04:51
【问题描述】:
所以,我多次阅读,如果您使用 Java EE 容器,则无需将环境参数添加到 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: Failed to connect to server localhost:1099
我也试过只使用localhost:1099 或localhost,它们都不起作用。
所以我的问题是:我什至需要指定这些属性,因为据我所知 JBoss 8 是一个 Java EE 容器。如果是这样,我需要在这里指定什么提供者 url?
【问题讨论】:
标签: java jboss datasource jndi