- 浏览: 122785 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
sunxiangfei91:
引用[*][url][/url]
Spring使用MimeMessageHelper -
lhb3015:
lz, Coder 这个类的代码呢??
Java RSA算法加密 -
b_lee:
顶顶顶 加两个字,再顶
Facelets是JSF更好的外衣 -
zhuqing08:
楼主 Coder 这个类的代码呢?
Java RSA算法加密 -
evajhhot:
貌似不行 有异常
BlazeDS 与Spring集成指南之一
Seam所崇尚的哲学是XML配置最小化。不过,基于不同的原因,我们有时候还是要利用XML来配置Seam组件。这些原因包括: 将Java代码与特定于部署的信息分离;要建立可重用的框架;配置Seam的内置功能等等。 Seam提供了两种基本的配置组件方法:通过在properties文件或者 web.xml 中设置属性来配置, 或者通过 components.xml 进行配置。
通过属性设置来配置组件
Seam组件的配置属性可以通过两种方式得到:通过servlet context参数,或者通过位于classpath下的 seam.properties 属性文件进行。
可配置的Seam组件必须为可配置的属性暴露JavaBean风格的属性setter方法。例如,一个名为 com.jboss.myapp.settings 的Seam组件拥有一个名为 setLocale() 的setter方法,我们就可以在 seam.properties 文件中提供一个名为 com.jboss.myapp.settings.locale 的属性,或者作为一个servlet context参数, 这样,一旦该组件被实例化,Seam将自动为这个名为 locale 的属性注入相应的值。
Seam本身的配置也采用了相同的机制。例如,要设置对话超时,我们可以在 web.xml 或者 seam.properties 中为 org.jboss.seam.core.manager.conversationTimeout 提供一个值。 (在Seam内置的组件 org.jboss.seam.core.manager 中,已经包含了一个名为 setConversationTimeout() 的setter方法。)
通过 components.xml 来配置组件
components.xml 文件的功能要比属性设置的更强大一些。它让你:
配置那些已经被自动安装的组件—包括内置组件以及那些带有 @Name 注解, 且被Seam的部署扫描器识别到的那些应用组件。
将那些没有 @Name 注解的类安装成为Seam组件— 这一点对于那些需要以不同的名字进行多次安装的结构组件特别有用(例如,Seam管理的持久化上下文)。
安装那些 仅 具有 @Name 注解,但是默认情况下未被安装的Seam组件。 因为 @Install 注解表明该组件不应当被安装。
覆盖组件的范围。
components.xml 文件可以出现在下面三个不同地方中的任何一处:
war 包的 WEB-INF 目录下。
jar 包的 META-INF 目录下。
包含带有 @Name 注解类的 jar 包下的任何目录。
通常情况下,当Seam部署扫描器在包含 seam.properties 文件或者 META-INF/components.xml 文件的文件夹中识别到一个包含 @Name 注解的类时, Seam将安装载该组件。(除非这个组件具有一个 @Install 注解,表示它不应该被默认安装。) components.xml 文件让我们去处理那些需要覆盖注解的特殊情况。
例如,下面的 components.xml 文件安装了jBPM:
<components xmlns="http://jboss.com/products/seam/components"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bpm="http://jboss.com/products/seam/bpm">
<bpm:jbpm/>
</components>
这个例子实现了相同的功能:
<components>
<component class="org.jboss.seam.bpm.Jbpm"/>
</components>
这个例子安装并配置了Seam管理的两个不同的持久化上下文:
<components xmlns="http://jboss.com/products/seam/components"
xmlns:persistence="http://jboss.com/products/seam/persistence"
<persistence:managed-persistence-context name="customerDatabase"
persistence-unit-jndi-name="java:/customerEntityManagerFactory"/>
<persistence:managed-persistence-context name="accountingDatabase"
persistence-unit-jndi-name="java:/accountingEntityManagerFactory"/>
</components>
这个例子也一样:
<components>
<component name="customerDatabase"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName">java:/customerEntityManagerFactory</property>
</component>
<component name="accountingDatabase"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName">java:/accountingEntityManagerFactory</property>
</component>
</components>
这个例子创建了一个Seam管理的session范围持久化上下文(这在实际项目中并不推荐使用)
<components xmlns="http://jboss.com/products/seam/components"
xmlns:persistence="http://jboss.com/products/seam/persistence"
<persistence:managed-persistence-context name="productDatabase"
scope="session"
persistence-unit-jndi-name="java:/productEntityManagerFactory"/>
</components>
<components>
<component name="productDatabase"
scope="session"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName">java:/productEntityManagerFactory</property>
</component>
</components>
通常会给像持久化上下文这样的基础结构对象使用 auto-create 选项, 它能在你使用 @In 注解时,不必显式地指定 create=true。
<components xmlns="http://jboss.com/products/seam/components"
xmlns:persistence="http://jboss.com/products/seam/persistence"
<persistence:managed-persistence-context name="productDatabase"
auto-create="true"
persistence-unit-jndi-name="java:/productEntityManagerFactory"/>
</components>
<components>
<component name="productDatabase"
auto-create="true"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName">java:/productEntityManagerFactory</property>
</component>
</components>
<factory> 声明让你指定一个值或者方法来绑定一个表达式,当它第一次被引用时,将被执行用来初始化一个context变量的值。
<components>
<factory name="contact" method="#{contactManager.loadContact}" scope="CONVERSATION"/>
</components>
你也可以为Seam组件创建一个别名(第二个名字),就像这样:
<components>
<factory name="user" value="#{actor}" scope="STATELESS"/>
</components>
你甚至可以给常用的表达式定义别名:
<components>
<factory name="contact" value="#{contactManager.contact}" scope="STATELESS"/>
</components>
auto-create="true" 用在 <factory> 声明中尤其常见。
<components>
<factory name="session" value="#{entityManager.delegate}" scope="STATELESS" auto-create="true"/>
</components>
我们在部署或者测试期间,有时候想要通过略微的改动,来重用同一个 components.xml文件。 Seam允许你在 components.xml 文件中使用 @wildcard@ 形式的通配符, 这些通配符可以在部署的时候被Ant构建脚本替换,也可以在开发时通过在classpath中提供一个名为 components.properties 的文件进行替换。 你会在Seam的示例程序中找到这个用法。
通过属性设置来配置组件
Seam组件的配置属性可以通过两种方式得到:通过servlet context参数,或者通过位于classpath下的 seam.properties 属性文件进行。
可配置的Seam组件必须为可配置的属性暴露JavaBean风格的属性setter方法。例如,一个名为 com.jboss.myapp.settings 的Seam组件拥有一个名为 setLocale() 的setter方法,我们就可以在 seam.properties 文件中提供一个名为 com.jboss.myapp.settings.locale 的属性,或者作为一个servlet context参数, 这样,一旦该组件被实例化,Seam将自动为这个名为 locale 的属性注入相应的值。
Seam本身的配置也采用了相同的机制。例如,要设置对话超时,我们可以在 web.xml 或者 seam.properties 中为 org.jboss.seam.core.manager.conversationTimeout 提供一个值。 (在Seam内置的组件 org.jboss.seam.core.manager 中,已经包含了一个名为 setConversationTimeout() 的setter方法。)
通过 components.xml 来配置组件
components.xml 文件的功能要比属性设置的更强大一些。它让你:
配置那些已经被自动安装的组件—包括内置组件以及那些带有 @Name 注解, 且被Seam的部署扫描器识别到的那些应用组件。
将那些没有 @Name 注解的类安装成为Seam组件— 这一点对于那些需要以不同的名字进行多次安装的结构组件特别有用(例如,Seam管理的持久化上下文)。
安装那些 仅 具有 @Name 注解,但是默认情况下未被安装的Seam组件。 因为 @Install 注解表明该组件不应当被安装。
覆盖组件的范围。
components.xml 文件可以出现在下面三个不同地方中的任何一处:
war 包的 WEB-INF 目录下。
jar 包的 META-INF 目录下。
包含带有 @Name 注解类的 jar 包下的任何目录。
通常情况下,当Seam部署扫描器在包含 seam.properties 文件或者 META-INF/components.xml 文件的文件夹中识别到一个包含 @Name 注解的类时, Seam将安装载该组件。(除非这个组件具有一个 @Install 注解,表示它不应该被默认安装。) components.xml 文件让我们去处理那些需要覆盖注解的特殊情况。
例如,下面的 components.xml 文件安装了jBPM:
<components xmlns="http://jboss.com/products/seam/components"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bpm="http://jboss.com/products/seam/bpm">
<bpm:jbpm/>
</components>
这个例子实现了相同的功能:
<components>
<component class="org.jboss.seam.bpm.Jbpm"/>
</components>
这个例子安装并配置了Seam管理的两个不同的持久化上下文:
<components xmlns="http://jboss.com/products/seam/components"
xmlns:persistence="http://jboss.com/products/seam/persistence"
<persistence:managed-persistence-context name="customerDatabase"
persistence-unit-jndi-name="java:/customerEntityManagerFactory"/>
<persistence:managed-persistence-context name="accountingDatabase"
persistence-unit-jndi-name="java:/accountingEntityManagerFactory"/>
</components>
这个例子也一样:
<components>
<component name="customerDatabase"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName">java:/customerEntityManagerFactory</property>
</component>
<component name="accountingDatabase"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName">java:/accountingEntityManagerFactory</property>
</component>
</components>
这个例子创建了一个Seam管理的session范围持久化上下文(这在实际项目中并不推荐使用)
<components xmlns="http://jboss.com/products/seam/components"
xmlns:persistence="http://jboss.com/products/seam/persistence"
<persistence:managed-persistence-context name="productDatabase"
scope="session"
persistence-unit-jndi-name="java:/productEntityManagerFactory"/>
</components>
<components>
<component name="productDatabase"
scope="session"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName">java:/productEntityManagerFactory</property>
</component>
</components>
通常会给像持久化上下文这样的基础结构对象使用 auto-create 选项, 它能在你使用 @In 注解时,不必显式地指定 create=true。
<components xmlns="http://jboss.com/products/seam/components"
xmlns:persistence="http://jboss.com/products/seam/persistence"
<persistence:managed-persistence-context name="productDatabase"
auto-create="true"
persistence-unit-jndi-name="java:/productEntityManagerFactory"/>
</components>
<components>
<component name="productDatabase"
auto-create="true"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName">java:/productEntityManagerFactory</property>
</component>
</components>
<factory> 声明让你指定一个值或者方法来绑定一个表达式,当它第一次被引用时,将被执行用来初始化一个context变量的值。
<components>
<factory name="contact" method="#{contactManager.loadContact}" scope="CONVERSATION"/>
</components>
你也可以为Seam组件创建一个别名(第二个名字),就像这样:
<components>
<factory name="user" value="#{actor}" scope="STATELESS"/>
</components>
你甚至可以给常用的表达式定义别名:
<components>
<factory name="contact" value="#{contactManager.contact}" scope="STATELESS"/>
</components>
auto-create="true" 用在 <factory> 声明中尤其常见。
<components>
<factory name="session" value="#{entityManager.delegate}" scope="STATELESS" auto-create="true"/>
</components>
我们在部署或者测试期间,有时候想要通过略微的改动,来重用同一个 components.xml文件。 Seam允许你在 components.xml 文件中使用 @wildcard@ 形式的通配符, 这些通配符可以在部署的时候被Ant构建脚本替换,也可以在开发时通过在classpath中提供一个名为 components.properties 的文件进行替换。 你会在Seam的示例程序中找到这个用法。
发表评论
-
Seam管理的事务
2010-01-28 15:22 1197EJB会话Bean有声明式事务 ... -
配置Seam组件之二
2010-01-16 20:30 944如果你有大量的组件需要在XML中进行配置,那么就很有必要将 c ... -
Seam上下文
2009-12-25 15:23 1019Seam上下文是由框架创建 ... -
JSF和Spring的集成之二
2009-12-23 17:55 944使用框架 1 介绍 这个 ... -
JSF和Spring的集成之一
2009-12-19 20:45 767JSF和Spring集成的资料比较少,原理是获得彼此的上下文引 ... -
Seam配置和Seam应用程序打包之二
2009-11-28 09:15 1293将Seam与你的EJB容器集成 我们需要将 SeamInter ... -
Seam配置和Seam应用程序打包之一
2009-11-20 22:25 1139Seam基本配置 首先,让我们看看每当将Seam和JSF一起使 ... -
用Java Server Faces建立交互式WEB站点
2009-11-07 10:12 639步骤1:开发组件的Java ... -
集成JSF与BEEHIVE PAGE FLOW之二
2009-10-10 21:54 1034从后台bean访问当前页面 ... -
集成JSF与BEEHIVE PAGE FLOW之一
2009-10-07 23:13 996JSF对通过关联组件和事件来构建页面而说是非常棒的,但是,与所 ... -
借助Ajax自动保存JSF表单之二
2009-09-19 12:53 1215创建和发送 Ajax 请求 submitFormData() ... -
借助 Ajax 自动保存 JSF 表单之一
2009-09-13 11:00 1099在客户端获取表单数据 本节将给出一个 JSF 表单,其数据通 ... -
基于AJAX和JSF打造丰富的互联网组件之Weblets篇
2009-09-04 15:08 938为了在JSF开发中联合使用AJAX和Mozilla XUL技术 ... -
JSF 2.0的一个AJAX例子
2009-08-21 10:49 2420首先创建一个ManagedBean用来记录我们提交按钮的数量。 ... -
JSF2.0的页面模版化
2009-08-15 10:28 1733本篇介绍可以与Tapestry相媲美的页面模版化定义。 我 ... -
JSF2.0中自定义组件模型例子
2009-08-11 07:59 1333在本篇介绍中,我们开始接触JSF2.0纳为标准的最重要的特性之 ... -
Java Server Faces 2.0重要新功能以及相关改进简介
2009-08-01 10:00 1086JSF 2.0的最终规范也已经发布了有近一个月了,在近期试 ... -
JSF2: Ajax事件和错误
2009-07-09 09:13 1093JSF2的Ajax支持包含一个 ... -
Facelets是JSF更好的外衣
2009-06-16 15:53 1578是由 Sun 公司在 dev.java.net 上的一个开源项 ... -
JSF里自订验证器
2009-06-06 16:52 931您可以自订自己的验证器,所需要的是实作javax.faces. ...
相关推荐
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
Seam与JSF的集成是其核心功能之一。这涉及到在web.xml文件中配置Seam Filter和Seam Listener,以便处理JSF请求生命周期中的事件,并确保Seam组件与JSF页面正确交互。 #### 1.1.2. 使用Facelets Facelets是JSF推荐...
#### 四、Seam组件配置 ##### 配置方式 - **通过属性设置**: 在组件类中直接定义属性值。 - **通过components.xml文件**: 更灵活地配置组件行为,无需修改源代码。 - **细粒度配置文件**: 为特定组件或组件组提供...
理解如何配置Seam项目以及依赖管理是非常重要的。 7. **开发环境**:使用Seam通常需要IDE支持,如NetBeans、Eclipse等,熟悉IDE的使用可以提高开发效率。同时,确保安装了JDK和对应的Java EE服务器,如Glassfish或...
- **定义与功能**:Seam是一个建立在Java EE 5之上的全功能应用框架,同时也是当前最受欢迎的企业级Java框架之一。它深入整合了许多基于标准或开源框架(如JSF、EJB3、JMS、Web Services、jBPM、JBoss Rules、Ajax4...
- **新建Seam Action**:Seam Actions是Seam框架的核心组成部分之一。这部分内容详细介绍了如何通过向导来创建一个新的Seam Action。 - **新建Seam Form**:Seam Forms允许开发者轻松地创建表单,并处理用户的输入...
Seam的核心特性之一是其自动管理的组件系统,这得益于`CDI`。CDI允许开发者声明依赖关系,容器会自动注入所需的服务,极大地简化了代码,并提高了可测试性和可维护性。此外,Seam还整合了`EJB`,使得开发者可以轻松...
- **在 JBoss AS 上运行示例**:这是最直接的方式之一,可以快速验证环境配置是否正确,并且熟悉 Seam 在 JBoss AS 上的运行方式。 - **在 Tomcat 服务器上运行示例**:如果开发者已经熟悉了 Tomcat,那么这种方式...
本部分将详细介绍如何通过不同方式来配置Seam组件。 ##### 4.1 通过属性设置来配置组件 可以通过设置组件的属性来配置组件的行为。这种方式相对简单,适用于基本的配置需求。 ##### 4.2 通过components.xml来配置...
- **Seam组件描述符**:为了更好地管理组件,Seam引入了一个组件描述符的概念。这个描述符定义了组件的行为、属性以及其他配置信息。 - **绝对控制反转**:Seam通过使用控制反转(IoC)原则,进一步增强了组件的灵活...
由于Seam的主要贡献者之一Gavin King同时也是Hibernate的创造者,因此Seam在设计之初就考虑到了如何更好地支持ORM,使得开发者可以轻松地处理延迟加载等场景。 **2. 改善JSF** Seam还提供了一套增强JSF的工具,...
Seam组件描述符用于描述组件的元数据,包括组件的类型、属性、事件处理等信息。这些描述符通常通过注解的形式添加到类上,使得Seam能够自动识别并配置组件。 **6. 绝对控制反转** 绝对控制反转是Seam的一个重要...
Seam 的强大之处在于它简化了 JSF、EJB 和其他 Java 技术的集成,使得开发人员能够更专注于业务逻辑,而无需过多关注底层实现。此外,Seam 提供了事件驱动的编程模型和组件化架构,增强了应用程序的灵活性和可维护性...
JSF作为Java Web应用程序的标准框架之一,虽然提供了强大的事件驱动API和用户界面组件库,但其本身并不是一个完整的Web应用框架。这导致了开发者在构建复杂应用时需要额外的工具来填补JSF功能上的空白。 #### 二、...
Spring 框架也是另一种广受欢迎的集成框架,它通过 XML 配置文件提供了一种灵活的方式来管理应用程序中的组件。虽然 Spring 极大地提高了组件管理和配置的灵活性,但它仍然要求开发者手动处理多个不同框架之间的交互...
- **GlassFish/SJSAS设置**:Sun Java System Application Server 9(SJSAS),现在通常被称为GlassFish,是开发和部署Java EE应用的首选服务器之一。文档指导读者如何在NetBeans中配置GlassFish服务器,以便进行...
4. **Seam Security API**:Seam提供了一系列的API和组件,如`Security`、`SessionContext`和`Identity`,用于在运行时检查用户权限。例如,`Security.checkPermission()`方法可以用来动态检查用户是否有执行特定...
在 Seam 2.1 中,最显著的变化之一就是增强了安全性方面的功能,尤其是在用户权限验证机制上。这一版本不仅提供了更为精细的权限控制选项,还增加了对最新安全标准的支持,如更严格的密码策略和会话管理机制等。 ##...