Я использую EJB3, GlassFish 3.0.1 и затмение helios
У меня есть удаленный EJB
@Stateless (mappedName="TestBean")
public class TestBean implements TestBeanRemote {
public int add(int a, int b){
return a+b;
}
}
и удаленный интерфейс
@Remote
public interface TestBeanRemote {
public int add(int a, int b);
}
application.xml
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" id="Application_ID" version="6">
<application-name>ear.proj</application-name>
<display-name>ear.proj</display-name>
<module>
<web>
<web-uri>war.proj</web-uri>
<context-root>/war</context-root>
</web>
</module>
<module>
<ejb>ejb.proj.jar</ejb>
</module>
</application>
У меня есть пустой файл sun-ejb-jar.xml, и я не определил ejb-jar.xml, так как прочитал, что он необязательный, так как EJB3
Я помещаю свой EJB в EAR вместе с WEB
Я пытаюсь назвать этот EJB в классе POJO
InitialContext ic = new InitialContext();
ic.lookup("java:global/ear.proj/ejb.proj/TestBean");
я получаю следующее исключение
javax.naming.NamingException: не удалось выполнить поиск для java: global / ear.proj / ejb.proj / TestBean 'в SerialContext [Исключением корня является javax.naming.NameNotFoundException: ear.proj]
Я полагаю, что проблема в настройке EJB в моем EAR, поскольку в FAQ по GlassFish EJB сказано, что каждое переносимое глобальное имя JNDI выводится на сервер в журнале во время развертывания, в то время как я не могу найти какое-либо переносимое ключевое слово в журнал
Вместо этого я вижу следующее
ИНФОРМАЦИЯ: Не удается найти модуль ejb.proj.ejb.jar в комплекте приложений
Я что-то упускаю?