すべてのEJBは、デフォルトでJNDIにバインドされています。JNDIを使用すると、サーブレット内からセッションBeanを簡単に見つけて、セッションBeanを実行できます。あなたは本当にMBeanを持っている必要はありません。
これが擬似コードです(擬似だけで、コンパイルされない場合があります)
ステートフルBeanのサンプル
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;
}
}
上記のBeanにアクセスするサンプルサーブレット
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;
}
}