LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2101|回复: 1

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

[复制链接]
发表于 2009-2-18 13:34:02 | 显示全部楼层 |阅读模式
公司因为和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? ... er=asc&start=10
发表于 2009-2-18 16:16:22 | 显示全部楼层
我除了原来用过DB2,其他就没整明白过IBM的产品。ECLIPSE也没整明白。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表