2014-11-25 4 views
0

Итак, я несколько раз читал, что если вы используете контейнер 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-адрес провайдера мне нужно указать здесь?

ответ

0

Если вы используете 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 –