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

公司因为和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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值