У меня возникли проблемы с глобальными именами JNDI моих ресурсов EJB, которые (или, по крайней мере, будут) приводить к сбою моего JNDI-запроса. Проект разрабатывается на Netbeans и является стандартным веб-приложением Maven. Когда мое приложение развертывается GF3.0 имя приложения устанавливается на что-то вроде:JEE6 Глобальное имя JNDI и развертывание Maven
com.example_myapp_war_1.0-SNAPSHOT
, которая все хорошо с Netbeans точки зрения, поскольку она обеспечивает имя уникальный, но это также означает, что все EJBs получить глобальные имена, такие как это:
Java: глобальная/com.example_myapp_war_1.0-ПАНОРАМА/CustomerService
Это, конечно, будет вызывать проблемы, потому что каждый раз, когда версия меняет все изменения глобальных имен (я протестировал это, изменив версию и имена inde ed изменено). Имя генерируется из файла POM и это конкатенация:
<groupId>com.example</groupId>
<artifactId>myapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
До сих пор я отделался только инъекционные все ресурсы, используя @EJB, но теперь мне нужно получить доступ к CustomerService EJB из JSF конвертер, так что я делаю JNDI посмотреть, как это:
try {
Context ctx = new InitialContext();
CustomerService customerService = (CustomerService)ctx.lookup("java:global/com.example_myapp_war_1.0-SNAPSHOT/CustomerService");
return customerService.get(submittedValue);
} catch(Exception e) {
logger.error("Failed to convert customer.", e);
return null;
}
, который будет четко сломаться, когда приложение должным образом освобождается и изменения имени модуля. Итак, вопрос в миллион долларов: как я могу установить имя модели в maven или как восстановить module name, чтобы я мог программно построить имя JNDI в runtile. Я попытался установить его в файле web.xml, как было предложено этой ссылкой, но он был проигнорирован. Я думаю, что я бы предпочел создать имя во время выполнения, поскольку это означает, что при развертывании приложения меньше возможностей для винтов.
Огромное спасибо за любую помощь, я весь день разорвал свои волосы.
Как вы делаете развертывание? грузы? Вы используете военный плагин? – khmarbaise