`
Javabengou
  • 浏览: 173528 次
  • 性别: Icon_minigender_1
  • 来自: 郴州
社区版块
存档分类
最新评论

JBOSS SEAM 起步(翻译一)

阅读更多
在此分享下JBOSS SEAM的东西,翻译中肯定有不对和不足的地方,希望大家提出
或者点出错误的地方!

 这里讲下JBOSS SEAM官方文档的起步,让大家对JBoss Seam有个大体的认识。
大家认真的看完一定能有收获的,很多的配置文件可以在IDE中自动完成,
我附上这么多文件只是为了更好的说明JBOSS SEAM。










          User.java


@Entity                                                                                                                         (1)
@Name("user")                                                                                                           (2)
@Scope(SESSION)                                                                                                   (3)
@Table(name="users")                                                                                              (4)
public class User implements Serializable
{
private static final long serialVersionUID = 1881413500711441951L;
private String username;                                                                                             (5)
private String password;
private String name;
public User(String name, String password, String username)
{
this.name = name;
this.password = password;
this.username = username;
}
public User() {}                                                                                                             (6)
@NotNull @Length(min=5, max=15)                                                                         (7)
public String getPassword(){
return password;
}
public void setPassword(String password)
{
this.password = password;
}
@NotNull
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
@Id @NotNull @Length(min=5, max=15)                                                                 (8)
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
}
大家注意看代码后面括号中的数字和下面的对应
(1)@Entity 是EJB3.0中用来声明实体bean的注释,

           学过EJB3.0的很容易就能看出来。

(2)@Name("user")  这个便是JBOSS SEAM中两个核心概念中的一个
(JBOSS SEAM 两个核心概念context和component)component,
即你在此处注释实体bean在JBOSS SEAM上下文中name,
以后可以通过这个name在JBOSS SEAM上下文中找到此entity bean,
这里要说明的是name这个注释的名字必须唯一,
还有在EJB3.0中entity bean得到简化,
所以JSF中可以直接通过这个name的名字来访问entity bean。
在JSF中可以通过组件的属性value=#{user.name} 
or  value=#{user.password} 来关联这个entity bean。

(3)因为上面已经把entity bean用@Name("user")
绑定到了JBOSS SEAM的上下文中,
@Scope(SESSION)  这个注释就表示
这个entity bean是个session 范围的component。

(4)@Table(name="users")   这个注释是EJB3.0中映射到数据库的注释
,即映射到数据库名为
users的数据表格。

(5)name, password , username即entity bean  User的属性。

(6)public User() {}    这个就不多说 了,学JAVA的都知道,
不过这里要说的是public User() {} 
不管在entity bean或者jboss seam都是必须的。

(7)@NotNull @Length(min=5, max=15)
这里是hibernate的验证框架的部分,
因为jboss seam整合了hibernate让你使用他的数据验证机制
(即使你不使用hibernate来持久化数据)。

(8)@Id这里是EJB3.0的主键注释,
即表示这个entity bean的属性对应数据库中的主键。


The stateless session bean class: RegisterAction.java

@Stateless                                                                                                                           (1)
@Name("register")
public class RegisterAction implements Register
{
@In                                                                                                                                         (2)
private User user;
@PersistenceContext                                                                                                          (3)
private EntityManager em;
@Logger                                                                                                                                (4)
private Log log;
public String register()                                                                                                          (5)
{
List existing = em.createQuery(
"select username from User where username=#{user.username}")                                (6)
.getResultList();
if (existing.size()==0)
{
em.persist(user);
log.info("Registered new user #{user.username}");                                                           (7)
return "/registered.xhtml";                                                                                                      (8)
}
else
{
FacesMessages.instance().add("User #{user.username} already exists");                   (9)
return null;
}
}
}

现在来说下EJB3.0中的stateless session bean  RegisterAction.java
(1)@Stateless
这个注释说明RegisterAction.java为stateless session bean 这个就不多说。

(2)@In,
通过JBOSS SEAM注入标记这个bean的属性,
事实上通过一个名为user的上下文变量来注入这个属性的


(3)@PersistenceContext  
这个是EJB3.0中关于EntityManager的注释,
可以去查看EJB3.0相关书籍,也可以通过上面的代码理解它的意思。


(4)@Logger    这个是表示日志实体的注释。


(5)public String register()   
这个方法就是JSF的事件方法 了
即JSF的动作组件通过Action属性与之关联在后面的页面中能看到。

(6)"select username from User where username=#{user.username}")
呵呵,看到这个大家应该有点触动才对,
在一个JPA查询语句中使用JSF的EL表达式,
难道不值得感叹下吗?!相当于JPA 的setParameter()。

(7)log.info("Registered new user #{user.username}");
还有这个地方也是使用JSF的EL表达式,
估计大家能想到JBOSS SEAM强大之处了吧,
强a,我当时看的时候也佩服!

(8)return "/registered.xhtml";
这个就不用说了,是JSF里导航的String.

(9)FacesMessages.instance().add("User #{user.username} already exists");
这里要说明一个JBOSS SEAM 中的component即built-in ,
用来解决共同的问题。
在这里你可以很容易的通过FacesMessages component来显示成功或错误消息。
对与Built-in Seam components可以通过注入获得也可以通过instance()调用。


The session bean local interface: Register.java


@Local
public interface Register
{
public String register();
}

这个看下EJB3.0的书吧,很容易明白。



JBOSS SEAM的部署描述文件components.xml

<components xmlns="http://jboss.com/products/seam/components"></components>
<core:init jndi-pattern="@jndiPattern@">
</core:init>



很多人做过项目的话都知道,
在开发的过程中会有很多的component classes配置在各种不同的XML文件中
,这样的话XML中的配置越来越多,而且日后可能很难管理。
不过对于JBOSS SEAM你可以松口气了,
因为上面的这些在JBOSS SEAM中不是必须的,
虽然JBOSS SEAM也会需要数量很少的XML,
但不会使你感觉到臃肿。
对与JBOSS SEAM的XML文件,他只是为了提供一些额外的components配置,
即components.xml被放在WEB-INF目录下。
这个XML能告诉JBOSS SEAM怎么样在JNDI中找到我们的EJB components.


The web deployment description: web.xml
<web-app version="2.5"></web-app><session-config></session-config><session-timeout></session-timeout>
<web-app version="2.5"></web-app><servlet-mapping></servlet-mapping><session-config></session-config><session-timeout></session-timeout>


The JSF configration: faces-config.xml

<faces-config version="1.2"></faces-config><faces-config version="1.2"></faces-config>


The EJB deployment descriptor: ejb-jar.xml
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"></ejb-jar><assembly-descriptor></assembly-descriptor><ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"></ejb-jar>



The EJB persistence deployment descriptor: persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"></persistence> <persistence-unit name="userDatabase"></persistence-unit> <jta-data-source></jta-data-source>

<persistence xmlns="http://java.sun.com/xml/ns/persistence"></persistence>
<persistence-unit name="userDatabase"></persistence-unit> <jta-data-source></jta-data-source> <properties></properties> <property name="hibernate.hbm2ddl.auto" value="create-drop"></property> <properties></properties> register.xhtml

<f:view><h:form><s:validateall><h:panelgrid columns="2"><h:inputtext value="#{user.username}" required="true"><h:messages><h:commandbutton value="Register" action="#{register.register}"></h:commandbutton></h:messages></h:inputtext></h:panelgrid></s:validateall></h:form></f:view>


<f:view><h:form><s:validateall><h:panelgrid columns="2"><h:inputtext value="#{user.username}" required="true"><h:inputtext value="#{user.name}" required="true"></h:inputtext><h:messages><h:commandbutton value="Register" action="#{register.register}"></h:commandbutton></h:messages></h:inputtext></h:panelgrid></s:validateall></h:form></f:view>
registered.xhtml

<f:view></f:view>


The EAR deployment descriptor: application.xml
<application xmlns="http://java.sun.com/xml/ns/javaee"></application><module></module><java></java>
<application xmlns="http://java.sun.com/xml/ns/javaee"></application><module></module>






oK,希望大家能认真的看完,相信收获会不少的
(我怎么不知道图片怎么插入了,有人知道告诉下,下次插图片了)
弄这些代码的布局比自杀还难!!!!!!
分享到:
评论
10 楼 子在川上曰 2007-11-21  
楼主好文章,但代码都是图片的,如果想自己实践一下还得再打字一遍。能把代码打包传上来就好了。
9 楼 phoenixup 2007-09-08  
Seam是一个很值得使用的集成框架,也许将来会成为标准(还很难讲),Spring何去何从呢?支持楼主文章,有个小小的问题,把排版好好整理一下,效果会更好,或者弄个PDF。
8 楼 bingleng 2007-09-05  
喷水。。。。
7 楼 hscartoon 2007-09-04  
楼主帅哥一个,鉴定完毕!!
6 楼 Javabengou 2007-09-04  
其实每个技术都会有优点和缺点,主要看那种更适合你去,或者那种是你在项目中所需要的
5 楼 cwx714 2007-09-04  
JBOSS SEAM同Struts+Spring+Hibernate组合架构相比有什么优缺点?
4 楼 magice 2007-09-01  
LZ可以试着重新压制成PDF的格式,供大家下载
3 楼 iamlibo 2007-09-01  
不错,继续加油
2 楼 Javabengou 2007-09-01  
弄图片就弄了半天
而且还限制图片的上传空间10M
想哭
这么点,那够啊!
1 楼 may_cauc 2007-09-01  
格式也可以重新排列一下,现在看起来很乱

相关推荐

    JBoss Seam

    《JBoss Seam:超越Java EE的简易与强大》是一本深度探索JBoss Seam框架的权威著作,由Michael Yuan和Thomas Heute共同撰写。本书聚焦于JBoss Seam框架,旨在为读者提供一个全面、深入的理解,以掌握其在企业级应用...

    Jboss seam3 实战

    JBoss Seam是一个开源的Java EE框架,它通过依赖注入和会话模型,简化了基于Java EE的企业级应用开发。Seam框架为开发者提供了一个集成化的环境,其中整合了多种技术规范,比如EJB3、JSF、JPA、SessionBean、MDB和...

    JBoss Seam入门介绍

    总之,JBoss Seam作为一个全面的企业级Java Web框架,不仅提供了丰富的特性和工具,还简化了许多复杂的开发任务,让开发者能够专注于业务逻辑的实现,而不是框架本身的细节。无论是新手还是经验丰富的开发者,都能...

    jboss seam 中文文档集合

    JBoss Seam 是一个开源的应用框架,它结合了JavaServer Faces (JSF)、Java Persistence API (JPA)、Enterprise JavaBeans (EJB) 3.0 和其他Java EE组件,旨在简化企业级开发。这个文档集合包含了对Seam及其相关技术...

    jbossseam eclipse安装 例子学习.doc

    JBoss Seam 是一款基于 Java 的企业级应用框架,它简化了应用程序的开发过程,使得开发者能够更专注于业务逻辑而非底层技术细节。通过本教程,读者可以快速掌握所需工具的安装步骤,并学会如何搭建完整的开发环境。 ...

    jboss seam 2.0 中文手册

    整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。

    JBOSS SEAM组件中文手册

    Seam是一个开源的企业级Java框架,由JBoss公司开发,旨在简化Java EE应用程序的开发。它将多种技术如JavaServer Faces (JSF),Java Persistence API (JPA),EJB 3,Inversion of Control (IoC)和Aspect-Oriented ...

    Jboss Seam中文版

    JBoss Seam是一个强大的企业级应用开发框架,基于Java EE标准,特别强调简化Web应用的开发流程。它通过整合多种技术如JSF、EJB 3.0等,提供了一种更为高效、简洁的方式来构建复杂的业务逻辑。Seam的目标是降低开发...

    深入浅出JBoss Seam.pdf

    JBoss Seam被称为是“Java EE 5.0的一个轻量级的框架”,这个表述意味着Seam是建立在Java EE 5.0之上的一层,为开发者提供了一个更加统一且易于理解的编程模型。Seam的目标是简化企业级Web应用的开发,特别是对于...

    Jboss Seam 三本最受欢迎的教材

    【JBoss Seam】是Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)3.0、JPA(Java Persistence API)以及一系列其他技术,为开发人员提供了一个强大的全栈式解决方案。Seam...

    [JBoss] JSF & Facelets & JBoss Seam 核心技术 (英文版)

    [TipTec Development] JSF & Facelets & JBoss Seam 核心技术 (英文版) [TipTec Development] Essential JSF, Facelets & JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] TipTec ...

    Beginning JSF2 APIs and JBoss Seam

    《Beginning JSF2 APIs and JBoss Seam》是一本深入介绍JavaServer Faces 2(简称JSF2)及其相关API以及JBoss Seam框架的专业书籍。作者Kent KaIok Tong凭借其在Java Web开发领域的深厚经验,为读者提供了详尽的技术...

    jboss seam 教程

    - **JBoss Seam**:由JBoss提供的Seam实现,提供了一系列功能强大的工具和服务,帮助开发者快速构建复杂的Web应用。 - **本教程**:主要介绍了JBoss Seam的基本概念、核心组件以及通过一系列示例项目来学习Seam的...

    jboss seam 2.01GA REF DOC

    JBoss Seam 是一个为简化企业级 Java 应用开发而设计的框架。它结合了 JavaServer Faces (JSF)、Java Persistence API (JPA) 和 Java Enterprise Edition (Java EE) 的优点,并通过提供一套高级抽象来增强这些技术的...

    深入浅出JBoss Seam

    JBoss Seam是一个旨在简化企业级Web应用开发的轻量级框架,它补充和完善了Java EE 5.0的标准。Java EE 5.0虽然包含了EJB 3.0和JSF 1.2等核心框架,但它们各自独立,缺乏统一的编程模型。Seam的出现就是为了消除这种...

    Practical JBoss Seam projects

    《实用JBoss Seam项目》是一本专注于介绍JBoss Seam框架及其在实际项目中应用的专业书籍。本书由Jim Farley编写,出版于2007年,是Java技术领域内的权威指南之一。JBoss Seam是一个开源敏捷的企业级JSF(JavaServer ...

    jboss seam

    Seam在JAAS和JBoss规则之上,创建了一个新的基于规则的安全框架。甚至有用来渲染PDF、在线电子邮件和图表及wikitext的JSF标签库。 Seam组件可以同时作为一个Web Service进行调用,异步地从客户端JavaScript或者...

    jboss-seam2.0文档

    JBoss Seam 是一个开源的企业级开发框架,它旨在简化Java EE应用的开发过程,特别是在Web和富互联网应用程序(Rich Internet Applications, RIA)领域。Seam 2.0是其重要的版本,提供了许多增强的功能和改进,为...

    jboss-seam-selectitems

    java jboss seam jboss-seam-selectitems

Global site tag (gtag.js) - Google Analytics