Я использую Eclipse 3.5.2, EJB 3.0 и GlassFish 2.1, но я уверен, что это будет работать и для вас.
Ну, во-первых, я создал EJB-проект, который будет развернут как отдельный EJB-модуль в контейнере, и еще один проект, который фактически является веб-приложением, использующим один сервлет для тестирования.
Я могу решить ту же проблему, добавив следующие параметры в объявление @EJB в сервлете, который вызывает bean-компонент:
public class SimlpeServletClient extends HttpServlet {
.
.
.
@EJB(beanInterface=ISimpleJob.class,mappedName="ISimpleJob")
ISimpleJob statelesBean;
.
.
.
protected void doPost(HttpServletRequest ...){...}
.
.
.
}
И это структура компонента, реализующего интерфейс, предоставляемый сервлету:
@Stateless(name="SimpleJobBean", mappedName="ISimpleJob")
@Remote( { ISimpleJob.class })
public class SimpleJobBean implements ISimpleJob {
.
.
.
}
Как видите, ваш клиент знает только интерфейс для работы, но не сообщает серверу, какой ресурс может выполнить запрос.