Я только что создал простой проект Enterprise Application Project в Eclipse с веб-модулем и модулем EJB3.Geronimo 3: поиск EJB в результате NamingException
Это мой EJB:
@Stateless
public class MyBean implements MyBeanRemote {
public String getGreeting(){return "Hello World!";}
}
Это мой Дистанционное бизнес Интерфейс:
@Remote
public interface MyBeanRemote {
String getGreeting();
}
Это мой Servlet:
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MyBeanRemote myBean = null;
try {
myBean=(MyBeanRemote) new InitialContext().lookup("XXX"); //1
} catch (NamingException e) {e.printStackTrace();}
response.getWriter().append(myBean.getGreeting());
}
}
Бин-инъекция работает как шарм, но я не могу успешно выполнить поиск JDNI: что должно быть вставлено в строку //1
вместо XXX
? Я пробовал все возможные комбинации (ну, явно отсутствующую правильный ...)
Насколько я понимаю, Geronimo использует OpenEJB для отображения имени к ресурсам и at this page вы можете прочитать, что
имя JNDI по умолчанию в следующем формате:
{deploymentId}{interfaceType.annotationName}
, так что я подумал, что это просто MyBeanRemote
, но это не работает ... что мне не хватает? Я провел последние часы с безуспешными попытками и читал похожие ответы здесь на SO.
Это мой openejb.jar.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ejb:openejb-jar xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" xmlns:bp="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:client="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0" xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2" xmlns:ejb="http://openejb.apache.org/xml/ns/openejb-jar-2.2" xmlns:jaspi="http://geronimo.apache.org/xml/ns/geronimo-jaspi" xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-2.0" xmlns:name="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pers="http://java.sun.com/xml/ns/persistence" xmlns:pkgen="http://openejb.apache.org/xml/ns/pkgen-2.1" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1">
<dep:environment>
<dep:moduleId>
<dep:groupId>default</dep:groupId>
<dep:artifactId>MyProjectEJB</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>car</dep:type>
</dep:moduleId>
</dep:environment>
</ejb:openejb-jar>
, созданную мастером.
вы можете использовать содержимое контекста jndi Context.list (""); это закрепит первый уровень дерева, с которого вы можете начать, идя дальше – achabahe