tomcat6.0向WebSphere6.1移值
来源:互联网 发布:网络培训学校 编辑:程序博客网 时间:2024/06/05 14:06
最近做了一个普通的java web应用,一直是用tomcat6.0调试的,客户购买了WebSphere服务器,需要把项目移植到websphere上,以下是项目移植时碰到的问题,现在总结如下。
项目环境:
1)直接把现有的项目达成war包部署到WebSphere上,部署的步骤基本都一样,折腾了半天,正与能进login登录页面了,但登录后立马报错,某个bean没有装载。后来查看jvm日志(我是用MyEclipse看的), 才知道是spring的配置问题,上网查到这个错,有网友已经总结过了,"nested exception is org.xml.sax.SAXParseException: cvc-elt.1:找不到元素“beans”的声明。",原因:
spring配置文件 引入DTD这种方式在websphere 6.1 下不成功,必须改成 使用schema这种方式。
DTD:
修改为SCHEMA:
重新部署,(哎!WebSphere这玩意部署起来还真是折腾人,慢死了)
2)开始出现传说中的jdk版本不兼容的问题了,WebSphere用的是自家的jdk,6.1版本的jdk是1.5,到了WebSphere 7以后支持jdk1.6了(可以客户买的就是6.1版,没办法)
错误 "....bad major version at offset=6"
将项目备份,Eclipse-->Preferences-->Java-->Compiler-->从6.0调到5.0,整个项目重新编译(基本上有经验的人士都推荐,这里一定要调成和Websphere 兼容的JDK,不然鬼知道还要报多少错呢), 项目一片红叉,用查找替换了半天,终于不报错了。用tomcat跑了一遍,没问题。
再次重新部署
3)登录进入首页了,竟然能正常显示,但进入一个模块后报错了,jsp无法编译,不支持泛型
原因:
同时我也把网友的原文解决方法贴出来
这次不用重新部署了,重启了Websphere服务器,大部分功能都能正常运行了,(部分页面,由于调用了delphi写的 library 出了点问题,明天接着调 ) 泪流满面啊。
很多人写web.xml的时候,部署在Websphere下出了问题,我在这一步上没有遇到问题,除了spring配置文件的顶部命名空间有修改,web.xml没有动过
再补充一些关于数据库连接的问题,项目本身用的c3p0连接池,在WebSphere下运行时正常的。
c3p0连接池代码
改成jndi方式连接,代码如下
“jdbc/db2”就是WebSphere数据源的jndi名称,在WebSphere下测试连接是正常的,可在项目中就会报错
[jcc][t4][2013][11249][3.50.152] 发生了连接权限故障。原因:用户标识或密码无效
纳闷了半天,这个jndi数据源的配置方法是参考的这篇文章:http://xiaoduan.blog.51cto.com/502137/124414
注意这篇文章里后面关于用户名密码的方式,是增加了user和password的自定义属性的。作者在Eclipse测试是成功的,但在我这是不成功的。
后来找到另外一种配置方式
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0512zhanghzh/
利用的数据源中的 JAAS - J2C 认证数据,增加了用户名和密码,并测试成功。在项目中重启了WebSphere,连接成功。
这两种方式暂时还没有时间深入研究到底什么原因,万幸系统终于没什么大问题了
以下是项目迁移时参考过的url
WebSphere数据源
JDK版本不一致(错误bad major version at offset=6 This is often caused by having a class defined at multiple locations within the classloader hierarchy)
修正WebSphere jsp默认的1.3规范 编译版本(让 WAS V6.1 的 JSP 编译器用 JDK5.0)
项目环境:
引用
JDK 1.6
IDE MyEclipse 6
Websphere 6
项目使用框架 spring2.5 spring mvc hibernate3.0 jstl2.0 数据库连接池用的c3p0,项目中大量应用了泛型
IDE MyEclipse 6
Websphere 6
项目使用框架 spring2.5 spring mvc hibernate3.0 jstl2.0 数据库连接池用的c3p0,项目中大量应用了泛型
1)直接把现有的项目达成war包部署到WebSphere上,部署的步骤基本都一样,折腾了半天,正与能进login登录页面了,但登录后立马报错,某个bean没有装载。后来查看jvm日志(我是用MyEclipse看的), 才知道是spring的配置问题,上网查到这个错,有网友已经总结过了,"nested exception is org.xml.sax.SAXParseException: cvc-elt.1:找不到元素“beans”的声明。",原因:
spring配置文件 引入DTD这种方式在websphere 6.1 下不成功,必须改成 使用schema这种方式。
DTD:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans default-autowire="byName">
修改为SCHEMA:
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
重新部署,(哎!WebSphere这玩意部署起来还真是折腾人,慢死了)
2)开始出现传说中的jdk版本不兼容的问题了,WebSphere用的是自家的jdk,6.1版本的jdk是1.5,到了WebSphere 7以后支持jdk1.6了(可以客户买的就是6.1版,没办法)
错误 "....bad major version at offset=6"
将项目备份,Eclipse-->Preferences-->Java-->Compiler-->从6.0调到5.0,整个项目重新编译(基本上有经验的人士都推荐,这里一定要调成和Websphere 兼容的JDK,不然鬼知道还要报多少错呢), 项目一片红叉,用查找替换了半天,终于不报错了。用tomcat跑了一遍,没问题。
再次重新部署
3)登录进入首页了,竟然能正常显示,但进入一个模块后报错了,jsp无法编译,不支持泛型
原因:
引用
JSP 编译器用 1.3 的规范来编译 JSP 文件,如果您在 WAS V6.1 里用了带 JDK 1.5 的特性的 JSP,编译会失败
同时我也把网友的原文解决方法贴出来
引用
为了确保您的 JSP 被正确编译,请在打包时的 JSP 属性里添加一个属性:jdkSourceLevel,值为:15,这是推荐的方法,如果您不能重新打包后重新发布应用,请按照下面的步骤修改相关文件:
找到下面的两个文件:
<WAS-HOME>/profiles/AppSrv01/config/cells/<cellname>/applications/<appname>/deployments/<appname.war>/WEB-INF/ibm-web-ext.xmi
<WAS-HOME>/profiles/AppSrv01/installedApps/<nodename>/<appname>/<appname.war>/WEB-INF/ibm-web-ext.xmi
在最后面的 </webappext:WebAppExtension> 前添加下面一行:
保存后重新启动应用即可,也请同时删除 jsp 已经编译过的 class 文件:
<WAS-HOME>/profiles/AppSrv01/temp/<nodename>/<appname>/<appname.war>/*.class
找到下面的两个文件:
<WAS-HOME>/profiles/AppSrv01/config/cells/<cellname>/applications/<appname>/deployments/<appname.war>/WEB-INF/ibm-web-ext.xmi
<WAS-HOME>/profiles/AppSrv01/installedApps/<nodename>/<appname>/<appname.war>/WEB-INF/ibm-web-ext.xmi
在最后面的 </webappext:WebAppExtension> 前添加下面一行:
<jspAttributes xmi:id="JSPAttribute_113" name="jdkSourceLevel" value="15"/>
保存后重新启动应用即可,也请同时删除 jsp 已经编译过的 class 文件:
<WAS-HOME>/profiles/AppSrv01/temp/<nodename>/<appname>/<appname.war>/*.class
这次不用重新部署了,重启了Websphere服务器,大部分功能都能正常运行了,(部分页面,由于调用了delphi写的 library 出了点问题,明天接着调 ) 泪流满面啊。
很多人写web.xml的时候,部署在Websphere下出了问题,我在这一步上没有遇到问题,除了spring配置文件的顶部命名空间有修改,web.xml没有动过
再补充一些关于数据库连接的问题,项目本身用的c3p0连接池,在WebSphere下运行时正常的。
c3p0连接池代码
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass"><value>${jdbc.driverClass}</value></property> <property name="jdbcUrl"><value>${jdbc.jdbcUrl}</value></property> <property name="user"><value>${jdbc.user}</value></property> <property name="password"><value>${jdbc.password}</value></property> <property name="minPoolSize"><value>${jdbc.minPoolSize}</value></property> <property name="maxPoolSize"><value>${jdbc.maxPoolSize}</value></property> <property name="maxIdleTime"><value>${jdbc.maxIdleTime}</value></property></bean>
改成jndi方式连接,代码如下
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="jdbc/db2"/> <property name="resourceRef" value="true"/> </bean>
“jdbc/db2”就是WebSphere数据源的jndi名称,在WebSphere下测试连接是正常的,可在项目中就会报错
[jcc][t4][2013][11249][3.50.152] 发生了连接权限故障。原因:用户标识或密码无效
纳闷了半天,这个jndi数据源的配置方法是参考的这篇文章:http://xiaoduan.blog.51cto.com/502137/124414
注意这篇文章里后面关于用户名密码的方式,是增加了user和password的自定义属性的。作者在Eclipse测试是成功的,但在我这是不成功的。
后来找到另外一种配置方式
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0512zhanghzh/
利用的数据源中的 JAAS - J2C 认证数据,增加了用户名和密码,并测试成功。在项目中重启了WebSphere,连接成功。
这两种方式暂时还没有时间深入研究到底什么原因,万幸系统终于没什么大问题了
以下是项目迁移时参考过的url
WebSphere数据源
引用
http://xiaoduan.blog.51cto.com/502137/124414
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0512zhanghzh/
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0512zhanghzh/
JDK版本不一致(错误bad major version at offset=6 This is often caused by having a class defined at multiple locations within the classloader hierarchy)
引用
http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14087324
修正WebSphere jsp默认的1.3规范 编译版本(让 WAS V6.1 的 JSP 编译器用 JDK5.0)
引用
http://wing123.iteye.com/blog/376857
实际在迁移过程中还走了很多弯路,查的网页也比上面列的多很多。其实迁移完成后发现Websphere也没想象的那么恐怖,主要是不熟悉造成的,这里记录下来供各位网友参考一下。
另外对WebSphere的实时调试,我还是没弄好,好像是必须要建企业项目而不是一般web项目,所以我现在的修改还是在tomcat下修改,最后部署在WebSphere下面。修改量少的话,就不重新部署war包了(实在很慢),将修改的配置文件,或.class直接拷贝到Websphere的实际发布目录下替换,重启WebSphere解决
转自:http://sind.iteye.com/blog/682498
- tomcat6.0向WebSphere6.1移值
- tomcat6.0向WebSphere6.1移值
- WebSphere6.1 安装 部署
- websphere6.1升级
- websphere6.1 and log4j
- websphere6.1安装图解
- Websphere6.1静默安装
- websphere6.1 BUG NullPointerException
- Websphere6.1---SRVE0255E
- websphere6.1安装集群
- websphere6.1开发、部署、远程调用EJB2.0
- Websphere6.1启动关闭命令
- Websphere6.1试用版无限试用
- windows 下安装websphere6.1
- Win7 下安装 Websphere6.1
- websphere6.1配置oracle数据源
- websphere6.1 配置sqlserver数据源
- MyEclipse下配置Websphere6 .1
- hadoop 命令
- QT 如何设置 QPushButton 的背景色
- Linux常用命令大全
- Linux内核编译选项-1
- 在Access中操作进行Access与SQL Server的数据互导
- tomcat6.0向WebSphere6.1移值
- debian\ubuntu查看硬件信息
- 如何通过外包平台承接IT项目
- 敏捷日志2013-1-6
- javascript DOM 复选框选择
- OracleDBconsoleorcl无法启动解决方案
- Android下得到Home键按下的消息
- 组合模式(Composite Pattern)
- CSS3常用功能的写法