Я развернул war-файл с классами действий и фасадом, а также jar-файл с компонентами ejb (bean-компонент без состояния, пару сущностей и файл persistence.xml) на glassfish3. Моя проблема в том, что я не могу найти свой удаленный интерфейс к компоненту без сохранения состояния с моего фасада.
Мой компонент и интерфейс выглядят так:
@Remote
public interface RecordService {...
@Stateless(name="RecordServiceBean", mappedName="ejb/RecordServiceJNDI")
public class RecordServiceImpl implements RecordService {
@PersistenceContext(unitName="record_persistence_ctx")
private EntityManager em;...
и если я загляну в server.log, портативный jndi будет выглядеть так:
Portable JNDI names for EJB RecordServiceBean : [java:global/recordEjb/RecordServiceBean, java:global/recordEjb/RecordServiceBean!domain.service.RecordService]|#]
и мой фасад:
...InitialContext ctx= new InitialContext();
try{
recordService = (RecordService) ctx.lookup("java:global/recordEjb/RecordServiceBean!domain.service.RecordService");
}
catch(Throwable t){
System.out.println("ooops");
try{
recordService = (RecordService)ctx.lookup("java:global/recordEjb/RecordServiceImpl");
}
catch(Throwable t2){
System.out.println("noooo!");
}...
}
и когда фасад делает первый вызов, возникает это исключение:
javax.naming.NamingException: Lookup failed for 'java:global/recordEjb/RecordServiceBean!domain.service.RecordService' in SerialContext [Root exception is javax.naming.NamingException: ejb ref resolution error for remote business interfacedomain.service.RecordService [Root exception is java.lang.ClassNotFoundException: domain.service.RecordService]]
и второй звонок:
javax.naming.NamingException: Lookup failed for 'java:global/recordEjb/RecordServiceBean' in SerialContext [Root exception is javax.naming.NamingException: ejb ref resolution error for remote business interfacedomain.service.RecordService [Root exception is java.lang.ClassNotFoundException: domain.service.RecordService]]
Я также проверял, чтобы вводить компонент с помощью аннотации @ EJB:
@EJB(name="RecordServiceBean")
private RecordService recordService;
Но это тоже не работает. Что я пропустил? Я пытался с ejb-jar.xml, но это не должно быть необходимым. Есть кто-нибудь, кто может сказать мне, как решить эту проблему?