2015-02-25 3 views
0

@LocalBinding(jndiBinding="sample/student") в EJB 3.0 используется, чтобы предоставить предпочтительное имя JNDI для компонента EJB.@LocalBinding (jndiBinding = "sample/student") EJB 3.0 отсутствует в EJB 3.2

А для поиска с использованием определенного имени JNDI, используемый код

Context c = new InitialContext(); 
studentBean = (studentlBean) c.lookup("sample/student"); 

Как это может быть выполнено в EJB 3.2, как @LocalBinding не поддерживается в EJB3.2 wildfly 8 сервера приложений. Пожалуйста помоги.

+0

Каков сценарий, в котором вы должны выполнять поиск JNDI, а не использовать инъекцию через @EJB? –

+0

Например, такой сценарий: экземпляр EJB необходим в классе, но инъекция не может быть выполнена для этого класса. Может быть, это проблема архитектуры приложений, но в «реальной жизни» такая проблема распространена. –

ответ

0

Мы решили эту проблему путем создания класса и метода полезности, которые вычисляют правильное имя jndi по классу Enterprise bean. В этом методе мы ходим по дереву jndi и проверяем каждый его экземпляр. Если мы нашли экземпляр требуемого класса, верните его в заданный класс. По моим знаниям javaee не дает других вариантов, чтобы взять экземпляр EJB по имени jndi.

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