Объект типа [class java.util.Properties], доступный в расположении JNDI [comp / env / test], нельзя назначить для [javax.sql.DataSource] - PullRequest
0 голосов
/ 19 декабря 2018

Мне нужно подключить приложение Spring MVC к серверу базы данных oracle и серверу Glassfish.

Это мой MVCconfiguration.java

@Bean
public DataSource getDataSource() throws SQLException {

    //Option 1 it works
    //DriverManagerDataSource dataSource = new DriverManagerDataSource();
    //dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
    //dataSource.setUrl("jdbc:oracle:thin:@xxx.xx.xx.xx:1521:dtest");
    //dataSource.setUsername("user");
    //dataSource.setPassword("pass");    

    //Option 2 didn't work
    JndiObjectFactoryBean bean = new JndiObjectFactoryBean(); 
    DataSource dataSource = null;
    JndiTemplate jndi = new JndiTemplate();
    try {
    dataSource = jndi.lookup("comp/env/test", DataSource.class);
    } catch (NamingException e) {
    }


    //Option 3 didn't work
    JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
    DataSource dataSource = (DataSource) dataSourceLookup.getDataSource("comp/env/test");              

    return dataSource;        

}

В Glassfish есть ресурс jdbc и пользовательские ресурсы jndi

jndi

jdbc resources

Но при развертывании файла войны я получил эту ошибку:

Error

Объект типа [class java.util.Properties], доступный в расположении JNDI [comp / env / test], нельзя назначить для [javax.sql.DataSource].

1 Ответ

0 голосов
/ 19 декабря 2018

Пользовательский ресурс JNDI представляет собой java.util.properties Ресурс JDBC связан с пулом соединений JDBC (может быть javax.sql.datasource )

Простоудалить пользовательский ресурс JNDI и использовать вместо него ресурс JDBC

...