Невозможно получить доступ к источнику данных Weblogic через имя JNDI с помощью Spring Data JPA - PullRequest
0 голосов
/ 25 июня 2018

Я использую Weblogic 12c и настроил свои источники данных следующим образом:

enter image description here

Обратите внимание, что все они развернуты на целевом "AdminServer".Кроме того, поле «Имя» и поле «Имя JNDI» идентичны.Например, предположим, что имя одного источника данных - «MYDS».

Теперь, когда я пытаюсь получить этот источник данных с помощью Spring Data JPA следующим образом:

    @Bean
    @Primary
    public DataSource businessDataSource() throws IllegalArgumentException, NamingException {
        JndiObjectFactoryBean dataSource = new JndiObjectFactoryBean();
        dataSource.setResourceRef(true);
        dataSource.setJndiName("MYDS");
        dataSource.afterPropertiesSet();

        return (DataSource) dataSource.getObject();
    }

При попытке получить следующую ошибкуразвернуть файл war в weblogic:

Не удалось создать экземпляр компонента с помощью фабричного метода;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [javax.sql.DataSource]: фабричный метод 'businessDataSource' вызвал исключение;Вложенное исключение: javax.naming.NameNotFoundException: невозможно разрешить «MYDS».Решено '';оставшееся имя 'MYDS'

Также я вижу эту ошибку:

DEBUG osjndi.JndiObjectFactoryBean - преобразованное имя JNDI [java: comp / env / MYDS] не найдено - попыткаоригинальное имя [MYDS].javax.naming.NameNotFoundException: при попытке поиска comp / env / MYDS в / app / myapp / webclient / 404708050 .;оставшееся имя 'comp / env / MYDS'

1 Ответ

0 голосов
/ 26 июня 2018

Просто смотрит на источник для setResourceRef и он заявляет:

public void setResourceRef (boolean resourceRef)

Установите, происходит ли поиск в контейнере Java EE,

т.е. если нужно добавить префикс "java: comp / env /", если имя JNDI еще не содержит его.По умолчанию установлено значение «false».

Примечание. Применяется только в том случае, если не указана другая схема (например, «java:»).

Если вы задали значение «true», пытались ли вы добавить java: comp / env / для имени JNDI?

...