4. 标签的问题
1.在webspehre5.1中,不允许在同一个页面中包含相同描述符的标签,比如a.jsp通过<%include..的方式包含了b.jsp文件,并且这两个文件都包含了相同的标签描述的话,例如都包含了<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>的话。那么websphere将会抛出 org.xml.sax.SAXParseException: 已经为元素“jsp:root”指定了属性“xmlns:c” 异常。
但在tomcat上,这种方式是可以的。
解决方法是去掉重复的的标签引用。
2.jboss的xml解析器与websphere的xml解析器不同,造成某些taglib使用上出错
例如:<c:when>
………
</c:when >(有一个空格在其中)
这段代码在jboss上是正常的,但在websphere会出现异常,将</c:when >中的空格去掉,异常排除
5. servlet api实现不一致的问题
由于sun 公司只发布servlet的实现标准,具体的实现由应用服务器去完成,所以在不同应用服务器上的实现标准有所差异。
例如request.getRequestURL()方法
我们将test.action 通过配置文件映射到test.jsp文件上,test.jsp的内容为:
<% request.getRequestURL()%>
如果你在浏览器中输入地址http://localhost:8080/test.action,在jboss下返回的值是http://localhost:8080/test.action,而在websphere5.1上将返回的是解析过以后的真实的jsp地址:http://localhost:8080/test.jsp
查找servlet的api文档,上面也说得模棱两可,所以应用服务器厂商就按各自不同的理解去实现了。
象这种问题只能是更改程序,换其它的方式实现了。
6. websphere 应选用良好EAR包结构
Websphere对类库的加载比较严格,在一个应用中最好不要包含不同版本的相同类库包,请检查WEB-INF/lib下的jar包。
在websphere上部署应用一定要采用ear的方式发布上去。所以如果在web应用上你的附件管理是用文件的方式来管理的话,那么在程序设计上应该考虑到附件保存地址的可配置性,最好不要放在web容器下面,否则在以后的维护升级上可能会照成一些麻烦,因为web要打包以后才能部署上去,所以你就需要获得客户那边最新的附件信息,然后打包再进行部署。
解决方法:
1.使用绝对地址(可配置),但这样做仿佛不够优美
2.用数据库来保存附件信息,这样改变了原有的程序设计,可能需要修改比较多的程序
3.(未测试过)用一个单独的war包来保存这些可变的应用程序数据,这样部署的时候不更新此war包就可以了
总结:
Websphere基本上是严格的遵守j2ee规范来做的,所以牺牲了部分兼容性,比如websphere的JDK你是不能重新指定的,只能用它自带的版本,并且不同版本的websphere都是基于j2ee版本上的,was5.1只支持到j2ee1.3,was6.0才支持j2ee1.4,如果你要用到j2ee1.4的特性就必须使用was6.0。在部署方面,websphere对程序具有一定的侵入性, wsad需要产生大量的部署代码,例如EJB方面会产生RMIC代码,这些代码是被安排到你程序包下面。
部署期间如果遇到问题,请先到http://www-128.ibm.com/developerworks/cn 网站上查找,大部分问题在这上面都能找到。
参考资料:
1.将J2EE应用程序移植到WebSphere应用程序服务器
http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/0408_baigang/part1.html
http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/0408_baigang/part2.html
http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/0408_baigang/part3.html
2.tomcat include中文问题解决方法
http://www.matrix.org.cn/thread.shtml?forum_id=14&view_id=21142
3. 使用 WebSphere Studio 将 CMP 实体 Bean 字段映射到 CLOB 列
http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/0405_beaton/0405_beaton.html