1

我有一个愚蠢的问题。我有一个 java web 应用程序和一个带有 jersey 的 rest 接口。我可以在哪里放置初始化代码块?

例如,我有一个单例,带有一个方法“createInstance”。休息服务器运行时如何执行“createInstance”方法。有没有像“Main()”这样的东西来放置初始化的东西?

我在项目中也有 servlet,但是当用户打开网页时它们正在执行。

我想知道是否存在放置我的初始化代码的地方。

4

3 回答 3

6

最后我找到了解决方案:

为了执行初始化代码,我可以创建“ServletContextListener”的实现。

通过这种方式,我这样做:

package foopackage;

...
public class ServletContextClass implements ServletContextListener
{  

    @Override
    public void contextInitialized(ServletContextEvent arg0) 
    {        
            ...     
    }


    @Override
    public void contextDestroyed(ServletContextEvent arg0) 
    {
           ...
    }
}

要在应用程序服务器初始化后使用此侦听器,必须将其放在 web.xml 中。

 <listener>
     <listener-class>foopackage.ServletContextClass</listener- class>
 </listener>
于 2013-01-28T11:43:14.837 回答
0

完全不清楚“初始化对象”是什么意思。我想显而易见的答案是你在需要的地方初始化一个对象。

如果你需要创建一个单例,你可以像使用 Java 中的任何其他单例一样创建它,使用静态文件或枚举;你会在你的一个 REST 方法中得到它的一个实例。例如

@GET
@Produces("application/xml")
public String getData() {
   Singleton singleton = Singleton.getInstance();
   String result = singleton.domSomething();
   return result;
}

如果您想要使您的资源(Web 服务)成为单例,那么您可以通过扩展 javax.ws.rs.core.Application 来实现,然后根据您使用的 JAX-RS 实现和服务器,您可能需要配置您的 web.xml 以使用此应用程序定义初始化您的 REST 服务。此类具有名为的方法getSingletons(),您可以扩展该方法以提供资源的单例。

于 2013-01-10T15:42:21.440 回答
-1

休息资源就像任何其他类一样。
您可以使用构造函数来初始化您的对象。

于 2013-01-10T15:48:29.150 回答