JNDI-инъекция имени приложения не работает, поиск делает - PullRequest
5 голосов
/ 30 января 2012

Это не похоже на работу (= ноль):

@Resource(name = "java:app/AppName")
private String appName;

Но поиск с таким же именем делает:

appName = (String) new javax.naming.InitialContext().lookup("java:app/AppName");

Я нашел много примеров, имеющих lookup свойство в @Resource вместо name . Тем не менее, я ничего не могу найти по этому поводу, я вполне уверен, что это должно быть имя , прежний не является частью спецификации.

К вашему сведению, я использую Glassfish 3.1 и обращаюсь к appName из метода @PostConstruct в одноэлементном компоненте.

1 Ответ

5 голосов
/ 30 января 2012

Использование «lookup» вместо «name» в этом случае является правильным, поскольку запись уже определена в пространстве имен java:app и просто просматривается, а не определяется. Это часть спецификации Java EE 6 (которую реализует Glassfish 3.1 ): @Resource#lookup().

Кроме поиска имени приложения с помощью InitialContext, вы также можете использовать аннотацию @Resource с атрибутом lookup:

@Resource(lookup = "java:app/AppName")
private String appName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...