首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何初始化Java FacesServlet

如何初始化Java FacesServlet
EN

Stack Overflow用户
提问于 2012-11-14 19:47:14
回答 3查看 1.9K关注 0票数 3

当FacesServlet启动时,我需要运行一些代码,但是由于FacesServlet被声明为最终的,所以我不能扩展它并覆盖init()方法。

特别是,我希望在hibernate删除并创建数据模型之后,在开发和测试期间将一些数据写入数据库。

有没有办法配置Faces来运行一些方法,例如在faces-config.xml中?或者最好是创建一个执行初始化的单例bean?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-14 20:17:49

使用eagerly initialized application scoped managed bean

代码语言:javascript
复制
@ManagedBean(eager=true)
@ApplicationScoped
public class App {

    @PostConstruct
    public void startup() {
        // ...
    }

    @PreDestroy
    public void shutdown() {
        // ...
    }

}

(类和方法的名称实际上并不重要,你可以自由选择,这都是关于注释的)

这可以保证在FacesServlet启动后构造,因此FacesContext将在必要时可用。这与另一个答案所建议的ServletContextListener相反。

票数 7
EN

Stack Overflow用户

发布于 2012-11-14 19:53:10

您可以实现自己的ServletContextListener,在web应用程序启动时收到通知。因为它是一个托管的容器,你可以注入资源,做任何你想做的事情。另一种选择是使用@Startup创建一个@Singleton ejb,并在它的@PostCreate方法中完成工作。通常情况下,ServletContextListener运行良好,但是,如果ear中有多个web应用程序,并且它们都共享相同的持久化上下文,则可以考虑使用@Singleton bean。

票数 0
EN

Stack Overflow用户

发布于 2012-11-14 19:57:04

嘿,你可能想在这里使用一些方面。只需将其设置为运行之前

代码语言:javascript
复制
     void   init(ServletConfig servletConfig) 
      //Acquire the factory instances we will 

//这来自here

也许this会帮你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13378221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档