Любой EJB по умолчанию привязан к JNDI. Вы можете легко использовать JNDI, чтобы найти сессионный компонент внутри вашего сервлета и выполнить сессионный компонент. Вам действительно не нужно иметь MBeans.
Вот псевдокод (просто псевдо, может не скомпилироваться)
Образец бобов с сохранением состояния
package org.jboss.example;
import javax.ejb.Stateful;
@Stateful
public class StatefulBean {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
Пример сервлета, обращающегося к вышеуказанному компоненту
package org.jboss.example;
import java.io.IOException;
import java.io.PrintWriter;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class BeanServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter writer = response.getWriter();
StatefulBean statefulBean = getStatefulBean(request);
writer.println("State: " + statefulBean.getState());
}
private StatefulTestBean getStatefulBean(HttpServletRequest request)
throws ServletException {
StatefulBean sb = null;
try {
InitialContext ic = new InitialContext();
sb = (StatefulBean) ic.lookup("java:ejb/StatefulBean");
} catch (NamingException e) {
throw new ServletException(e);
}
}
return sb;
}
}