Seam是如何启动的

2024-03-05 11:48
文章标签 启动 seam

本文主要是介绍Seam是如何启动的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发Seam应用,需要了解JSF生命周期、Seam生命周期和它(Seam)通过phase listener在JSF生命周期上扩展了哪些东西。
(这里省略一些无关紧要的...)

“web应用,启动代码可以写在ServletContextListener里。这些代码、是一系列的事件监听器,在应用初始化之后(在处理请求之前)和销毁之前被调用”

Seam 2.1.2的org.jboss.seam.servlet.SeamListener代码如下:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import org.jboss.seam.Seam;
import org.jboss.seam.contexts.ServletLifecycle;
import org.jboss.seam.init.Initialization;
import org.jboss.seam.jmx.JBossClusterMonitor;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;

/**
* Drives certain Seam functionality such as initialization and cleanup
* of application and session contexts from the web application lifecycle.
*
* @author Gavin King
*/
public class SeamListener implements ServletContextListener, HttpSessionListener
{
private static final LogProvider log = Logging.getLogProvider(ServletContextListener.class);

public void contextInitialized(ServletContextEvent event)
{
log.info( "Welcome to Seam " + Seam.getVersion() );
event.getServletContext().setAttribute( Seam.VERSION, Seam.getVersion() );
ServletLifecycle.beginApplication( event.getServletContext() );
new Initialization( event.getServletContext() ).create().init();
}

public void contextDestroyed(ServletContextEvent event)
{
ServletLifecycle.endApplication();
}

public void sessionCreated(HttpSessionEvent event)
{
ServletLifecycle.beginSession( event.getSession() );
}

public void sessionDestroyed(HttpSessionEvent event)
{
JBossClusterMonitor monitor = JBossClusterMonitor.getInstance(event.getSession().getServletContext());
if (monitor != null && monitor.failover())
{
// If application is unfarmed or all nodes shutdown simultaneously, cluster cache may still fail to retrieve SFSBs to destroy
log.debug("Detected fail-over, not destroying session context");
}
else
{
ServletLifecycle.endSession( event.getSession() );
}
}

}

SeamListener实现了ServletContextListener接口.

ServletContextListener参考:
http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContextListener.html

所以你只需要实现ServletContextListener并把作如下配置:

<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>

当应用程序初始化时,contextInitialized()方法会被servlet容器调用,这就是seam如何做到,每次当你部署seam应用到servlet或JEE服务器的时候启动。

下面是一篇相关的关于JSF生命周期和phase listener的实现的文章(高度推荐)。

http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html

这篇关于Seam是如何启动的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/776402

相关文章

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException: org.junit.Test问题

《解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException:org.junit.Test问题》:本文主要介绍解决tomcat启动时报Junit相... 目录tomcat启动时报Junit相关错误Java.lang.ClassNotFoundException

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S