2016-06-16 3 views
2

У меня есть DataSource, выполненный в Weblogic 12с, как показано на изображении ниже:Не удается разрешить источник данных JNDI после завершения работы веб-приложений/запуска в Weblogic 12с

Datasource

И у меня есть веб-приложение на тот же сервер Weblogic, который использует этот источник данных:

Web Application

Всякий раз, когда я начинаю Weblogic с нуля все работает отлично. Но, после того, как вверх, если я пытаюсь выключать WebApplication, а затем запустить его снова, у меня есть «javax.naming.NameNotFoundException», как показано ниже:

enter image description here

Это код, я использую для получения источника данных:

@Bean 
public DataSource dataSource() { 
    final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup(); 
    dsLookup.setResourceRef(true); 
    DataSource dataSource = dsLookup.getDataSource("jdbc/xdrstoredbds"); 
    return dataSource; 
} 

Что я могу пропустить?

ответ

1

Заканчивается, что причина этой проблемы была весна поведения, я не знал. Как упоминалось в этом другом ответе Weblogic datasource disappears from JNDI tree Мне пришлось добавить destroyMethod = "" в определение моего бина. Без этого, кажется, что весна

«пытается определить, что уничтожить метод. Это, по-видимому вызывает источник данных должен быть закрыт, а ключ JNDI, чтобы удалить из дерева. Изменение его в„“силы он не ищет destroyMethod. "

Мой метод в конечном итоге выглядит аналогично, один в ответе я упомянул:

@Bean(destroyMethod = "") 
public DataSource dataSource() { 
    final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup(); 
    dsLookup.setResourceRef(true); 
    return dsLookup.getDataSource("jdbc/xdrstoredbds"); 
} 
0

Заменить строку

DataSource dataSource = dsLookup.getDataSource("jdbc/xdrstoredbds"); 

с

DataSource dataSource = dsLookup.getDataSource("java:comp/env/jdbc/xdrstoredbds"); 

Затем попробуйте запустить снова.
Java: комп/ENV является узлом в дереве JNDI, где вы можете найти свойства для текущего компонента Java EE

+0

Заменить строку кода сегмента DataSource DataSource = dsLookup.getDataSource ("JDBC/xdrstoredbds"); ниже DataSource dataSource = dsLookup.getDataSource ("java: comp/env/jdbc/xdrstoredbds"); Затем попробуйте снова забежать. java: comp/env - это узел в дереве JNDI, где вы можете найти свойства для текущего компонента Java EE –

+0

К сожалению, это не сработало. Теперь я получаю это исключение: weblogic.application.ModuleException: javax.naming.NameNotFoundException: при попытке найти comp/env/jdbc/xdrstoredbds в /app/webapp/xdrweb.war/490669642; оставшееся имя 'comp/env/jdbc/xdrstoredbds'. Эта ошибка возникает, когда я запускаю Weblogic или когда я пытаюсь запустить только веб-приложение. – ederribeiro

Смежные вопросы