论坛首页 Java企业应用论坛

基于myfaces 1.1.x,seam 1.2 应用在websphere 6.1下的部署!

浏览 2869 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-05-10  
公司因为和IBM合作统一为客户提供websphere6.1的应用环境,所以让我很是恼火,有两点原因:
1.ws61只能完全支持j2ee1.4标准而不支持j2ee1.5,需要等待ws7.0出来才支持,虽然现在有ejb3的pack包,甚至传闻会出j2ee1.5pack,但是只是推荐开发环境使用(服了,开发环境我还用它),这样jstl,jsp,jsf的统一EL不能用了,jsf1.2规范不能用了,seam2.0不能用了,恼火!
2.我习惯使用myfaces1.1.5和tomahawk-1.1.6,都是基于jsf1.1规范,并使用seam1.2进行展现层管理!但是正常部署居然websphere6.1不兼容,更恼火!

不兼容有两个方面:
1.myfaces不兼容,因为ibm有自己的jsf-ibm实现,而且将此加入到了com.ibm.ws.webcontainer_2.0.0.jar当中,成了ibm websphere web环境的必须标准,呵呵,更狠!
2.seam和ibm的jsf实现不兼容,不兼容的地方是会在启动处抛出java.lang.ClassCastException: org.jboss.seam.jsf.SeamApplication11 incompatible with com.sun.faces.application.ApplicationImpl
seam的领头人gavin.king这样说:
Yes, they should not do that typecast, that is a bug in their JSF impl.
呵呵gavin说那是他们的一个bug。
那么也就是说使用ibm的jsf实现的项目是使用不了seam了,只能用myfaces实现和标准实现了!
废话了半天其实解决的方法很简单:
就是进入企业应用-》你部署的应用-》模块管理-》你的war-》更改类加载顺序的选择项,让你的war应用加载高于父环境的类加载。
重启你的应用,myfaces就可以正确使用了
但是这样做有两个问题:
1.ibm的jsf组件就不用想了。
2.和jsf扩展的框架比如seam就需要部署在war中启动,myfaces-api,myfaces-impl.jar, seam.jar,seam-ui.jar等就要放在WEB-INF/lib下面,那么使用ear方式部署的项目会非常难受!

参考文档:
myfaces部署:http://wiki.apache.org/myfaces/Websphere_Installation
jboss seam bug:http://www.jboss.com/index.html?module=bb&op=viewtopic&t=107948&postdays=0&postorder=asc&start=10
   发表时间:2008-05-10  
2.和jsf扩展的框架比如seam就需要部署在war中启动,myfaces-api,myfaces-impl.jar, seam.jar,seam-ui.jar等就要放在WEB-INF/lib下面,那么使用ear方式部署的项目会非常难受!

I don't understand. What's your pain?
0 请登录后投票
   发表时间:2008-05-11  
如果部署在上层,那么应用不管如何顺序启动,你的jsf相关类会和ibm-jsf类在一个启动的加载级别,必然会先加载ibm-jsf的类路径,也就先初始化ibm的jsf上下文,it's my pain ...
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics