Итак, я несколько раз читал, что если вы используете контейнер Java EE, вам не нужно добавлять параметры среды в InitialContext
, чтобы иметь возможность использовать JNDI.Конфигурирование источника данных 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:1099
или localhost
, ни одна из них не работала.
Итак, мой вопрос: мне даже нужно указать эти свойства, поскольку JBoss 8 является контейнером Java EE, насколько мне известно. И если да, то какой URL-адрес провайдера мне нужно указать здесь?
Я пробовал это раньше, однако это дает мне javax.naming.NoInitialContextException: нужно указать имя класса в среде или системном свойстве или в качестве параметра апплета или в файле ресурсов приложения: ... исключение , Мой код из конфигурационного файла Spring –