Java EE 5
、EJB 3.0
、を使用していJboss AS 4.3.2
ます。
私は最も単純なStateful
豆 を持っています
@Local
public interface IStateBean
{
}
@Stateful
public class StateBean implements IStateBean
{
private static int number = 0;
@PostConstruct
void init()
{
number++;
System.out.println("@PostConstruct: " + number);
}
@PreDestroy
void destroy()
{
number--;
System.out.println("@PreDestroy: " + number);
}
}
このBeanのサーブレットでルックアップを行います
public class MyServlet extends HttpServlet
{
@Override
public void doGet(final HttpServletRequest aRequest, final HttpServletResponse aResponse) throws ServletException, IOException
{
IStateBean bean = new InitialContext().lookup("app-ear/StateBean/local");
// ...
}
}
StateBean
ただし、の新しいインスタンスが作成されるたびに。
2 回呼び出すことができますlookup
が、の新しいインスタンスがStateBean
再度作成され ます
@Override
public void doGet(final HttpServletRequest aRequest, final HttpServletResponse aResponse) throws ServletException, IOException
{
IStateBean bean1 = new InitialContext().lookup("app-ear/StateBean/local");
IStateBean bean2 = new InitialContext().lookup("app-ear/StateBean/local"); // new instance is created
// ...
}
同じ http セッションで同じインスタンスが必要です
web.xml でのサーブレット マッピング
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.package.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>