`

tomcat向WebSphere移值

阅读更多
   最近做了一个普通的java web应用,一直是用tomcat6.0调试的,客户购买了WebSphere服务器,需要把项目移植到websphere上,以下是项目移植时碰到的问题,现在总结如下。
 
项目环境: 
引用
    JDK 1.6
    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/beans
http://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> 前添加下面一行:

<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/



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解决





  
分享到:
评论
1 楼 yusimiao 2013-11-29  
非常全面了,基本上一直到was上就这些问题了,今天系统的看了一下,非常感谢您的总结,我先留着了,呵呵。

相关推荐

    将web应用从Tomcat5移植到Websphere6.doc

    ### 将Web应用从Tomcat5移植到Websphere6的知识点详解 #### 一、移植背景及目的 随着业务发展和技术更新换代,企业往往需要将原有的Web应用从一个平台迁移到另一个平台上以适应新的需求和技术环境。本文旨在详细...

    将web应用从Tomcat5移植到Websphere6.pdf

    ### 将Web应用从Tomcat5移植到Websphere6:关键步骤与注意事项 #### 应用打包与配置 在将Web应用从Tomcat5移植到Websphere6的过程中,应用打包是至关重要的一步。本篇文章将详细阐述如何使用WebSphere 5的应用程序...

    应用移植WebSphere问题列表(经验是买不到的)

    以上就是针对WebSphere移植过程中遇到的一些典型问题及其解决办法,理解并掌握这些知识有助于更顺利地进行应用迁移。在实践中,遇到的具体问题可能更为复杂,需要结合具体的日志信息和环境进行排查。

    javaweb 系统从Tomcat移植到WAS6.1.doc

    在将JavaWeb系统从Tomcat移植到WebSphere Application Server (WAS) 6.1的过程中,首先需关注的是环境配置与适配问题。这包括但不限于更改数据库连接配置、调整应用程序包(WAR文件)以及设置应用服务器的运行参数等...

    websphere安装笔记

    在WebSphere环境下,为了便于项目的移植和部署,常常需要将Tomcat下的项目打包成WAR格式。这一过程可以通过一系列命令在命令行界面中完成。具体步骤如下: 1. **打开命令提示行**:首先,通过快捷键`Win + R`打开...

    myeclipse+tomcat开发环境搭建&tomcat;编程规范

    了解并遵循这些规范和注意事项,可以帮助开发者在MyEclipse和Tomcat环境中更顺畅地进行开发,同时提高代码的可移植性和兼容性。在实际开发过程中,应根据具体的应用服务器和项目需求进行适当的调整。

    WebSphere+Application+Server+常见问题及解答

    这意味着可以在不中断当前运行的服务的情况下,向集群中添加新的服务器节点。这一特性极大地提高了系统的可扩展性和可用性。 **4. WAS是否支持目录服务LDAP?请列举所支持的LDAP服务器。** WAS确实支持LDAP目录...

    Java开源社区相关技术背景(企业版)

    在Servlet容器方面,常见的有IBM的WebSphere、Oracle的WebLogic(原BEA公司的产品)、Red Hat的JBoss和Apache的Tomcat。WebSphere和WebLogic是商业产品,提供全面的企业级服务,而JBoss主要通过提供服务盈利,Tomcat...

    六大应用服务器用途及简介.docx

    它提供了多种组件和服务,包括Servlets、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)等,以实现应用程序的模块化、可移植性和安全性。J2EE的目标是简化开发过程,提升系统的可重用性和可扩展性。 2. **...

    JSP_图解JSP环境安装配置JSP_图解JSP环境安装配置

    2. **Web服务器或应用服务器**:JSP需要一个支持它的服务器,如Apache Tomcat、IBM WebSphere、Jetty等。Tomcat是最常用的轻量级应用服务器,支持Servlet和JSP标准。 3. **集成开发环境 (IDE)**:虽然不是必需的,...

    Java概述PPT课件

    常见的Java产品类型包括桌面应用程序、在浏览器中运行的Applet、基于Web的应用程序(如网上银行)、应用服务器(如Tomcat、Websphere和Weblogic)以及数据库系统(如Oracle、DB2和MySQL)。Java程序通常以main()方法...

    七种常用的WEB服务器

    - **跨平台支持**:WebSphere 支持多种操作系统和硬件平台,确保了广泛的兼容性和可移植性。 #### 三、BEA WebLogic Server BEA WebLogic Server 是一款高性能的 Web 应用服务器,被广泛应用于构建企业级应用程序...

    网上玩具商城

    - 软件支持:Windows操作系统,MySQL数据库,服务器可以是Tomcat或Websphere,使用Java Web集成开发环境。 4. **功能需求**: - 用户部分:用户注册、登录、浏览商品、添加到购物车、提交订单、付款等。 - 管理...

    网上商城管理系统概要设计报告.doc

    操作系统可支持Windows或Linux,数据库可以选择SQL Server 2000或MySQL,服务器环境可以是Tomcat或Websphere,使用.NET集成开发环境进行数据库连接。 **3. 功能需求** 系统功能分为用户界面和后台管理两大部分: -...

    J2EEWEB开发教材

    - J2EE 的主要优势在于它的平台无关性和可移植性,能够支持多种操作系统环境。 **1.2 J2EE 规范构成** - J2EE 规范由一系列技术和组件组成,主要包括 EJB(Enterprise JavaBeans)、JMS(Java Message Service)、...

    db2java+db2jcc+db2jcc4+license

    在分布式系统中,DB2的Java驱动也扮演着重要角色,比如在Web应用程序服务器(如Tomcat、WebSphere)中,可以配置数据源(DataSource)来管理与DB2的连接,实现连接池,提高系统性能和资源利用率。 总的来说,给定的...

    Java与JEE架构-第章概述完美版资料.ppt

    Web服务器在JEE架构中扮演着关键角色,如Apache、Tomcat或IBM的WebSphere,它们接收并响应HTTP请求,向客户端浏览器发送动态生成的HTML页面。为了扩展Web服务器的功能,JEE引入了Servlet和JSP(JavaServer Pages)...

    搭建JSP开发环境总结

    Java是跨平台的,因此目前的主流操作系统上均可以开发JSP,而且JSP应用程序能在各种操作系统之间方便地进行移植。 三、软件环境 JSP应用程序属于B/S结构,客户端主要是浏览器,服务器端必须配备解析JSP的引擎和Web...

Global site tag (gtag.js) - Google Analytics