Здравствуйте.
Проблема заключается в следующем. Есть класс employee.java с методами get() и set(), есть класс employeeBean.java где осуществляется соединение с базой и выполнение запросов(по выбору данных, вставки, удалению и обновлению) — оба этих класса находится в модуле ejb, в пакете bean.
И есть сервлет emplyeeServlet.java, где необходимо обратиться к бину employeeBean (Находится этот сервлет в модуле war, в пакете servlet).
Пробую сделать это таким образом:
InitialContext ctx = new InitialContext();
ctx.lookup("bean/employeeBean");
Но похоже таким образом этот бин не находится, так как появляется exception.
Подскажите пожалуйста как правильно организовать связь в сервлете с бином?
(использую Netbeans 5.5)
Здравствуйте, wavesql, Вы писали:
W>Пробую сделать это таким образом: W>InitialContext ctx = new InitialContext(); W>ctx.lookup("bean/employeeBean");
"bean/employeeBean" — откуда взялось? JNDI курил? Деплоймент дескрипоторы есть?
W>Но похоже таким образом этот бин не находится, так как появляется exception. W>Подскажите пожалуйста как правильно организовать связь в сервлете с бином?
J2EE/EJB какой версии? В EJB3 можно инжектить, в EJB2 надо смотреть деплоймент дескрипторы и искать там JNDI имя
W>(использую Netbeans 5.5)
Это новый сервер приложений такой? Netbeans это IDE, она мало отношения имеет к серверу приложений в котором крутятся бины и сервлеты.
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, wavesql, Вы писали:
W>>(использую Netbeans 5.5) B>Это новый сервер приложений такой? Netbeans это IDE, она мало отношения имеет к серверу приложений в котором крутятся бины и сервлеты.
Да не, сервер приложений jboss 4.0. Указав IDE, в котором разрабатываю EnterpriseApplication, думал вопросов будет поменьше, оказалось наоборот
B>"bean/employeeBean" — откуда взялось? JNDI курил? Деплоймент дескрипоторы есть?
ejb-deployer.xml — тут можно JNDI посмотреть? (я извиняюсь за такой вопрос, только начинаю разбираться с J2EE)
B>J2EE/EJB какой версии? В EJB3 можно инжектить, в EJB2 надо смотреть деплоймент дескрипторы и искать там JNDI имя
Скажите, а что такое инжектить?(или где можно почитать про это)
Здравствуйте, wavesql, Вы писали:
W>Да не, сервер приложений jboss 4.0. Указав IDE, в котором разрабатываю EnterpriseApplication, думал вопросов будет поменьше, оказалось наоборот
Конечный результат не должен зависеть от IDE. Но зачастую зависит от апп сервера.
B>>"bean/employeeBean" — откуда взялось? JNDI курил? Деплоймент дескрипоторы есть? W>ejb-deployer.xml — тут можно JNDI посмотреть? (я извиняюсь за такой вопрос, только начинаю разбираться с J2EE)
Не знаю, я не гуру EJB http://www.google.com/search?hl=en&q=JBoss+EJB+deployment+descriptors
B>>J2EE/EJB какой версии? В EJB3 можно инжектить, в EJB2 надо смотреть деплоймент дескрипторы и искать там JNDI имя W>Скажите, а что такое инжектить?(или где можно почитать про это)
Здравствуйте, wavesql, Вы писали:
W>Но похоже таким образом этот бин не находится, так как появляется exception. W>Подскажите пожалуйста как правильно организовать связь в сервлете с бином? W>(использую Netbeans 5.5)
Тут особо на сервлете зацикливаться не надо. Я бы рад объяснить, но уж очень это долго, у самого были проблемы. Использовал JBoss 4.0.2 + EJB 2.1. Если используете то же самое, то очень полезно будет почитать это руководство. Информация в статье, конечно, устарела, но чтобы разобраться, лучше не найти, к тому же на русском...частично.
В NetBeans 5.5 открываете исходники сервлета, щелкаете правой кнопкой мыши в редакторе и выбираете Enteprise Resources > Call Enterprise Bean (за точность названий не ручаюсь), далее выбираете нужный бин (он должен находиться в одном из открытых проектов) и NetBeans генерирует для вас весь необходимый lookup-код.
Здравствуйте, mrkam, Вы писали:
M>В NetBeans 5.5 открываете исходники сервлета, щелкаете правой кнопкой мыши в редакторе и выбираете Enteprise Resources > Call Enterprise Bean (за точность названий не ручаюсь), далее выбираете нужный бин (он должен находиться в одном из открытых проектов) и NetBeans генерирует для вас весь необходимый lookup-код.
Спасибо за полезный совет!!!
Создал EntityClass(насколько я знаю это и есть entity bean), но когда, в редакторе выбираю Enteprise Resources > Call Enterprise Bean, этот бин не виден...Если же создать SessionBean, то его видно. Но хотелось бы приложение сделать используя EntityBean'ы.
Здравствуйте, wavesql, Вы писали:
W>Здравствуйте, mrkam, Вы писали:
M>>В NetBeans 5.5 открываете исходники сервлета, щелкаете правой кнопкой мыши в редакторе и выбираете Enteprise Resources > Call Enterprise Bean (за точность названий не ручаюсь), далее выбираете нужный бин (он должен находиться в одном из открытых проектов) и NetBeans генерирует для вас весь необходимый lookup-код.
W>Спасибо за полезный совет!!! W>Создал EntityClass(насколько я знаю это и есть entity bean), но когда, в редакторе выбираю Enteprise Resources > Call Enterprise Bean, этот бин не виден...Если же создать SessionBean, то его видно. Но хотелось бы приложение сделать используя EntityBean'ы.
Я так понимаю, что вы имеете дело с J2EE 1.4, поскольку понятие Entity Bean в Java EE 5 более не употребляется. Отсюда вывод — нужно создавать в NetBeans проект J2EE 1.4, тогда там будут и Entity Beans и lookup для них. В частности, у меня получилась такие стоки:
private NewEntityLocalHome lookupNewEntityBean() {
try {
Context c = new InitialContext();
NewEntityLocalHome rv = (NewEntityLocalHome) c.lookup("java:comp/env/ejb/NewEntityBean");
return rv;
}
catch(NamingException ne) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);
throw new RuntimeException(ne);
}
}