web应用程序-如何使用jersey (java)初始化rest服务器中的对象



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

例如,我有一个单例,有一个方法"createInstance"。我如何执行"createInstance"方法一旦时间休息服务器正在运行。是否有类似"Main()"的东西来放置初始化的东西?

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

我想知道是否有地方可以放置我的初始化代码

最后我找到了解决办法:

对于执行初始化代码,我可以创建一个"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>

你所说的"初始化对象"是什么意思根本不清楚。我想最明显的答案是在需要的地方初始化对象。

如果你需要创建一个单例,你可以像在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来使用这个Application定义初始化你的REST服务。这个类有一个名为getSingletons()的方法,您可以扩展它来提供资源的单例。

Rest资源和其他类一样。
你可以使用构造函数初始化你的对象。

最新更新