浏览 3968 次
锁定老帖子 主题:Seam 2.0 升级说明
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-06
======================== 在你开始使用Seam2之前你需要对你的代码和配置做一些更改,这个过程是非常简单的, 如果没有升级成功请查阅Seam的升级示例 支持Seam 2.0的容器环境 -------------------------------- Seam 2.0 已经在一下容器中做过测试 * JBoss 4.2 (升级到JSF 1.2 的JBoss 4.0.5) * Tomcat 6.0 (Tomcat 5.5 不支持 JSF 1.2) * GlassFish V2 * OC4J 11g Technology Preview 升级到 JSF 1.2 -------------------- Seam 2.0 需要 JSF 1.2. 我们认为现在Sun的官方JSF实现是最成熟的JSF 1.2 实现, 这也是大多数java EE5应用服务器中使用的版本,包括 JBoss 4.2. 为了把你的代码切换到这个版本 你需要对你的web.xml做如下改动, * 移除 MyFaces 的 StartupServletContextListener监听器 * 移除 Ajax4JSF 过滤器和映射配置 * 把 org.jboss.seam.web.SeamFilter 改名为 org.jboss.seam.servlet.SeamFilter 同时要注意的是对于Sun的JSF实现,客户端状态保存不是必须的 你同时也需要对你的faces-config.xml做一些改动 * 移除 (Tranactional)SeamPhaseListener 声明 * 移除SeamELResolver 声明如果你配置了它 * 把SeamFaceletViewHandler改为com.sun.facelets.FaceletViewHandler 从Seam 1.2开始,你不再需要在你的web.xml中为SeamExceptionFilter 或SeamRedirectFilter做任何声明,你只需要为SeamFilter做一个简单的声明就可以了。 确定你已经做好了上面的改动 代码升级 -------------- 为了使Seam的内建组件更加容易学习使用且与具体技术实现隔离开,内建组件进行了重构设计 * 与持久化相关的组件移到了org.jboss.seam.persistence包中 * 与jBPM 相关的组件移动到了org.jboss.seam.bpm包中 * 与JSF相关的组件移动到了org.jboss.seam.faces包中 * Servlet相关的组件移动到了org.jboss.seam.web包中 * 与并发相关的组件移动到了org.jboss.seam.async包中 * 与i18n相关组件移动到org.jboss.seam.international包中 * 与Pageflow相关的组件移动到了org.jboss.seam.pageflow包中 * 与页面导航相关组件移动到了 org.jboss.seam.navigation包中 依赖与这些API的代码需要重新引入这些新包名 Annotations 也进行了重构 * BPM相关的annotations 移动到 org.jboss.seam.annotations.bpm * JSF相关的annotations 移动到 org.jboss.seam.annotations.faces * Interceptor相关的annotations 移动到org.jboss.seam.annotations.intercept * 并发相关的Annotations移动到org.jboss.seam.annotations.async * @RequestParameter 移动到 org.jboss.seam.annotations.web * @WebRemote 移动到 org.jboss.seam.annotations.remoting * @Restrict 移动到 org.jboss.seam.annotations.security * 异常处理相关的annotations移动到org.jboss.seam.annotations.exception * 使用@BypassInterceptors代替@Intercept 升级components.xml --------------------------- seam组件新的包结构给components.xml带来了新的组件命名空间和schemas 如下包中的组件的命名空间 org.jboss.seam.foobar 现在为: http://jboss.com/products/seam/foobar 同时schema为: http://jboss.com/products/seam/foobar-2.0.xsd 你需要升级你的components.xml到新的命名空间和schemas,如果你不知道怎么去做 请参考seam的升级示例 最后,一些声明需要完全移除: * 从<core:init/>中移除 <conversation-is-long-running-parameter> * 移除<core:ejb/> * 移除<core:microcontainer/> * 用<transaction:ejb-transaction/>替换<core:transaction-listener/> * 用<core:resource-loader/>替换 <core:resource-bundle/> 注意: Seam 事务管理器现在默认是开启的.如果你想关闭seam事务管理器: <core:init transaction-management-enabled="false"/> 注意: event的action的expression属性不赞成再使用,建议使用execute <event type="org.jboss.seam.notLoggedIn"> <action execute="#{redirect.captureCurrentView}"/> </event> 升级到嵌入式 JBoss -------------------------- 不再支持部署到嵌入式JBoss Ejb3和JBoss微容器,通过简单的部署 ,新发行的嵌入式JBoss可以提供给你一个完全符合EE标准的APIs 对于测试来说, 你需要把Seam lib/ 目录下的jar包和 bootstrap/ 目录放到你的classpath中. SeamTest会自动启动容器 如果你有问题请参考Seam的示例或seam-gen 部署到Tomcat请按照指南中的介绍。这时候你不再需要任何额外的声明或打包。 注意现在嵌入式的JBoss已经有能力在启动的时候通过一个-ds.xml file参数来 初始化一个数据源,所以不再需要jboss-beans.xml。 升级到JBPM 3.2 --------------------- 如果你在你的业务处理中使用了JBPM (不仅仅是pageflows), 你需要添加一个 tx service到你的jbpm.cfg.xml: <service name="tx" factory="org.jbpm.tx.TxServiceFactory" /> 升级到RichFaces 3.1 -------------------------- 如果你使用了RichFaces 或 Ajax4jsf,它们的基础代码已经被重构过了. ajax4jsf.jar和 richfaces.jar已经被一下几个jar包替换掉 richfaces-api.jar (应该放到你的ear的lib目录中) richfaces-impl.jar和richfaces-ui.jar (放到你的WEB-INF/lib目录中). s:selectDate不再推荐使用,推荐使用 rich:calendar替代. 要获得更多的改动信息请参考RichFaces的文档 包结构的改动 ----------------- 你应该把你在application.xml中声明的modules的所有依赖项放到你的ear的lib目录中, 除了jboss-seam.jar,它应该在application.xml中被声明为一个ejb module Seam UI的改动 ------------------ * s:decorate 成为一个命名容器(naming container). 因此组件的编号从fooForm:fooInput 改为了 fooForm:foo:fooInput (假设你的s:decorate有一个foo的ID). seam-gen的改动 ------------------- 从Seam 2.0.0.CR2 开始seam-gen在代码的生成上有一个改动, 旧的代码生成方式: src/model/com/domain/projectname/model/EntityName.java src/action/com/domain/projectname/model/EntityNameHome.java src/action/com/domain/projectname/model/EntityNameList.java 新的代码生成方式: src/model/com/domain/projectname/model/EntityName.java src/action/com/domain/projectname/action/EntityNameHome.java src/action/com/domain/projectname/action/EntityNameList.java Home和Query 对象是 "动作"型组件,而不是"模型" 组件,所以它们应该被放到action包中. 请记住, model类被分开放置是因为它们不支持热加载(hot reloaded). 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |