- 浏览: 123478 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
sunxiangfei91:
引用[*][url][/url]
Spring使用MimeMessageHelper -
lhb3015:
lz, Coder 这个类的代码呢??
Java RSA算法加密 -
b_lee:
顶顶顶 加两个字,再顶
Facelets是JSF更好的外衣 -
zhuqing08:
楼主 Coder 这个类的代码呢?
Java RSA算法加密 -
evajhhot:
貌似不行 有异常
BlazeDS 与Spring集成指南之一
将Seam与你的EJB容器集成
我们需要将 SeamInterceptor 用于我们的Seam组件。 在整个程序中完成这个的最简单方式是在 ejb-jar.xml 中增加以下拦截器配置:
<interceptors>
<interceptor>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor>
</interceptors>
<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor-binding>
</assembly-descriptor>
Seam需要知道在JNDI中到哪里去寻找会话Bean。其中一种方法是在每个会话Bean Seam组件中指定 @JndiName注解。 然而,这样相当乏味。更好的一种方式是指定一种模式,Seam可以根据这个模式从EJB名称里推算出JNDI的名称。 不幸的是,在EJB3规范里面,没有定义到全局JNDI的标准映射,所以这个映射是特定于供应商的。 我们通常在 components.xml 中指定这个选项。
对于JBoss AS,以下的模式是正确的:
<core:init jndi-name="myEarName/#{ejbName}/local" />
myEarName就是部署Bean所在EAR的名称。
在一个EAR的外面(当使用嵌入式的JBoss的EJB3容器时),以下模式就是要用到的那个:
<core:init jndi-name="#{ejbName}/local" />
你不得不尝试着去找到其他应用程序服务器的正确配置。 注意有些服务器(比如GlassFish)要求你为所有EJB组件直接(而且很乏味地)指定JNDI名称。 在这种情况下,你可以选择你自己的模式。:-)
在一个EJB3的环境中,我们建议给事务管理使用一个特殊的内建组件,它完全知道容器事务,并且可以正确地处理用 Events 组件注册的事务成功事件。 如果你没有在你的 components.xml 文件中增加这几行,Seam就不会知道容器管理的事务什么时候结束:
<transaction:ejb-transaction/>
切记!
还有最后一点你要知道的。你必须在部署你的Seam组件的每个压缩文档中(即使空的属性文件也要这样),放置一个 seam.properties、META-INF/seam.properties 或META-INF/components.xml文件。 在启动时,Seam将会根据 seam.properties 文件扫描所有压缩档案寻找Seam组件。
在一个Web压缩档案(WAR)文件中,如果在 WEB-INF/classes 目录下,包含有任何Seam组件,你必须在该目录中放置一个 seam.properties文件。
这就是为什么所有的Seam示例程序都有一个空的 seam.properties 文件的原因。 你不能删掉这些文件,还期待一切仍然正常运行!
你可能会觉得这很愚蠢,并且框架的设计者做一个空文件来影响他们的软件该是多么的白痴啊? 当然,这是针对Java虚拟机的限制所采取的一种权宜之计 — 如果我们不使用这个机制,那么我们的下一个最佳选项将逼迫你显式地在 components.xml 中列出所有的组件,就像其他某些竞争框架所做的那样!我想你会喜欢更喜欢我们这种方式。
在Java EE 5中配置Seam
如果你是在Java EE 5的环境下运行,这就是开始使用Seam所需的全部配置!
打包
一旦你将所有这些东西都打包到一个EAR文件中,该压缩文档看起来就会像这样:
my-application.ear/
jboss-seam.jar
lib/
jboss-el.jar
META-INF/
MANIFEST.MF
application.xml
my-application.war/
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
components.xml
faces-config.xml
lib/
jsf-facelets.jar
jboss-seam-ui.jar
login.jsp
register.jsp
...
my-application.jar/
META-INF/
MANIFEST.MF
persistence.xml
seam.properties
org/
jboss/
myapplication/
User.class
Login.class
LoginBean.class
Register.class
RegisterBean.class
...
你要在 META-INF/application.xml 中将 jboss-seam.jar 声明为一个EJB模块。 jboss-el.jar 应该被放置在EAR的lib目录下(将它放在EAR的classpath中)。
如果你想使用jBPM或Drools,你必须在EAR的lib目录下包含所需要的jar文件。
如果你想使用Facelets(我们建议使用),你必须在WAR的 WEB-INF/lib 目录下包含 jsf-facelets.jar
如果你想使用Seam标签库(大多数Seam应用程序都这么做),你就必须在WAR的 WEB-INF/lib 目录下包含 jboss-seam-ui.jar。 如果你想用PDF或者Email标签库,则需要在 WEB-INF/lib 目录下放置 jboss-seam-pdf.jar 或 jboss-seam-mail.jar。
如果你想要使用Seam调试页面(只在使用Facelets的应用程序中有效),你必须在WAR的 WEB-INF/lib 目录下包含jboss-seam-debug.jar
Seam发行时包括几个示例程序,他们能在任何支持EJB 3.0的Java EE容器中部署。
在J2EE中配置Seam
Seam很有用,即使你还没有冒险尝试EJB 3.0。在这种情况下,你可以使用Hibernate3或者JPA代替EJB 3.0持久化技术,并用简单的JavaBeans代替会话Bean。 你可能会错过会话bean的某些很好的特性,但是当你准备好时,这将会很容易迁移到EJB 3.0,同时,你将能利用Seam独特的声明式状态管理架构。
Seam JavaBean组件不会像会话Bean那样提供声明式事务划分。你 可以 使用 JTA UserTransaction 手动管理你的事务,或者使用Seam的 @Transactional 标注声明。 但是当与JavaBean一起使用Hibernate时,大部分应用程序只会用到由Seam管理的事务。
Seam发行包里包括预订示例程序的一种使用Hibernate3和JavaBeans而不是EJB3的版本,以及另一种使用JPA和JavaBeans的版本。 这些示例程序可以随时部署到任何J2EE应用程序服务器中。
在Seam中引导Hibernate
如果你装载了一个内建的组件,Seam将会从你的 hibernate.cfg.xml 文件中引导一个 Hibernate SessionFactory:
<persistence:hibernate-session-factory name="hibernateSessionFactory"/>
如果你想要通过注入得到一个由Seam管理的Hibernate Session,还需要配置一个 managed session。
<persistence:managed-hibernate-session name="hibernateSessionFactory"
session-factory="#{hibernateSessionFactory}"/>
在Seam中引导JPA
如果你装载了一个内建的组件,Seam将会从你的 persistence.xml 文件中引导一个 JPA EntityManagerFactory:
<persistence:entity-manager-factory name="entityManagerFactory"/>
如果你想要通过注入得到一个由Seam管理的JPA EntityManager,还需要配置一个 managed persistence context。
<persistence:managed-persistence-context name="entityManager"
entity-manager-factory="#{entityManagerFactory}"/>
打包
我们可以将我们的应用程序按照以下结构打包成一个WAR文件:
my-application.war/
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
components.xml
faces-config.xml
lib/
jboss-seam.jar
jboss-seam-ui.jar
jboss-el.jar
jsf-facelets.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-validator.jar
...
my-application.jar/
META-INF/
MANIFEST.MF
seam.properties
hibernate.cfg.xml
org/
jboss/
myapplication/
User.class
Login.class
Register.class
...
login.jsp
register.jsp
...
如果我们想要将Hibernate部署在一个非EE的环境中(如Tomcat或TestNG),我们需要多做一些工作。
我们需要将 SeamInterceptor 用于我们的Seam组件。 在整个程序中完成这个的最简单方式是在 ejb-jar.xml 中增加以下拦截器配置:
<interceptors>
<interceptor>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor>
</interceptors>
<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor-binding>
</assembly-descriptor>
Seam需要知道在JNDI中到哪里去寻找会话Bean。其中一种方法是在每个会话Bean Seam组件中指定 @JndiName注解。 然而,这样相当乏味。更好的一种方式是指定一种模式,Seam可以根据这个模式从EJB名称里推算出JNDI的名称。 不幸的是,在EJB3规范里面,没有定义到全局JNDI的标准映射,所以这个映射是特定于供应商的。 我们通常在 components.xml 中指定这个选项。
对于JBoss AS,以下的模式是正确的:
<core:init jndi-name="myEarName/#{ejbName}/local" />
myEarName就是部署Bean所在EAR的名称。
在一个EAR的外面(当使用嵌入式的JBoss的EJB3容器时),以下模式就是要用到的那个:
<core:init jndi-name="#{ejbName}/local" />
你不得不尝试着去找到其他应用程序服务器的正确配置。 注意有些服务器(比如GlassFish)要求你为所有EJB组件直接(而且很乏味地)指定JNDI名称。 在这种情况下,你可以选择你自己的模式。:-)
在一个EJB3的环境中,我们建议给事务管理使用一个特殊的内建组件,它完全知道容器事务,并且可以正确地处理用 Events 组件注册的事务成功事件。 如果你没有在你的 components.xml 文件中增加这几行,Seam就不会知道容器管理的事务什么时候结束:
<transaction:ejb-transaction/>
切记!
还有最后一点你要知道的。你必须在部署你的Seam组件的每个压缩文档中(即使空的属性文件也要这样),放置一个 seam.properties、META-INF/seam.properties 或META-INF/components.xml文件。 在启动时,Seam将会根据 seam.properties 文件扫描所有压缩档案寻找Seam组件。
在一个Web压缩档案(WAR)文件中,如果在 WEB-INF/classes 目录下,包含有任何Seam组件,你必须在该目录中放置一个 seam.properties文件。
这就是为什么所有的Seam示例程序都有一个空的 seam.properties 文件的原因。 你不能删掉这些文件,还期待一切仍然正常运行!
你可能会觉得这很愚蠢,并且框架的设计者做一个空文件来影响他们的软件该是多么的白痴啊? 当然,这是针对Java虚拟机的限制所采取的一种权宜之计 — 如果我们不使用这个机制,那么我们的下一个最佳选项将逼迫你显式地在 components.xml 中列出所有的组件,就像其他某些竞争框架所做的那样!我想你会喜欢更喜欢我们这种方式。
在Java EE 5中配置Seam
如果你是在Java EE 5的环境下运行,这就是开始使用Seam所需的全部配置!
打包
一旦你将所有这些东西都打包到一个EAR文件中,该压缩文档看起来就会像这样:
my-application.ear/
jboss-seam.jar
lib/
jboss-el.jar
META-INF/
MANIFEST.MF
application.xml
my-application.war/
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
components.xml
faces-config.xml
lib/
jsf-facelets.jar
jboss-seam-ui.jar
login.jsp
register.jsp
...
my-application.jar/
META-INF/
MANIFEST.MF
persistence.xml
seam.properties
org/
jboss/
myapplication/
User.class
Login.class
LoginBean.class
Register.class
RegisterBean.class
...
你要在 META-INF/application.xml 中将 jboss-seam.jar 声明为一个EJB模块。 jboss-el.jar 应该被放置在EAR的lib目录下(将它放在EAR的classpath中)。
如果你想使用jBPM或Drools,你必须在EAR的lib目录下包含所需要的jar文件。
如果你想使用Facelets(我们建议使用),你必须在WAR的 WEB-INF/lib 目录下包含 jsf-facelets.jar
如果你想使用Seam标签库(大多数Seam应用程序都这么做),你就必须在WAR的 WEB-INF/lib 目录下包含 jboss-seam-ui.jar。 如果你想用PDF或者Email标签库,则需要在 WEB-INF/lib 目录下放置 jboss-seam-pdf.jar 或 jboss-seam-mail.jar。
如果你想要使用Seam调试页面(只在使用Facelets的应用程序中有效),你必须在WAR的 WEB-INF/lib 目录下包含jboss-seam-debug.jar
Seam发行时包括几个示例程序,他们能在任何支持EJB 3.0的Java EE容器中部署。
在J2EE中配置Seam
Seam很有用,即使你还没有冒险尝试EJB 3.0。在这种情况下,你可以使用Hibernate3或者JPA代替EJB 3.0持久化技术,并用简单的JavaBeans代替会话Bean。 你可能会错过会话bean的某些很好的特性,但是当你准备好时,这将会很容易迁移到EJB 3.0,同时,你将能利用Seam独特的声明式状态管理架构。
Seam JavaBean组件不会像会话Bean那样提供声明式事务划分。你 可以 使用 JTA UserTransaction 手动管理你的事务,或者使用Seam的 @Transactional 标注声明。 但是当与JavaBean一起使用Hibernate时,大部分应用程序只会用到由Seam管理的事务。
Seam发行包里包括预订示例程序的一种使用Hibernate3和JavaBeans而不是EJB3的版本,以及另一种使用JPA和JavaBeans的版本。 这些示例程序可以随时部署到任何J2EE应用程序服务器中。
在Seam中引导Hibernate
如果你装载了一个内建的组件,Seam将会从你的 hibernate.cfg.xml 文件中引导一个 Hibernate SessionFactory:
<persistence:hibernate-session-factory name="hibernateSessionFactory"/>
如果你想要通过注入得到一个由Seam管理的Hibernate Session,还需要配置一个 managed session。
<persistence:managed-hibernate-session name="hibernateSessionFactory"
session-factory="#{hibernateSessionFactory}"/>
在Seam中引导JPA
如果你装载了一个内建的组件,Seam将会从你的 persistence.xml 文件中引导一个 JPA EntityManagerFactory:
<persistence:entity-manager-factory name="entityManagerFactory"/>
如果你想要通过注入得到一个由Seam管理的JPA EntityManager,还需要配置一个 managed persistence context。
<persistence:managed-persistence-context name="entityManager"
entity-manager-factory="#{entityManagerFactory}"/>
打包
我们可以将我们的应用程序按照以下结构打包成一个WAR文件:
my-application.war/
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
components.xml
faces-config.xml
lib/
jboss-seam.jar
jboss-seam-ui.jar
jboss-el.jar
jsf-facelets.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-validator.jar
...
my-application.jar/
META-INF/
MANIFEST.MF
seam.properties
hibernate.cfg.xml
org/
jboss/
myapplication/
User.class
Login.class
Register.class
...
login.jsp
register.jsp
...
如果我们想要将Hibernate部署在一个非EE的环境中(如Tomcat或TestNG),我们需要多做一些工作。
发表评论
-
Seam管理的事务
2010-01-28 15:22 1203EJB会话Bean有声明式事务 ... -
配置Seam组件之二
2010-01-16 20:30 949如果你有大量的组件需要在XML中进行配置,那么就很有必要将 c ... -
配置Seam组件之一
2010-01-16 20:29 988Seam所崇尚的哲学是XML配 ... -
Seam上下文
2009-12-25 15:23 1023Seam上下文是由框架创建 ... -
JSF和Spring的集成之二
2009-12-23 17:55 953使用框架 1 介绍 这个 ... -
JSF和Spring的集成之一
2009-12-19 20:45 775JSF和Spring集成的资料比较少,原理是获得彼此的上下文引 ... -
Seam配置和Seam应用程序打包之一
2009-11-20 22:25 1151Seam基本配置 首先,让我们看看每当将Seam和JSF一起使 ... -
用Java Server Faces建立交互式WEB站点
2009-11-07 10:12 648步骤1:开发组件的Java ... -
集成JSF与BEEHIVE PAGE FLOW之二
2009-10-10 21:54 1041从后台bean访问当前页面 ... -
集成JSF与BEEHIVE PAGE FLOW之一
2009-10-07 23:13 1003JSF对通过关联组件和事件来构建页面而说是非常棒的,但是,与所 ... -
借助Ajax自动保存JSF表单之二
2009-09-19 12:53 1221创建和发送 Ajax 请求 submitFormData() ... -
借助 Ajax 自动保存 JSF 表单之一
2009-09-13 11:00 1108在客户端获取表单数据 本节将给出一个 JSF 表单,其数据通 ... -
基于AJAX和JSF打造丰富的互联网组件之Weblets篇
2009-09-04 15:08 949为了在JSF开发中联合使用AJAX和Mozilla XUL技术 ... -
JSF 2.0的一个AJAX例子
2009-08-21 10:49 2425首先创建一个ManagedBean用来记录我们提交按钮的数量。 ... -
JSF2.0的页面模版化
2009-08-15 10:28 1739本篇介绍可以与Tapestry相媲美的页面模版化定义。 我 ... -
JSF2.0中自定义组件模型例子
2009-08-11 07:59 1341在本篇介绍中,我们开始接触JSF2.0纳为标准的最重要的特性之 ... -
Java Server Faces 2.0重要新功能以及相关改进简介
2009-08-01 10:00 1092JSF 2.0的最终规范也已经发布了有近一个月了,在近期试 ... -
JSF2: Ajax事件和错误
2009-07-09 09:13 1096JSF2的Ajax支持包含一个 ... -
Facelets是JSF更好的外衣
2009-06-16 15:53 1591是由 Sun 公司在 dev.java.net 上的一个开源项 ... -
JSF里自订验证器
2009-06-06 16:52 939您可以自订自己的验证器,所需要的是实作javax.faces. ...
相关推荐
以下是对配置Seam和打包Seam应用程序的关键知识点的详细解释: ### 1. 基本Seam配置 #### 1.1.1. 集成Seam与JSF和Servlet容器 Seam与JSF的集成是其核心功能之一。这涉及到在web.xml文件中配置Seam Filter和Seam ...
而"MyMessages-ear"是一个Enterprise Archive文件,它是Java EE应用的打包格式,通常包含了一个应用的所有组件,如EJB JAR、WAR(Web应用程序)和其他资源文件。这个EAR文件可以被部署到Java EE服务器上,如JBOSS或...
- **将应用部署为 EAR**:介绍了如何将 Seam 应用程序打包成 EAR 文件进行部署。 - **Seam 与增量热部署**:介绍了如何利用 Seam 的增量热部署功能提高开发效率。 - **在 Jboss4.0 下使用 Seam**:这部分介绍了如何...
8. **RESTful的Seam应用程序:Blog示例**:通过一个博客系统,演示了如何使用Seam构建RESTful风格的服务。 - **使用“拉”风格的MVC**:解释了如何通过Seam实现客户端发起请求、服务器响应数据的经典MVC模式。 - *...
#### 四、配置Seam 进入Seam安装目录`C:\jboss-seam-2.2.1.CR3\jboss-seam-2.2.1.CR3`,修改`build.properties`文件,添加一行`jboss.home=C:\\jboss-5.1.0.GA-jdk6\\jboss-5.1.0.GA`。 #### 五、部署示例程序 1....
`components.xml` 文件是Seam应用的核心配置文件之一,它定义了Seam组件的元数据信息,包括组件的名称、范围、拦截器等。 **1.2.1.5 Web部署描述文件:web.xml** `web.xml` 文件是Web应用的部署描述文件,它定义了...
- **部署为EAR包**: 演示了如何将Seam应用打包并部署到生产环境。 - **热部署**: 介绍Seam支持的热部署特性,有助于提升开发效率。 #### 三、上下文相关的组件模型 ##### Seam上下文层次 - **无状态上下文**:...
##### 1.10 RESTful 的Seam应用程序:Blog范例 - **使用“拉”风格的MVC**:实现了基于 RESTful API 的博客系统。 - **可收藏的搜索结果页面**:允许用户收藏和分享搜索结果。 - **使用“推”风格的MVC**:展示了...
最后,运行 `seam explode` 命令,将生成的应用程序打包并部署到指定的 JBoss 应用服务器上。这个命令会将 Maven 构建的结果转换成 JBoss 可以直接运行的格式。 在整个过程中,Seam-gen 的目标是减少手动配置和...
1.6. 一个完整的Seam 应用程序:宾馆预订范例............................................................................................................ 45 1.6.1. 介绍......................................
5. 编写必要的配置文件,如faces-config.xml、persistence.xml等,以连接数据库和配置Seam组件。 6. 运行工程,Seam会自动处理依赖注入和事件处理,你可以通过浏览器查看和测试JSF页面。 **总结** "Eclipse工程的...
本篇文章将深入探讨如何使用Maven来管理Seam项目,一个基于Java EE的轻量级框架,专为富互联网应用程序(RIA)设计。 Seam项目是一个集成框架,它将JSF、EJB、CDI、JPA等Java EE技术紧密融合,提供了丰富的功能和...
- **部署方式**:这部分介绍了如何将Seam应用打包为Enterprise Archive (EAR) 文件进行部署。 通过上述内容的详细解读,我们不仅能够了解Seam框架的核心特性和应用场景,还能够学习如何通过具体的示例项目进行实践...
### 关于JBoss Seam的关键知识点 #### 一、引言:JBoss Seam简介 JBoss Seam是一个基于Java EE...通过深入学习这些示例和教程,开发者可以更好地掌握Seam的核心概念和技术,从而提高自己的开发效率和应用程序的质量。
Seam 2.1 是一款强大的企业级 Java 开发框架,它为开发人员提供了一种简单而高效的方式来构建复杂的 Web 应用程序。相较于 Seam 2.0 版本,Seam 2.1 在权限验证方面进行了大量的增强,引入了更多的功能和改进,以...
- **WAR部署**:当项目构建完成后,会自动生成一个WAR包(Web Application Archive),这是Java Web应用程序的标准打包格式。本节解释了WAR包的结构及其包含的文件和目录。 - **EAR部署**:与WAR不同,EAR...
- **运行示例测试:** 解释了如何使用自动化测试工具验证Seam应用程序的功能。 2. **第一个Seam应用:注册示例** - **理解代码:** 分析了用于实现用户注册功能的核心代码片段。 - **工作原理:** 解释了Seam是...
- **部署EAR包**:讲解了如何将Seam应用打包成EAR文件进行部署。 - **增量热部署**:讨论了如何在开发过程中使用增量热部署功能,提高开发效率。 - **与JBoss 4.0集成**:提供了与旧版JBoss服务器集成的步骤。 综上...
JBoss Seam是一款开源的企业级Java框架,它结合了模型-视图-控制器(MVC)模式、依赖注入(DI)和企业JavaBeans(EJB)3.0规范,旨在简化Java EE应用程序的开发过程。Seam的主要目标是将前端界面、业务逻辑和持久层...