欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实录Seam示例程序Booking学习过程

程序员文章站 2022-07-15 19:37:33
...

实录Seam示例Booking学习过程

Seam的Booking示例程序 较为完整的展示了Seam构建Web应用的主要方面,以下将学习理解过程简单记录,以备查考。
我的运行环境是Tomcat6.0.14 + EmeddedJBoss,该环境的准备 请参考我的上一篇Blog《在tomcat中使用EmeddedJBoss
》。
以下我将以%tomcat% 指代tomcat的安装位置,以% seam% 指代Seam发布包解压目录的位置,以%booking% 指代示例程序;

1、构建/部署

首先,在%seam%目录下build.properties文件中设置tomcat的安装位置,以下将用%tomcat%来指代;
第二,在%seam%\examples\booking目录下执行ant tomcat.deploy 注意:Seam指南文档中说的是deploy.tomcat ,其实应该是 tomcat.deploy ),当然前提是你正确的配置了Ant;
第三,Ant任务执行成功后 会发布war文件到%tomcat%\webapps下。此时直接部署还缺少以下jar文件,需要手动copy:commons-digester-1.6.jar richfaces-api-3.1.1-SNAPSHOT.jar richfaces-impl-3.1.1-SNAPSHOT.jar richfaces-ui-3.1.1-SNAPSHOT.jar ,这些文件都可以从%seam%\lib目录下找到,copy到%booking%\WEB_INF\lib目录下;
最后,至此 启动tomcat就会正确的部署该程序,通过http://localhost/booking/ 就可以正确的访问所有功能。好,以下我们来解析booking程序中的各个方面。

2、配置解析

web.xml :不用多说了,其中配置了RichFaces 支持、Seam启动监听器、Seam Resource Servlet、Seam Filter、JSF Servlet以及facelets支持;

components.xml :内容如下,其中 其中各配置项的功能如注释所示,都非常明确,没有什么需要特别说明的。

  1. <!-- -->   
  2. < core:init   jndi-pattern = "#{ejbName}/local"   debug = "true" />   
  3. <!-- -->   
  4. < core:manager   conversation-timeout = "120000"   
  5.      concurrent-request-timeout = "500"   
  6.      conversation-id-parameter = "cid" />   
  7. <!-- -->   
  8. < transaction:ejb-transaction />   
  9. <!-- -->   
  10. < security:identity   authenticate-method = "#{authenticator.authenticate}" />   

 booking-ds.xml :JBoss的数据库连接池配置文件,该文件定义了数据源及其JNDI名称。数据库使用了hsqldb的进程内模式。EmbeddedJBoss扫描到该文件后自动部署,其中bookingDatasource名称将在persistence.xml中引用。

persistence.xml :该文件是JPA的标准配置文件 其中引用前一文件配置的数据源声明持久化单元。JPA是EJB的一部分 所以JBoss会扫描到该文件 并完成部署。

ejb-jar.xml :该文件是EJB的标准配置文件,在此其声明了EJB拦截,此处的拦截对Seam至为重要 因为就是在该拦截中完成了对EJB的“注射 ”。

pages.xml :该页面定义了页面导航规则 及 未登录异常捕获时的重定向。

OK,配置基本上就是这些,接下来将以功能使用为线索 查看所有源代码部分。