通过 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 - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
- **Seam组件部署描述符**:`components.xml`配置了组件的元数据,如事件监听器、转换器等。 - **Web部署描述符**:`web.xml`配置了应用级别的信息,如过滤器、欢迎页面等。 - **JSF配置文件**:`faces-config.xml`...
- **组件部署描述文件**:`components.xml` 配置了 SEAM 组件。 - **Web部署描述文件**:`web.xml` 配置了 Web 应用的基础设置。 - **JSF配置**:`faces-config.xml` 定义了 JSF 的视图转换规则。 - **EJB部署...
Seam组件可以通过-components.xml文件来部署。components.xml文件是Seam框架的核心配置文件,用于定义Seam组件的部署信息。 Seam页面流 Seam页面流是一个基于jPDL的业务流程管理系统,能够帮助开发者快速构建企业...
components.xml文件是Seam组件的部署描述符,它定义了应用中所有组件的配置信息,包括它们的生命周期、事件处理器、依赖关系等。 ##### 1.2.1.5 The web deployment description: web.xml web.xml文件是Web应用的...
### JBoss Seam 2.01GA REF DOC #### 引言:JBoss Seam...- **配置组件**:在 `components.xml` 文件中配置新动作组件。 以上是对 JBoss Seam 2.01GA REF DOC 的详细解读,希望对您理解和掌握 JBoss Seam 有所帮助。
`components.xml`用于声明和配置Seam组件,而`seam.properties`则包含项目特定的配置选项。 4. **添加Seam库**:在项目中,需要导入Seam相关的JAR文件,这些文件通常可以从Seam官方网站或者Maven仓库下载。 5. **...
2. **配置与部署**:介绍如何设置Seam项目,包括pom.xml、seam.properties和web.xml的配置。 3. **JSF集成指南**:深入理解Seam与JSF的交互,包括Facelets模板和Seam组件的使用。 4. **EJB和CDI集成**:讲解Seam如何...
接着,通过注册示例详细展示了Seam的基础结构,包括实体Bean(如User)、无状态和有状态会话Bean、Seam组件部署描述文件(components.xml)、Web部署描述文件(web.xml)、JSF配置、EJB部署描述文件、持久化部署描述...
- **组件部署描述符** (`components.xml`):配置了Seam组件及其依赖关系。 - **Web部署描述符** (`web.xml`):配置了Web应用的基本设置。 - **JSF配置** (`faces-config.xml`):配置了JSF组件及其生命周期管理。 - *...
4. **部署上下文**:Seam2通常假设在JNDI下可以找到其组件和服务,但在Tomcat中,你可能需要创建一个名为`META-INF/components.xml`的文件来声明和配置Seam组件。 5. **测试和调试**:在Tomcat中运行Seam应用可能...
- **Seam 组件部署描述文件:components.xml**:配置 Seam 组件的元数据。 - **Web 部署描述文件:web.xml**:配置 Web 应用程序的基本信息。 - **JSF 配置:faces-config.xml**:配置 JSF 的页面流和其他相关...
- 创建Seam的组件配置文件`components.xml`,在这里声明你的实体管理器(EntityManager)和会话工厂(SessionFactory)。 - 使用@Name注解给实体管理器和会话工厂命名,便于在代码中引用。 4. **创建注册表单** ...
- **Seam Components编辑器**:对于编辑Seam组件而言,Seam Components编辑器提供了丰富的工具集。 - **Seam编辑器的主要特点**:这部分内容概括了Seam编辑器的一些主要特性,如内容辅助、Open On功能和Seam验证等。...
- **通过components.xml文件**: 更灵活地配置组件行为,无需修改源代码。 - **细粒度配置文件**: 为特定组件或组件组提供专门的配置选项。 #### 总结 通过以上知识点的梳理,我们可以看到Seam不仅仅是一个简单的Web...
如果需要自定义验证逻辑,可以在 `components.xml` 文件中创建一个名为 `identity` 的组件,并指定 `authenticate-method` 为自定义验证方法的 EL 表达式,如 `#{authenticator.authenticate}`。 **编写验证方法**...
##### 4.2 通过components.xml来配置组件 components.xml是一个XML文件,用于定义Seam组件的各种配置信息。这种方式更加灵活,可以提供更精细的控制。 ##### 4.3 细粒度的配置文件 除了components.xml之外,还...
2. **定义Seam组件**: Seam组件是应用程序的核心,可以通过XML配置文件(components.xml)或使用注解(@Name)来创建。组件可以是简单的Java类,也可以是EJB、Managed Beans或其他Java EE服务。 3. **实现业务逻辑*...