was和数据库升级总结

  1. 概述  
    这段时间在做was和oracle的版本升级,由于升级的版本比较新,加上项目年代久远,遇到一些问题,现总结一下,以备后患。
  2. 升级版本
    软件名称 升级前版本 升级后版本
    Websphere Application Server(WAS) was6.1.0.47 was8.5.5.5
    oracle database oracle10g-10.1.0.2.0 oracle12c-12.1.0.2.0

 

 

 

  3.升级思路
   由于要同时升级两个重要的服务器软件,为避免出现问题时,最快的定位问题出现的原因,升级时先进行was的升级,数据库使用原有的数据库,was升级后确定没问题了,再进行oracle的升级。

  另外由于项目运行环境was6.1中的jre是1.5版本,而升级后was8.5的jre是1.6版本,因此升级前建议将项目的jdk使用was8.5的jdk进行重新编译。

  4.升级时遇到的问题和解决方案


     4.1.1

      问题

       Axis2服务端的一些jar包无法加载,导致基于Axis2的Webservice无法启动

      表现

       系统启动时出现FileUploadException,NoClassDefFoundError,ClassNotFoundException等

      解决方案

       由于was8中自身集成了Axis2服务,作为webservice的engine,所以如果要使用应用系统自身集成的webservice引擎就需要改变类的加载顺序才能顺利加载webservice引擎的jar包,具体参考IBM Knowledge Center中的Using a third-party JAX-WS Web services engine一节

       所以打开was控制台,选择管理模块,点进去后,将类的加载顺序改为父类最后就可以了,这种修改类加载顺序(父类最后)的方式已经过实践验证,确实可行(实践环境是基于was8.5.5.5,Axis2-1.6的一个身份认证服务)。

      如果修改完类加载顺序问题仍没解决,需要将axis2自带的modules下的mar文件改成jar文件放到应用的类路径下。

         原本以为修改类加载顺序后就行了,但是我们系统由于时间久了,用的还是struts1,修改类加载顺序后出现jstl标签库无法加载的情况,具体表现如下

jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.CookieTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.DefineTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.HeaderTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.IncludeTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.PageTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.ParameterTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.ResourceTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.SizeTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.StrutsTei] from /WEB-INF/struts-bean.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.IterateTei] from /WEB-INF/struts-logic.tld
jsp     W com.ibm.ws.jsp.taglib.TldParser endElement JSPG0235E:JSP容器无法装入TagExtraInfo类
[org.apache.struts.taglib.IterateTei] from /WEB-INF/struts-logic-el.tld
... 

       后来发现是由于应用的类路径下有一个com.ibm.ws.webservices.thinclient_6.1.0.jar包跟javaee.jar包冲突,导致标签库无法加载。将com.ibm.ws.webservices.thinclient_6.1.0.jar清除,系统恢复正常

    4.1.2
      问题

       数据库升级成oracle12c时出现连接池获取不到连接,无法访问系统

      表现

       只要访问系统就出现NullPointerExcetpion

      解决方案

        由于数据库升级后,驱动没更新,导致连接池初始化连接时失败,访问系统时无可用连接就出现NullPointerException。解决方法就出更新数据库驱动。到oracle12c安装目录的jdbc目录下的lib,将其中的ojdbc6开头的jar包复制到系统类路径下。

    

    4.1.3
      问题

       数据库升级成oracle12c时出现ORA-28040:没有匹配的认证协议

      表现

       只要访问系统时设计到数据库查询就出现ORA-28040:没有匹配的认证协议

      解决方案

        这个问题可以用度娘搜到很多,看来碰到的机会还挺高。解决方法就是修改数据库安装目录下的sqlnet.ora($ORACLE_HOME/network/admin/sqlnet.ora)文件,增加SQLNET.ALLOWED_LOGON_VERSION = 8,然后重启oracle。

 

    希望对希望升级was和数据库的用户有所帮助。

  

    

 

  

posted @ 2016-05-19 17:32  轩宇沙  阅读(2274)  评论(0编辑  收藏  举报