如何在SEAM中的bean初始化链的末尾调用启动bean

时间:2011-06-23 09:00:27

标签: jboss seam jboss6.x seam2

14:00:04,449 INFO  [org.jboss.seam.servlet.SeamFilter] Initializing filter:
 org.jboss.seam.servlet.characterEncodingFilter
14:00:04,450 INFO  [org.jboss.seam.servlet.SeamFilter] Initializing filter:
 org.jboss.seam.web.redirectFilter
14:00:04,451 INFO  [org.jboss.seam.servlet.SeamFilter] Initializing filter:
 org.jboss.seam.web.exceptionFilter
14:00:04,452 INFO  [org.jboss.seam.servlet.SeamFilter] Initializing filter:
 org.jboss.seam.web.multipartFilter
14:00:04,452 INFO  [org.jboss.seam.servlet.SeamFilter] Initializing filter:
 org.jboss.seam.web.identityFilter
14:00:04,453 INFO  [org.jboss.seam.servlet.SeamFilter] Initializing filter:
 org.jboss.seam.web.rewriteFilter

这是在JBoss 6上JBoss SEAM应用程序启动后打印的最后一行。

@Name("myStartup")
@Startup
@Scope(APPLICATION)
@BypassInterceptors
public class MyStartup {

    @Create
    public void create() {
        System.out.println("SERVER STARTED SUCCESSFULLY");
    }
}

我打算在SeamFilter初始化后打印上面的消息(在JBoss 6控制台上)。我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以在普通组件上尝试此注释。删除此组件上的@Startup

@Observer({"org.jboss.seam.postInitialization", "org.jboss.seam.postReInitialization"})
public void create() {
    System.out.println("SERVER STARTED SUCCESSFULLY");
}

答案 1 :(得分:0)

如果想法只是在所有接缝消息之后显示某些状态,则至少有两种方式:

首先使用Shervin的解决方案并在org.jboss.seam.servlet.Filter INFO中禁止$JBOSS_HOME/server/<your-profile>/conf/jboss-log4j.xml条消息:

<category name="org.jboss.seam.servlet.Filter">
   <priority value="ERROR"/>
</category>

或实施过滤器:

@Scope(APPLICATION)
@Name("com.example.seam.myFilter")
@BypassInterceptors
@Filter(within={"org.jboss.seam.web.rewriteFilter"})
public class MyFilter implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException {
        chain.doFilter(request, response);
    }

    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("SERVER STARTED SUCCESSFULLY");
    }
}