0

I am using Spring Data, Hibernate and jBoss 6.x.x.

I would like to look up at the jBoss 6.x.x the already configured jdbc datasource by JNDI.

Looking at the file standalone.xml, I have found the following entries:

<profile>
...

<datasources>
          ...
          <datasource enabled="true" jndi-name="name_of_the_ds" pool-name="name_of_the_pool" use-java-context="true">
                    <connection-url>connection_uri</connection-url>
                    <driver>driver_name</driver>
                    <security>
                        <user-name>fake_login</user-name>
                        <password>fake_password</password>
                    </security>
                </datasource>
...
</datasources>
...
</profile>

Based on this, I have written the following Spring annotation configuration class for the data base (I am using Spring Data and Hibernate as the JPA provider)

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "dao.repository")
@PropertySource("classpath:application.properties")
public class DataBaseContextConfiguration {
    private static final Logger LOGGER = LoggerFactory.getLogger(DataBaseContextConfiguration.class);

    private Database dataBase = Database.SOME_DATA_BASE;

    @Value("${jpa.showSql}")
    private Boolean showSql;

    @Value("${name.data.source}")
    private String dataSourceJndiName;

    @Bean
    public LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean() throws NamingException {
        final LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();

        localContainerEntityManagerFactoryBean.setDataSource(dataSource());
        localContainerEntityManagerFactoryBean.setPackagesToScan(PACKAGE_WITH_DB_ENTITIES);

        JpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
        localContainerEntityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);

        return localContainerEntityManagerFactoryBean;
    }

    @Bean
    public PlatformTransactionManager platformTransactionManager(EntityManagerFactory entityManagerFactory) {
        JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();

        jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);

        return jpaTransactionManager;
    }

    public DataSource dataSource() throws NamingException {
        DataSource dataSource = null;
        JndiTemplate jndi = new JndiTemplate();

        dataSource = (DataSource) jndi.lookup(dataSourceJndiName);

        return dataSource;
    }
}

The String dataSourceJndiName has the following value name_of_the_ds.

When I am trying to run simple integration test the following exception occurres:

Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
mr.M
  • 851
  • 6
  • 23
  • 41
  • Possible duplicate of [NoInitialContextException error](http://stackoverflow.com/questions/1525385/noinitialcontextexception-error) – SkyWalker Jul 30 '16 at 12:30
  • There is a logical link between my and that issue but this link is way to broad and wont help me to solve my problem. – mr.M Jul 30 '16 at 12:34

0 Answers0