使对象可用于应用程序:Java EE

时间:2013-09-17 10:40:47

标签: java-ee

我的用例是:

  1. 某些用户发出get请求并创建一个运行命令提示符的对象。
  2. 另一个用户希望通过发出另一个get请求来终止在步骤1中创建的进程。
  3. 所以我想在第二个get请求中访问第一个get请求中创建的对象,即我想让对象在应用程序范围内可用。

    在Java SE中,我将在main方法中创建一个对象列表,并将其作为参数传递给创建新对象的方法。它将在给定列表中添加新创建的对象。另一种方法,必须杀死这个过程,将从这个列表中选择对象。但在EE中我没有主方法,所以在哪里存储应用程序范围内可用的对象。

2 个答案:

答案 0 :(得分:2)

如果您完全确定使用全局范围(解决了例如同步问题),那么您可以:

  1. 在网络应用程序上下文中,使用ServletContextJavadocs):

    • 使用application隐式变量从JSP开始。
    • 使用getServletConfig().getServletContext()
    • 从servlet

    ServletContext的行为类似于您需要的地图,方法为setAttribute(String, Object)getAttribute(String)removeAttribute(String)。您可以在此处列出您正在讨论的Java SE案例列表。

  2. 在EJB上下文中:

    • 使用JNDI(某种特定的笨拙和应用程序服务器)
    • 将您的列表包装在@Singleton会话EJB(更好)
  3. 从Web或EJB,使用CDI:

    • 将您的列表包裹在@ApplicationScoped bean(CDI术语中的单例)

答案 1 :(得分:1)

我认为具有同步列表的单个对象将按预期工作