Позвольте мне начать с того, что пока я уже некоторое время использую Java SE, это мой первый набег на территорию Java EE. Я использую Netbeans 6.9 и генератор кода Netbeans, чтобы выполнить большую часть тяжелой работы (подробнее об этом ниже). Версия GlassFish 3 - стандартная версия, которая поставляется при загрузке Netbeans.
Я создал сессионный компонент без сохранения состояния, чтобы возвращать простую строку следующим образом:
@Stateless
public class SDBSStatelessSessionBean implements SDBSStatelessSessionBeanRemote {
@Override
public String sayHello() {
return "This seems to be working just fine.";
}
}
с определением интерфейса как:
@Remote
public interface SDBSStatelessSessionBeanRemote {
String sayHello();
}
Класс и интерфейс были созданы с помощью функции «Вставить код», которую предоставляет Netbeans. Я полагаю, что таким образом я избегаю глупых ошибок новичка (о, ирония).
Моя проблема заключается в том, что когда я пытаюсь вызвать компонент EJB из сервлета (вызов был добавлен с помощью опции 'Call Enterprise Bean' из генератора кода Netbeans), я получаю следующую ошибку:
javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
исключение вызвано:
NoClassDefFoundError
Вот как сервлет делает вызов:
@EJB
private SDBSStatelessSessionBeanRemote sDBSStatelessSessionBean;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Test Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>" + sDBSStatelessSessionBean.sayHello() +"</p>");
out.println("</body>");
out.println("</html>");
} catch (Exception e) {
out.println("<p>" + e.getMessage() + "</p>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
Боюсь, что я не смог найти решение этой проблемы после интенсивного поиска в Google (в основном потому, что в нескольких сообщениях на форуме, которые, кажется, приближаются к этой проблеме, содержится слишком много жаргонизмов, чтобы я мог следовать решению).
Я бы очень буду благодарен за любой совет / помощь, указывающую мне правильное направление.