- 浏览: 79817 次
- 性别:
- 来自: 重庆
最新评论
-
禀圣含华:
怎么弄空格呢?___________然后我固定这些空格,怎么弄 ...
第18章. iText PDF 生成 -
super0555:
managed
第13章 Seam 应用程序框架 -
Javakeith:
代码呢?共享下代码呗!
第18章. iText PDF 生成 -
tonyshen277:
同感啊。还在做Win32下的开发,楼主所说的一个都不能少啊。
转自baidu wqqq 给软件开发初学者 -
kdboy:
的确,把人放在宇宙中去看,从上帝的眼中去看,人的确是非常渺小, ...
人生是什么
第29章. 配置Seam和打包Seam应用程序
配置是一个非常无聊话题和一个极其乏味的消遣。遗憾的是,需要几行XML整合Seam到你的JSF实现和servlet容器。你没有必要为下面部分耽搁时间;你根本不需要自己去输入任何东西,因为你可以只使用seam-gen启动你的应用程序或者你可以从例子应用程序拷贝粘贴完成!
29.1. 基本Seam配置
首先,让我们看一看只要Seam和JSF一起使用就必需的基本配置。
29.1.1. 将Seam与JSF和你的servlet容器集成
当然,你需要一个faces servlet!
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
(你可以调整URL模式来适合你的口味。)
另外, Seam需要在你的web.xml文件中有
下面的条目:
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
这个侦听器负责启动Seam,销毁会话和应用程序上下文。
某些JSF实现的服务器边状态保存实现较差,干扰了Seam的对话的传播。如果你在表单提交期间使用对话传播有问题,试试客户边状态保存。在web.xml中
你将需要这些:
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
在JSF规范中关于视图状态值的易变性是一个小的灰色地带。 因为Seam使用JSF视图状态返回它的PAGE作用域,在某些情况下这可以成为一个问题 。如果你正在就JSF-RI使用服务器边状态保存 ,并希望一个PAGE作用域bean为一个页面的一个特定的视图保持它的精确值,你将需要指定下面的context-param 。否则如果一个用户使用“back”按钮,如果值已改变,PAGE作用域组件将是最新的值,而不是“back”返回页面的值。(见Spec Issue)。默认时,这个设置没有激活,因为用每请求序列化JSF视图的高性能击中(because of the performance hit of serializing the JSF view with every request.)。
<context-param>
<param-name>com.sun.faces.serializeServerState</param-name>
<param-value>true</param-value>
</context-param>
29.1.2. 使用Facelets
如果你希望根据我们的建议,使用Facelets代替JSP,增加下面的行到faces-config.xml
:
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
增加下面的行到web.xml:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
如果你在JBoss AS中使用facelets,你会发现Facelets日志坏了 (日志消息没有成为服务器日志)。 Seam提供了一个桥接,修补了这个问题。为了使用这个桥接,拷贝 lib/interop/jboss-seam-jul.jar
到$JBOSS_HOME/server/default/deploy/jboss-web.deployer/jsf-libs/
,并且在你的应用程序的WEB-INF/lib
中包含jboss-seam-ui.jar
。 Facelets日志类别被逐条列在Facelets Developer Documentation.
29.1.3. Seam Resource Servlet
Seam Resource Servlet提供Seam Remoting、captchas(见安全一章)和某些JSF UI控件使用的资源。配置Seam Resource Servlet在web.xml
需要下面条目:
<servlet>
<servlet-name>Seam Resource Servlet</servlet-name>
<servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Seam Resource Servlet</servlet-name>
<url-pattern>/seam/resource/*</url-pattern>
</servlet-mapping>
29.1.4. Seam servlet过滤器
对基本操作而言,Seam不需要任何servlet过滤器。 然而,有几个依赖过滤器使用的功能。为了让你方便,Seam 让你增加并配置servlet过滤器,就象配置其它内建Seam组件一样。为了利用此功能,我们必须首先在web.xml
中安装一个主过滤器:
<filter>
<filter-name>Seam Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Seam主过滤器必须在web.xml中被指定为第一个过滤器。这样确保它首先运行。
Seam过滤器共享几个公共属性, 你可以在components.xml中
设置它们,除下面讨论的所有参数之外:
· url-pattern
— 用来指定被过滤的请求,默认是对所有的请求。url-pattern是
Tomcat样式模式,允许拥有通配符后缀。
· regex-url-pattern
—用来指定被过滤的请求,默认是对所有的请求。regex-url-pattern
是一个与请求路径匹配的真正的正则表达式。
· disabled
— 用来禁用内建的过滤器。
注意,该模式根据请求的URI路径进行匹配(见HttpServletRequest.getURIPath()
),并且在匹配前servlet上下文的名字被删除。
增加了主过滤器就可启用下面的内建过滤器。
29.1.4.1. 异常处理
在pages.xml中的这个过滤器提供了异常映射功能
(差不多所有的应用程序都需要这个)。 在未捕获异常发生时,它也处理未提交的事务的回滚。(根据Java EE规范,网页容器应该自动做这个,但是我们发现在所有应用程序服务器中这个行为不能被信赖。并且它的确不需要如Tomcat之类的普通servlet引擎)。
默认时,异常处理过滤器会处理所有请求,然而可以通过在components.xml中增加一个<web:exception-filter>条目来调节这个行为,如下面显示的例子这样:
<components xmlns="http://jboss.com/products/seam/components"
xmlns:web="http://jboss.com/products/seam/web">
<web:exception-filter url-pattern="*.seam"/>
</components>
29.1.4.2. 对话传播重定向
这个过滤器允许Seam在所有浏览器重定向中传播对话上下文 。它拦截浏览器重定向,并增加一个请求参数,指明Seam 对话标识符。
默认时,这个重定向过滤器会处理所有请求,但是这个行为也可以在components.xml中进行调节:
<web:redirect-filter url-pattern="*.seam"/>
29.1.4.3. URL重写
这个过滤器允许对基于pages.xml
文件中的配置的视图应用URL重写。默认时,这个过滤器没有被激活,但是可以在components.xml
中增加配置激活它:
<web:rewrite-filter view-mapping="*.seam"/>
view-mapping
参数必须与在web.xml
文件中对Faces Servlet定义的 servlet映射相匹配。如果忽略,重写过滤器假设模式为*.seam
。
[ *URL重写是拦截传入 Web的请求并自动将请求重定向到其他URL的过程]
29.1.4.4. 多表单提交
在利用Seam文件上传JSF控件是,这个功能是必要的。它侦测多表单请求,并且根据多/表单数据(multipart/form-data)规范(RFC-2388)处理它们。为覆盖默认设置,增加下列条目到components.xml
:
<web:multipart-filter create-temp-files="true"
max-request-size="1000000"
url-pattern="*.seam"/>
· create-temp-files
— 如果设置为true,上传文件被写到临时文件(替代维持在内存)。
如果希望上传大文件,这可能是一个重点考虑的因素。默认设置为false
。
· max-request-size
— 如果一个请求上传的文件大小(通过读取在请求中的Content-Length头来决定
)超过了这个值,请求会被中止。默认设置是0(没有大小限制)。
29.1.4.5. 字符编码
设置提交表单数据的字符编码。
默认时,这个过滤器没有被安装,并且在components.xml中需要
一个条目来启动它:
<web:character-encoding-filter encoding="UTF-16"
override-client="true"
url-pattern="*.seam"/>
· encoding
— 使用的编码。
· override-client
— 如果这个设置为true,
无论请求是否已经指定了什么编码,请求的编码会被设置为encoding指定的那个编码
。如果设置为false,假若请求也没有指定编码
, 请求编码才会被设置。默认设置为false
。
29.1.4.6. RichFaces
如果RichFaces被用在你的项目中, Seam会为你安装RichFaces Ajax过滤器,确何安装它在所有其它内建过滤器之前。在web.xml中
你不必亲自安装RichFaces Ajax过滤器。
如果RichFaces jars包被引入你的项目, RichFaces Ajax过滤器才会被安装。
为覆盖默认设置,增加下面条目到components.xml中
。该选项与在RichFaces Developer Guide指定它们是一样的:
<web:ajax4jsf-filter force-parser="true"
enable-cache="true"
log4j-init-file="custom-log4j.xml"
url-pattern="*.seam"/>
· force-parser
— 强迫所有JSF页面被Richfaces的XML语法检查器校验 。如果为false,
仅AJAX响应被校验,并转换成格式良好的XML。设置force-parser为false改善了性能
,仅仅为AJAX 可视部件提供更新。
· enable-cache
— 启用框架生成的资源缓存(如,javascript, CSS, images等等)。当开发自定义javascript或CSS时,设置为true,防止浏览器缓存资源。
· log4j-init-file
—被用来设置per-application注册。应提供log4j.xml 配置文件的一个路径,相对于网页应用上下文。
29.1.4.7. 身份日志(Identity Logging)
这个过滤器添加认证用户名字到log4j映射诊断的上下文中,所以,如果需要,通过增加%X{username}到模式(pattern),它可以被包含在格式化的日志输出中。
默认时,日志过滤器将处理所有请求。然而,可以通过增加一个<web:logging-filter>条目到components.xml中调节这种行为,如下面显示的这个例子:
<components xmlns="http://jboss.com/products/seam/components"
xmlns:web="http://jboss.com/products/seam/web">
<web:logging-filter url-pattern="*.seam"/>
</components>
29.1.4.8. 自定义servlets的上下文管理
直接发送到JSF servlet以外的某些servlet的请求是没有通过JSF生命周期处理的,所以,Seam提供了一个过滤器,它可用于需要访问Seam 组件的任何其他servlet。
这个过滤器允许自定义与Seam 上下文交互的servlets。它在每个请求开始时创建Seam上下文, 在请求结束时销毁它们。你应该确保这个过滤器从来都没有用于JSF的FacesServlet。 Seam在一个JSF请求中对上下文的管理使用了一个阶段侦听器。
默认时,这个过滤器没有被安装,并且在components.xml
需要一个条目来启动它:
<web:context-filter url-pattern="/media/*"/>
此上下文过滤器希望查找到任何对话上下文的在请求参数中名为conversationId的对话id。你要负责的是确保在请求中发送它。
你也要负责确保任何新对话id返回到客户端。Seam把对话id作为内建组件对话的一个属性暴露它。
29.1.4.9. 增加自定义过滤器
Seam可以为你安装你的过滤器,允许你指定你的过滤器放置在链中的什么地方(如果你在web.xml中指定你的过滤器,
servlet规范没有提供一个良好的定义顺序)。只需增加@Filter注释到你的
Seam组件 (它必须实现javax.servlet.Filter
):
@Startup
@Scope(APPLICATION)
@Name("org.jboss.seam.web.multipartFilter")
@BypassInterceptors
@Filter(within="org.jboss.seam.web.ajax4jsfFilter")
public class MultipartFilter extends AbstractFilter {
添加的@Startup注释意味着
该组件在Seam启动期可用;在这里双向注入不可用 (@BypassInterceptors
); 并且这个过滤器应该放在RichFaces过滤器链后 (@Filter(within="org.jboss.seam.web.ajax4jsfFilter")
)。
29.1.5. 将Seam与你的 EJB 容器集成
在一个Seam应用程序中, EJB组件明显有二元性,它们都被 EJB容器和Seam管理。 实际上,多数是由Seam 解析EJB组件引用,管理有状态会话bean组件,并且通过拦截器也参与每个方法调用。让我们开始Seam 拦截器链的配置。
我们需要应用SeamInterceptor到我们的
Seam EJB组件。这个拦截器代理一组内建服务器边拦截器,处理诸如双向注入、对话划分和业务流程信号等问题。对整过应用程序而言,实现它的最简单方法是在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在何处查找到会话beans。一个方法是在每个会话bean Seam组件上指定@JndiName注释。然而,这是相当乏味的。一个好的方法是指定一个模式,Seam根据它可以从
EJB名字计算出
JNDI名字。不幸地是,在EJB3规范中没有映射到全局JNDI定义的标准,所以,这种映射是属于特定供应商的(并且也可能依赖于你自己的命名对话)。我们通过在components.xml
中指定这个选项。
对JBoss AS,下面的模式是恰当的:
<core:init jndi-name="earName/#{ejbName}/local" />
在这个案例中, earName是部署bean所在的EAR的名字,
Seam用EJB名字替代#{ejbName},最后部分表示接口类型(
local或remote)。
在一个EAR上下文外(在使用JBoss 嵌入式EJB3容器中 container), 因为没有EAR,所以第一部分可以删除,如以下模式:
<core:init jndi-name="#{ejbName}/local" />
这些JNDI名字如何被解析,以何种方式查找到EJB组件,在这点上有点象黑色魔术,所以让我们深入细节。首先,让我们谈谈EJB组件如何进入到JNDI。
JBoss人不太关心XML,如果你不能告诉(?)。因此在他们设计JBoss AS时, 他们决定使用刚描述的模式(例如,EAR名字/EJB名字/接口类型)自动指派一个全局JNDI名字给EJB组件。EJB名字是来自下面列表的第一个非空值:
· 在ejb-jar.xml中的<ejb-name>的值
· 在@Stateless或@Stateful注释中的name属性的值
· bean类的简单名字
让我们看一个例子。假设你有下面的EJB bean和接口定义。
package com.example.myapp;
import javax.ejb.Local;
@Local
public class Authenticator
{
boolean authenticate();
}
package com.example.myapp;
import javax.ejb.Stateless;
@Stateless
@Name("authenticator")
public class AuthenticatorBean implements Authenticator
{
public boolean authenticate() { ... }
}
假设你的EJB bean类被部署在一个名为myapp的EAR中, 在JBoss AS 中,全局JNDI名字myapp/AuthenticatorBean/local将被指派给它。正如你了解的,你可以象一个Seam组件一样用名字authenticator
引用这个EJB组件,并且 Seam将根据JNDI模式(或@JndiName注释
)用JNDI查找到它。
那么其他的应用服务器又如何?好的,根据Java EE 规范,大部分供应商试图虔诚地坚持,对你的EJB你必须声明一个EJB引用,以便于被指派一个JNDI 名字。这需要一些XML。也意味着由你来决定如何建立一个JNDI命名对话,因此你可以利用Seam JNDI 模式。接下来你可能会找到一个很好的JBoss 对话。
当你在非JBoss应用服务器上使用Seam时,有两个地方你必须定义EJB引用。如果你打算通过JSF或Seam JavaBean组件查找Seam EJB组件(在一个JSF视图中或用一个JSF动作侦听器),那么你必须在web.xml中声明EJB引用。 这里只显示EJB引用的例子组件:
<ejb-local-ref>
<ejb-ref-name>myapp/AuthenticatorBean/local</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>org.example.vehicles.action.Authenticator</local>
</ejb-local-ref>
这种引用方法覆盖了在Seam应用程序中的大多数组件的用途。如果你想能使用@In
注入Seam EJB 组件到另一个Seam EJB 组件,你需要在另一个地方定义这个EJB引用。这次,它必须定义在ejb-jar.xml 中,并且有点麻烦。
在一个EJB方法调用的上下文内,你不得不处理有些受保护的JNDI上下文。当Seam企图找到另一个Seam EJB组件来满足由@In
定义的注入点时,用JNDI查找组件是不会成功的。你不能象你希望的那样,简单地解析JNDI名字。你必须明确地定义这些引用。然而,不象使用网页上下文,你不能声明所有EJB组件的EJB引用为全局的。相反,你不得不一个接一个对每一个给定的EJB组件指定JNDI资源。 (这适用于JBoss AS 5,而不适用于非JBoss 应用服务器).
让我们假定我们有一个名字为RegisterAction的EJB(名字解析使用前面提及的三个步骤)。该EJB拥有下面的Seam注入:
@In(create = true)
Authenticator authenticator;
为了使这个注入能工作,必须在ejb-jar.xml建立连接,象下面这样:
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>RegisterAction</ejb-name>
<ejb-local-ref>
<ejb-ref-name>myapp/AuthenticatorAction/local</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>com.example.myapp.Authenticator</local>
</ejb-local-ref>
</session>
</enterprise-beans>
...
</ejb-jar>
注意<ejb-local-ref>上下文是与我们在
web.xml中定义的是一样的。我们能让引用进入到EJB上下文,以便RegisterAction bean可以使用它。对任何Seam EJB组件注入另一个Seam EJB组件,你需要使用@In来
增加这些引用中的一个。(你可以看jee5/booking例子)。
但是@EJB有什么用的? 使用@EJB,它为ture,你可以注入一个EJB 到另一个中。然而,这样做,你是注入了一个真实的EJB引用,而不是Seam EJB 组件实例。在这种情况下,一些Seam 功能可以使用,另一些则不能使用。那就是为什么在任何一个方法调用一个EJB组件时需要调用的Seam 拦戴器。但是,仅可调用Seam服务器边的拦截器链。失去了Seam 的状态管理和Seam 客户边的拦截器链。客户边的拦截器处理诸如安全和并发等问题。当注入一个SFSB时,无论情况如何,也不能保证会约束活动的会话或对话。因而,你一定想使用@In注入Seam EJB 组件。
这包括如何定义和使用JNDI名字。使用某些应用服务器的经验,如GlassFish, 是你不得不为所有EJB组件明确地指定JNDI名字,有时两次!即使是根据象JBoss AS同样的命名对话,在Seam 中的JNDI 模式可能也需要被改变。例如,在GlassFish 中的全局JNDI名字用java:comp/env 自动加前缀,所以你需要象下面这样定义JNDI模式:
<core:init jndi-name="java:comp/env/earName/#{ejbName}/local" />
最后,让我们谈谈事务。在一个EJB3环境中,我们推荐使用专门的事务管理内建组件,其充分知道容器的事务,可以正确地处理用事件组件注册成功事件的事务。如果没有增加这行到你的components.xml
文件,Seam 就不知道容器托管事务在什么时候结束。
<transaction:ejb-transaction/>
29.1.6. 切记!
你需要知道的最后一条。你必须在你部署的seam组件的每个档案中设置seam.properties、META-INF/seam.properties 或META-INF/seam.properties 文件(即使是空的properties也要这样做)。在启动时, Seam会用seam.properties扫描每个档案的seam 组件。
在一个Web档案(WAR)文件中,在 WEB-INF/classes 目录下,如果包含有任何Seam组件,你必须在该目录中放置一个 seam.properties文件。
这就是为什么所有的Seam例子都有一个空的 seam.properties
文件。希望一切能仍旧工作,你不能删除它!
你可能会认为这很愚蠢,框架的设计者让一个空文件来影响他们的软件行为是多么的白痴??嗯,这是一个针对<span lang
发表评论
-
第31章. Seam内建组件
2009-05-28 11:51 1459第31章. Seam内建组件 本章描述Seam内建组件 ... -
第30章. Seam注释
2009-05-26 20:21 1593第30章. Seam注释 在你编写一个Seam应用程 ... -
第31章. Seam内建组件
2009-05-26 20:21 1421第31章. Seam内建组件 本章描述Seam内建组件 ... -
第28章. Hibernate搜索
2009-05-26 20:17 151828.1. 介绍 如Apache Lucen ... -
第27章. Spring框架集成
2009-05-26 20:16 1392第27章. Spring框架集成 Spring集成 ... -
第26章. Seam和Google网页工具
2009-05-26 20:15 1214第26章. Seam和Google网页工具 ... -
第25章. 远程
2009-05-26 20:15 1268第25章. 远程 Seam 提供了一个从网页远程访 ... -
第24章. Web服务
2009-05-26 20:15 1675第24章. Web服务 Seam 集成了JBossWS, ... -
第23章. 缓存
2009-05-26 20:14 1413第23章. 缓存 在 ... -
第22章. 异步和消息
2009-05-26 20:12 2122第22章. 异步和消息 Seam 使异步执行来自网页请 ... -
第21章. Email
2009-05-26 20:11 1309现在Seam包含一个用于模板和发送邮件的可选组件。 Emai ... -
第 20章. RSS支持
2009-05-26 20:10 818第 20章. RSS支持 20.1. 安装 20.2. ... -
第19章. 微软的Excel 电子表格应用程序支持
2009-05-26 20:07 1820第19章. 微软的Excel 电子表格应用程序支持 S ... -
第18章. iText PDF 生成
2009-05-26 20:01 6471第18章. iText PDF 生成 18.1. 使用PDF ... -
第17章. Seam文本
2009-05-26 19:59 1022第17章. Seam文本 面向协作站点需要一种更有友好的 ... -
第16章. 国际化、本地化和主题
2009-05-26 19:57 1382第16章. 国际化、本地化和主题 Seam使构建国际化应用程 ... -
第15章 安全(2)
2009-05-26 19:56 930第15章 安全(2) 15.5. 错误消息 安全 ... -
第15章 安全(1)
2009-05-26 19:53 97615.1. 概述 Seam安全API为你基于Seam的 ... -
第14章 Seam 和 JBoss 规则
2009-05-26 19:50 1426第14章 Seam 和 JBoss 规则 Seam使从 ... -
第13章 Seam 应用程序框架
2009-05-26 19:49 1402第13章 Seam 应用程序框架 Seam真正地使通过 ...
相关推荐
1.6. 一个完整的Seam 应用程序:宾馆预订范例............................................................................................................ 45 1.6.1. 介绍......................................
以下是对配置Seam和打包Seam应用程序的关键知识点的详细解释: ### 1. 基本Seam配置 #### 1.1.1. 集成Seam与JSF和Servlet容器 Seam与JSF的集成是其核心功能之一。这涉及到在web.xml文件中配置Seam Filter和Seam ...
在这个“seam需要的jar包”压缩包中,包含了运行和开发Seam应用程序所需的各种库文件。 首先,Seam框架的核心依赖于JSF,这是Java EE中的一个用户界面组件框架,用于构建交互式Web应用。JSF提供了模型-视图-控制器...
《Apress.Beginning.JBoss.Seam.Feb.2007》是一本专注于JBoss Seam技术的入门教程,由Apress出版社在2007年2月发布。这本书旨在为初学者提供一个全面理解Seam框架的平台,帮助开发者更好地掌握Java企业级应用开发。...
JBOSS.SEAM.WEB应用开发 中文版 (美)MichaelYuan.
Practical.JBoss.Seam.Projects.pdf
Seam 2.x 是一款基于 Java 的企业级应用程序框架,由 JBoss 提供支持。它极大地简化了 Java 应用程序的开发过程,使得开发者能够更高效地构建复杂的 Web 应用程序。Seam 2.x 集成了诸如 JSF (JavaServer Faces) 和 ...
对话(Conversation)是Seam框架中用于管理用户会话和应用状态的一个关键概念。它定义了用户与应用之间交互的范围,可以跨越多个HTTP请求。对话机制确保了数据的一致性和事务的完整性,尤其是在复杂的Web应用中,...
Seam 是一个开源的 Java 框架,主要用于简化企业级 Java 应用程序的开发,特别是与 JBoss 服务器的集成。它提供了一个统一的框架来整合多种技术,包括 JavaServer Faces (JSF)、Java Persistence API (JPA) 和 Java ...
JBoss Seam是一个功能强大的开源轻量级Java EE 5应用框架,旨在帮助开发者构建企业级应用和下一代Web 2.0应用。本书《Beginning JBoss Seam: From Novice to Professional》由Joseph Faisal Nusairat编写,于2007年...
### 关于《Apress.Beginning.JBoss.Seam.Feb.2007.pdf》的知识点总结 #### 一、书籍基本信息概述 - **书名**:《Beginning JBoss Seam: From Novice to Professional》 - **作者**:Joseph Faisal Nusairat - **...
根据提供的信息,我们可以推断出这是一本关于 Seam 框架的专业书籍,书名为《Seam in Action》,作者为 Dan Allen 和 Manning 出版...此外,本书还提供了大量实用案例和最佳实践,帮助读者更好地理解和应用 Seam 框架。
##### 第二章:用Seam-gen快速起步 本章重点介绍了如何使用Seam-gen工具快速创建项目结构,为后续开发打下基础。 1. **准备工作**:包括安装必要的软件和配置开发环境。 2. **建立新的Eclipse项目**:通过Seam-gen...
JBoss Seam 是一个开源的应用程序框架,它整合了JavaServer Faces (JSF)、Enterprise JavaBeans (EJB)、Java Persistence API (JPA) 和其他Java EE技术,旨在简化开发过程,提高开发效率。本资料集合包括《Seam in ...
Seam 是一个强大的Java EE框架,它主要用于简化JavaServer Faces (JSF)应用程序的开发,同时提供了对EJB 3、CDI(Contexts and Dependency Injection)、Ajax等技术的集成。在JSF项目中配置Seam,可以充分利用其优势...
Seam、EJB和JSF是Java开发中的三个重要框架,它们在企业级应用程序开发中发挥着关键作用。本文将详细讲解如何在Eclipse环境中创建并理解一个Seam工程的实例,结合EJB(Enterprise JavaBeans)和JSF(JavaServer ...
### 关于JBoss Seam的关键知识点 #### 一、引言:JBoss Seam简介 JBoss Seam是一个基于Java EE...通过深入学习这些示例和教程,开发者可以更好地掌握Seam的核心概念和技术,从而提高自己的开发效率和应用程序的质量。
### 如何部署Seam的例子程序 #### 一、前言 Seam是一个强大的JavaEE框架,它简化了企业级应用的开发过程。Seam自带了一系列示例程序来帮助开发者更好地理解其特性和功能。通常情况下,这些示例是通过集成开发环境...
首先,让我们深入了解Seam和JSF这两个关键概念。JavaServer Faces (JSF) 是一种用于构建Web用户界面的MVC(模型-视图-控制器)框架。它提供了一种声明式的方式来管理组件和事件处理,减轻了开发者的工作负担。而Seam...
"为Seam做好准备"这个标题暗示我们即将探讨的是关于Seam框架的入门与准备工作。Seam是一个Java EE集成框架,它将JavaServer ...通过实践和学习,可以逐步掌握Seam的高级特性和最佳实践,从而提升开发效率和应用质量。