- 浏览: 286733 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (121)
- jsf (16)
- 技术 (1)
- seam (27)
- jpa/hibernate (6)
- seam-对话 (3)
- 复用组件 (1)
- java基础 (18)
- JBOSS (1)
- Facelets (3)
- EL表达式 (2)
- 正则表达式 (1)
- sogi (2)
- 工具 (2)
- 设计模式/重构 (2)
- 项目管理-maven (5)
- EJB (1)
- ClassLoader (2)
- eclipse (1)
- jQuery (0)
- seam2源码分析 (0)
- osgi (0)
- TEST (0)
- 日志记录 (1)
- 批处理工作流 (0)
- 业务需求 (0)
- 语言 (2)
- 架构 (2)
- svn (1)
- sql (1)
- 异常处理 (1)
- mybatis (2)
- http (2)
- 代码可读性 (3)
- 配置化 (0)
- 错误恢复 (0)
- 状态查询 (1)
- 误操作恢复 (0)
- 工作安排 (0)
- 自动化 (0)
- 解耦 (1)
- 交流 (1)
- spring (6)
- 代码质量 (2)
- 方案 (1)
- 分布式 (1)
- mvc (2)
最新评论
-
luchuanbaker:
经过测试,实际上,mybatis并没有此问题,我也碰到了这样的 ...
mybatis 异常不友好 举例 -
huang882088:
jboss的war发布到tomcat里报这个错误怎么办?
classloader常见问题总结 -
yourenyouyu2008:
大型,可持续扩展的系统适合使用静态语言。大型系统中的部分地方可 ...
Nuxeo公司探秘:从Python迁移到Java -
yourenyouyu2008:
既然Nuxeo同时使用了Pytho ...
Nuxeo公司探秘:从Python迁移到Java -
panshunchang:
还有一种可能,真的缺这个jar包,在tomcat lib目录下 ...
classloader常见问题总结
components.xml 的配置采用反射机制来实现,组件类的私有属性照样可以设置(private String f1;)
如下的私有属性resolverChains没有提供get、set方法照样可以配置赋值 。之前我一直以为私有的属性是不可以设置的,原来大错特错了。
public class PermissionMapper implements Serializable
{
private Map<Class,Map<String,String>> resolverChains = new HashMap<Class,Map<String,String>>();
<security:permission-mapper default-resolver-chain="defaultChain" resolver-chains="#{resolverChains}">
</security:permission-mapper>
基本component配置
所有seam组件都可以使用基本component方式来配置,示例如下
<component class="org.jboss.seam.bpm.Jbpm"/>
<component name="customerDatabase"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<component name="accountingDatabase"
class="org.jboss.seam.persistence.ManagedPersistenceContext">
<property name="persistenceUnitJndiName">java:/accountingEntityManagerFactory</
property>
</component>
<component class="com.helloworld.Hello" name="hello">
<property name="name">#{user.name}</property>
</component>
xs:element name="component"
<xs:element name="component">
<xs:annotation>
<xs:documentation> The component tag defines a single Seam component. It may serve as to the root element of
a fine-grained *.component.xml file. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="components:property"
/>
</xs:sequence>
<xs:attributeGroup ref="components:attlist.component"/>
<xs:attributeGroup ref="components:attlist.ejbcomponent"/>
</xs:complexType>
</xs:element>
xs:element name="property"
<xs:element name="property">
<xs:annotation>
<xs:documentation>
A generic property. The body contains the value or values.
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="components:key" />
<xs:element ref="components:value" />
</xs:choice>
<xs:attributeGroup ref="components:attlist.property"/>
</xs:complexType>
</xs:element>
attlist.property
<property name=“name” type="org.manaty.mvno.portal.Party">
<xs:attributeGroup name="attlist.property">
<xs:attribute name="name" use="required" type="components:string">
<xs:annotation>
<xs:documentation>The property name</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="components:string" >
<xs:annotation>
<xs:documentation>Concrete type to use if the property is multi-valued</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
key
与vlaue配合使用
<property name="issueStatusOptions" type="java.util.LinkedHashMap">
<key>open</key> <value>open issue</value>
<key>resolved</key> <value>issue resolved by developer</value>
<key>closed</key> <value>resolution accepted by user</value>
</property>
<xs:element name="key" type="components:string">
<xs:annotation>
<xs:documentation>For map values, the key for the following value</xs:documentation>
</xs:annotation>
</xs:element>
最低级元素了,不能再有子元素
value
设置list,与key配合可以设置map
<value>processTestStock/processdefinition.xml</value>
<value>processTestStockRoaming/processdefinition.xml</value>
<xs:element name="value" type="components:string">
<xs:annotation>
<xs:documentation>
For list values, the value to be added.
For map values, the value for the preceding key
</xs:documentation>
</xs:annotation>
</xs:element>
最低级元素了,不能再有子元素
property属性取值
有三种方式设置property的值
1)直接字符串,只能设置String类型的属性
<property name="persistenceUnitJndiName">java:/accountingEntityManagerFactory</
property>
</component>
2)使用表达式,可以设置任意Object类型的属性
<property name="user">#{user}</property>
3)从components.properties(组件属性文件)中获取,只能是String
<property name="filename">@properties.filename@</property>
components.properties文件内容如下
jndiPattern=portal/#{ejbName}/local
debug=true
properties.filename=portal.properties
properties.reload=true
不是以@开头的直接返回即可 ,任何以@开头的都会从components.properties中获取,不单单是在 property中
<core:init debug="true" jndi-pattern="@jndiPattern@"/>
private String replace(String value, Properties replacements)
{
if (value.startsWith("@"))
{
value = replacements.getProperty(value.substring(1, value.length() - 1));
}
return value;
}
component只能有property子节点,property的属性级子节点的属性(key,value)都可以使用字符串和表达式两种形式,表达式可以设置object类型的值
map
可以使用key,value元素来实现map的配置,需要注意的是bean属性(map属性)的写法,配置会获取bean的属性,不管该属性是否有对应的set方法,将配置的值put进map中,所以属性值必须首先赋值( = new HashMap)
<security:permission-mapper default-resolver-chain="defaultChain">
<security:resolver-chains>
<key>org.manaty.model.party.Party</key><value>#{partyResolverMap.configMap}</value>
<key>org.manaty.model.order.Order</key><value>#{partyResolverMap.configMap}</value>
</security:resolver-chains>
</security:permission-mapper>
public class PermissionMapper implements Serializable
{
private Map<Class,Map<String,String>> resolverChains = new HashMap<Class,Map<String,String>>();
定义map组件
由于key、value是最底层的元素,所以不能定义嵌套的map,比如Map<Class,Map<String,String>>是不能直接定义的,需要将Map<String,String>定义成一个组件。
定义一个包含map的组件
<component name="partyResolverMap" class="org.manaty.util.SeamUtil" auto-create="true" scope="application">
<property name="configMap">
<key>restrictPartyResource</key><value>partyChain</value>
</property>
</component>
使用上面定义的map
<security:permission-mapper default-resolver-chain="defaultChain">
<security:resolver-chains>
<key>org.manaty.model.party.Party</key><value>#{partyResolverMap.configMap}</value>
<key>org.manaty.model.order.Order</key><value>#{partyResolverMap.configMap}</value>
</security:resolver-chains>
</security:permission-mapper>
public class SeamUtil {
private Map<String,String> configMap=new HashMap<String,String>();
public Map<String,String> getConfigMap() {
return configMap;
}
特定组件配置
seam对一些常用的内置组件定义定义了些schema,这样就可以利用编辑器的提示功能还编写组件配置了,这样可以提高效率。
<core:manager concurrent-request-timeout="500"
conversation-timeout="120000" conversation-id-parameter="cid"
parent-conversation-id-parameter="pid" />
所有特定组件都按照规定的模式来解析配置,所以即使系统没有提供对应的schema,我们也可以按照规则来使用。
1)在包中增加 package-info.java,用来定义namespace和prefix
@Namespace(value="http://jboss.com/products/seam/security", prefix="org.jboss.seam.security")
@AutoCreate
package org.jboss.seam.security.management;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Namespace;
不同的包可以有相同的 package-info.java定义
如下两个包中的package-info.java的定义是相同的
package org.jboss.seam.security.management
package org.jboss.seam.security;
2)tag name和属性名的拼写规则
<security:permission-mapper default-resolver-chain="defaultChain" resolver-chains="#{resolverChains}">
</security:permission-mapper>
tag name:permission-mapper对应类名PermissionMapper,将类名的首字母小写,中间的大写字母换成(-小写)
属性:default-resolver-chain对应private String defaultResolverChain;大写字母换成(-小写)
发表评论
-
spring seam比较
2014-01-14 14:06 9541)获取框架中的bean spring通过静态方法中传递 ... -
Nuxeo公司探秘:从Python迁移到Java
2013-07-21 10:57 1084成立于2000年的Nuxeo公 ... -
自定义组件问题
2013-03-01 10:14 01)ios:dataTable组件中不加buttonPane ... -
seam中内嵌的事务回滚拦截器RollbackInterceptor
2012-12-28 15:17 2119seam中有两种事务管理方 ... -
使用JTA的事务同步机制实现分布式事务j的功能avax.transaction.Synchronization
2012-12-05 18:43 0分布式事务强大功能,但也会带来性能和管理上的压力(这是听专家门 ... -
seam中的test
2012-04-25 11:25 0seam中提供了一些非seam环境下的unit testing ... -
Hibernate的FlushMode 和seam对话中的FlushMode
2012-02-21 17:29 0hibernate提供了5种flushmode。 1) NE ... -
seam 中的注释分类
2012-02-14 11:08 0seam中注释主要分为2大类,seam组件对象构造阶段的注释和 ... -
seam2 热部署
2011-09-30 10:25 1199seam能很好地支持 页面(faceslet)、非ejb cl ... -
使用长对话的"manual" flush-mode ,多操作一次提交
2011-03-24 10:27 1544一次长对话访问中可以包括多个页面,每个页面只处理部分数据,但不 ... -
seam 属性配置与installed="false"的冲突
2011-03-08 15:09 1120问题 在测试和运行环境使用不同的事务配置,默认不需要指定事务 ... -
最简单的richfaces tree使用方式
2010-10-30 12:54 2360richfaces tree提供的示例都是一次全部构造出树,对 ... -
page scope介绍及用途
2010-06-02 00:13 6303jsf1.2只提供了3中作用域,application、ses ... -
seam框架中@Unwrap的使用示例
2009-09-07 10:07 16571) 把FacesContext当seam组件使用,可以直接 ... -
基于seam技术的中文网站
2009-09-05 16:28 1360基于seam的中文网站,欢迎大家提供实际的seam项目 ht ... -
在seam项目启动后执行数据库操作
2009-07-15 15:33 1794项目启动时执行些初始化数据操作,问题是事务不能提交,这样虽然方 ... -
基于seam-gen的热部署(hot deploy)相关问题
2009-07-06 12:04 1493使用seam-gen生成的seam项目是支持热部署的。 ... -
提升jsf/seam性能
2009-05-23 22:07 1452转载:http://www.jsfcentral.com/ar ... -
根据组件名字获取组件对象Component.getInstance(String name)
2009-05-05 22:02 4042Component.getInstance(String ... -
下拉框的国际化
2009-04-22 17:32 2111<f:selectItem itemLabel=&quo ...
相关推荐
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
2. **配置与部署**:介绍如何设置Seam项目,包括pom.xml、seam.properties和web.xml的配置。 3. **JSF集成指南**:深入理解Seam与JSF的交互,包括Facelets模板和Seam组件的使用。 4. **EJB和CDI集成**:讲解Seam如何...
`components.xml`用于声明和配置Seam组件,而`seam.properties`则包含项目特定的配置选项。 4. **添加Seam库**:在项目中,需要导入Seam相关的JAR文件,这些文件通常可以从Seam官方网站或者Maven仓库下载。 5. **...
接着,通过注册示例详细展示了Seam的基础结构,包括实体Bean(如User)、无状态和有状态会话Bean、Seam组件部署描述文件(components.xml)、Web部署描述文件(web.xml)、JSF配置、EJB部署描述文件、持久化部署描述...
components.xml文件是Seam组件的部署描述符,它定义了应用中所有组件的配置信息,包括它们的生命周期、事件处理器、依赖关系等。 ##### 1.2.1.5 The web deployment description: web.xml web.xml文件是Web应用的...
4. **部署上下文**:Seam2通常假设在JNDI下可以找到其组件和服务,但在Tomcat中,你可能需要创建一个名为`META-INF/components.xml`的文件来声明和配置Seam组件。 5. **测试和调试**:在Tomcat中运行Seam应用可能...
- 创建Seam的组件配置文件`components.xml`,在这里声明你的实体管理器(EntityManager)和会话工厂(SessionFactory)。 - 使用@Name注解给实体管理器和会话工厂命名,便于在代码中引用。 4. **创建注册表单** ...
这可能包括数据库连接配置、Seam配置文件(如`components.xml`)等,对于理解和使用Seam框架来说至关重要。 通过学习和实践这个压缩包中的源码,你可以了解到: 1. **Seam框架的基本概念**:如组件(Components)...
components.xml文件是Seam框架的核心配置文件,用于定义Seam组件的部署信息。 Seam页面流 Seam页面流是一个基于jPDL的业务流程管理系统,能够帮助开发者快速构建企业级应用程序。Seam页面流提供了一个统一的编程...
- **组件部署描述符** (`components.xml`):配置了Seam组件及其依赖关系。 - **Web部署描述符** (`web.xml`):配置了Web应用的基本设置。 - **JSF配置** (`faces-config.xml`):配置了JSF组件及其生命周期管理。 - *...
### JBoss Seam 2.01GA REF DOC #### 引言:JBoss Seam...- **配置组件**:在 `components.xml` 文件中配置新动作组件。 以上是对 JBoss Seam 2.01GA REF DOC 的详细解读,希望对您理解和掌握 JBoss Seam 有所帮助。
- **Seam组件部署描述符**:`components.xml`配置了组件的元数据,如事件监听器、转换器等。 - **Web部署描述符**:`web.xml`配置了应用级别的信息,如过滤器、欢迎页面等。 - **JSF配置文件**:`faces-config.xml`...
- **Seam组件**: - **无状态SessionBean**:执行短暂的任务。 - **有状态SessionBean**:保持状态,适用于长时间的操作。 - **实体Bean**:代表数据库中的实体。 - **JavaBeans**:简单的 Java 对象,用于封装...
components.xml是一个XML文件,用于定义Seam组件的各种配置信息。这种方式更加灵活,可以提供更精细的控制。 ##### 4.3 细粒度的配置文件 除了components.xml之外,还可以使用更细粒度的配置文件来指定特定组件的...
2. **定义Seam组件**: Seam组件是应用程序的核心,可以通过XML配置文件(components.xml)或使用注解(@Name)来创建。组件可以是简单的Java类,也可以是EJB、Managed Beans或其他Java EE服务。 3. **实现业务逻辑*...
5. **配置和实现**:在Seam应用中,我们需要配置安全设置,这通常在`components.xml`或` seam-security.xml`文件中完成。这包括设置认证和授权策略,以及指定哪些URL需要进行安全拦截。 6. **动态权限**:Seam的...
- **Seam Components编辑器**:对于编辑Seam组件而言,Seam Components编辑器提供了丰富的工具集。 - **Seam编辑器的主要特点**:这部分内容概括了Seam编辑器的一些主要特性,如内容辅助、Open On功能和Seam验证等。...
- **减少 XML 配置**:Seam 支持基于注解的配置,这大大减少了需要手动编写的 XML 配置文件的数量。 - **集成 JSF**:Seam 与 JavaServer Faces (JSF) 框架紧密集成,为开发者提供了一种构建动态 Web 用户界面的...