JAX-RS 中的 Servlet init() 方法等效

2022-09-04 00:55:29

我正在开发一个在Glassfish上运行的应用程序。我应该通过使用jax-rs和球衣将servlets转换为适当的宁静的东西。

我一直在尝试找到init()方法的解决方法,但直到现在我都失败了。

以下是使用 servlet 的原始部分:

import javax.servlet.*

public void init(ServletConfig config) throws ServletException {
super.init(config);
 if (!isRunning() == true)) {
     /* Do some stuff here*/
 }

 logger.info("Deamon has started");
}

和这个我试图使用jax-rs

import javax.ws.rs.*
import javax.servlet.*

public void init(@Context ServletConfig config) throws ServletException {
//uper.init(config);
if (!isRunning() == true)) {
  /* Do some stuff here*/
}

logger.info("Deamon has started");
}

我已经检查了邮件列表并搜索了四处搜索,但找不到可以适用于这种情况的方法。

任何想法如何实现相同的行为与 servlet for init 方法?


答案 1

最后,在谷歌搜索了一下之后,我找到了一个合适的解决方案。

基本上,我已经扩展了类并实现了在加载应用程序时调用的抽象方法。我已经将逻辑从servlet移动到这里进行初始化和其他配置设置,然后它很顺利。public class ContextListener implements ServletContextListenerpublic void contextInitialized(ServletContextEvent sce)


答案 2

使用@PostConstruct;来自 Web 应用程序的示例:

@Context
private ServletContext context;

@PostConstruct
public void init() {
  // init instance
}

推荐