`

WebSphere 70-8.5 部署问题

阅读更多
最近产品上线,同时要部署到三个不同版本的Websphere上,分别是WebSphere 7.0、8.0和8.5.0.0,遇到不少问题在此总结一下:

   1.WebSphere 8.5.0.0 这个版本最悲剧。

   如果项目中用到了asm 相关的jar包,可能会遇到这样的问题。

   ① 我项目中用到了asm-3.3.jar

   [13-8-29 15:48:52:659 CST] 000000c1 webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet 错误]-   [GenericServletWrapper]: java.lang.IncompatibleClassChangeError: org.objectweb.asm.ClassVisitor
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:262)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69)
        at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:852)
        at com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:762)
        at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:585)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:627)
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:262)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69)
        at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:852)
        at com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:762)
        at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:585)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:627)
        at java.lang.J9VMInternals.verifyImpl(Native Method)
        at java.lang.J9VMInternals.verify(J9VMInternals.java:85)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:162)
        at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:390)
        at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347)
        at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)
        at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:260)
        at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
        at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
        at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
        at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.init(FilterInstanceWrapper.java:142)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager._loadFilter(WebAppFilterManager.java:566)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.loadFilter(WebAppFilterManager.java:473)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.getFilterInstanceWrapper(WebAppFilterManager.java:306)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.getFilterChain(WebAppFilterManager.java:378)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:890)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1023)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3703)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:962)
        at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:522)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:311)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:282)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at com.ibm.io.async.AsyncChannelFuture$1.run(AsyncChannelFuture.java:205)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783)

        初期我考虑是jar包冲突,在websphere 目录找到
/opt/IBM/WebSphere/AppServer/plugins/com.ibm.ws.prereq.asm.jar
/opt/IBM/WebSphere/AppServer/plugins/com.ibm.ws.prereq.ow.asm.jar

        于是删除了 项目中的asm-3.3.jar 仍然报这个错误。后来google之后找到了解决方法

          1、升级到8.5.0.2解决了这个问题,详见(IBM官方提供的方法)
http://www-01.ibm.com/support/docview.wss?uid=swg1PM71336
2、创建采用隔离的类加载器的共享库,并在应用程序中引用之
类装入“请对此共享库使用隔离的类装入器”
3、采用PARENT_LAST类加载
“类已装入并且是先使用本地类装入器(父类最后)”

将cglib包cglib-2.1.3.jar更换为cglib-nodep-2.1.3.jar或者更高的版本cglib-nodep-2.2.jar
         cglib-nodep-2.2.jar包中包含了完整的类与接口
        这样,整个系统就可以部署成功并运行


        升级必须说服客户到8.5.0.2然后才解决了这个问题。

      ②远程解决WebShpere 上的问题很痛苦,每次都要让现场的同事拉日志,然后看,报一些jar冲突的问题后不知道类路径的情况,后来通过导出拓扑图的方式,查看类路径下的jar包
    
       具体做法是,WebSphere 控制台—>类装入器查看器—>企业应用程序拓扑 找到部署的项目,然后web模块 找到自己部署的项目,点击导出,将项目对应的类路径拓扑导出。根据这个东西,发现类路径中的重复jar 从而干掉了一下非法的jar包。

      ③ 建立共享库的意义不凡。我建立共享库的标准是这样的,当一个jar包在lib里面是报NoClassDefError V  ,当jar包不在类路径的时候又报NoClassDefError ,此时我把这个    
      jar包放置到共享库当中。

      ④ log4j jar 在类路径中有可能会引起jar包冲突,如果提示log4j 冲突可以将lib目录的log4j*.jar删除即可。


   2.WebSphere 7.0

     ① jsp页面403 forbidden

     在应用程序服务器 -> [ 选择所使用的服务器 ] -> Web 容器设置 -> Web 容器 -> 定制属性,增加名称为"com.ibm.ws.webcontainer.invokefilterscompatibility"的定制属性 ,值设为 true。
     或者检查 WAR 文件的 lib 库中是否存 jsf-api.jar,jsf-impl.jar,jstl-1.2.jar 三个 jar 文件。这是因为在使用 MyEclipse 开发时,MyEclipse 会自动将这三个 jar 文件     加入到 lib 库中,但 jsf-impl.jar 包中的 com.sun.faces.application.WebappLifecycleListener 与 java.util.EventListener 不兼容导致应用无法访问,打开 WAR 包的      lib 目录,删除这三个 lib 包即可解决问题。

    ② 部署到WebSphere 7.0 环境后
[14-5-16 19:14:25:449 CST] 0000001c SystemOut     O 19:14:25.445 [Default : 0] WARN  org.hibernate.cfg.SettingsFactory - Could not obtain connection 	    metadata
	com.ibm.db2.jcc.a.SqlException: DatabaseMetaData information is not known for server DB2/AIX64SQL09076 by this version of JDBC driver
	at com.ibm.db2.jcc.a.t.supportsResultSetType(t.java:5177) [db2jcc.jar:na]
	at com.ibm.ws.rsadapter.jdbc.WSJdbcDatabaseMetaData.supportsResultSetType(WSJdbcDatabaseMetaData.java:3287) [com.ibm.ws.runtime.jar:na]
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:119) [hibernate-core-3.3.1.GA.jar:3.3.1.GA]
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101) [hibernate-core-3.3.1.GA.jar:3.3.1.GA]
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325) [hibernate-core-3.3.1.GA.jar:3.3.1.GA]
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) [hibernate-annotations-3.4.0.GA.jar:3.3.1.GA]
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:814) [spring-2.5.6.jar:2.5.6]
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:732) [spring-2.5.6.jar:2.5.6]

   这个原因显然是因为DB2 jar包引起的,可以通过到官网查找相关版本的DB2jar包进行替换就可以了。

 
分享到:
评论

相关推荐

    apache-tomcat-8.5.55.zip

    然而,对于大型企业级应用,可能需要更强大的服务器,如IBM WebSphere或Oracle WebLogic,它们提供了更多的管理和安全性功能。 总的来说,Apache Tomcat 8.5.55是Java Web开发的基础工具,理解和掌握其配置和使用...

    WebSphere8.5 Linux 安装部署全过程

    在本文中,我们将深入探讨如何在Linux环境下安装和部署WebSphere Application Server V8.5,这是一个企业级的应用服务器,广泛用于构建和运行Java EE应用程序。整个过程分为几个关键步骤,包括准备必要的软件包、...

    xxx银行系统-WebSphere-was8.5原厂安装配置调优实战手册

    总的来说,《xxx银行系统-WebSphere-was8.5原厂安装配置调优实战手册》为银行系统的WAS部署提供了详尽的指导,涵盖了从规划、安装到调优的全过程,是IT专业人员在实施银行系统项目时的重要参考文献。通过对这本手册...

    Websphere8.5安装

    【标题】:Websphere 8.5安装 在IT领域,WebSphere是IBM提供的一款企业级应用服务器,常用于构建、部署和管理...通过《Websphere8.5安装.xls》这样的文档,可以更详细地了解每个步骤和配置选项,为安装过程提供指导。

    阿帕奇tomcat-8.5.51.zip

    阿帕奇Tomcat是一款广泛应用的开源Java Servlet容器,它实现了Java EE Web...不过,对于大型企业级应用,可能需要考虑与更强大的应用服务器如IBM WebSphere或Oracle WebLogic集成,以获得更全面的功能和更高的性能。

    IBM Websphere Portal 8.5 Cluster 创建 02

    IBM WebSphere Portal 8.5是一个企业级的Web内容管理和协作平台,它能够为用户提供个性化的Web体验和访问企业信息的途径。当涉及到大规模部署时,通常会采用Cluster(集群)的方式来保证服务的高可用性和负载均衡。...

    apache-tomcat-8.5.85

    Tomcat就是这样一个容器,它是轻量级的,因为相比其他全功能的应用服务器(如IBM WebSphere或Oracle WebLogic),它只专注于实现Java EE的Web层规范。 Tomcat 8.5.x系列是一个稳定的版本,它带来了许多增强和改进,...

    WebSphere8.5 安装+集群

    WebSphere 8.5 安装和集群配置 WebSphere 8.5 是一款功能强大且灵活的应用服务器,可以在各种环境中运行,包括 Linux。下面我们将详细介绍如何在 Linux 环境下安装和配置 WebSphere 8.5,以及如何设置集群环境。 ...

    apache-tomcat-8.5.61.rar

    尽管它不包含像大型应用服务器(如IBM WebSphere或Oracle WebLogic)那样的全面特性集,但Tomcat的简洁性和高效性使得它在开发和部署Java Web应用时非常流行。 Web容器,也称为Servlet容器,是Tomcat的核心组件之一...

    Websphere8.5安装配置参考文档.docx

    ### Websphere 8.5 安装与配置详解 #### 一、概述 IBM WebSphere Application Server (WAS) 是一款广泛应用于企业环境的应用服务器,它提供了强大的平台支持Java EE应用程序的部署与运行。从版本8.5开始,IBM改变了...

    websphere8.5安装以及创建简单的应用实例

    总的来说,安装和配置WebSphere Application Server 8.5涉及到多个步骤,包括下载和安装所需组件,通过Installation Manager管理这些组件,以及在管理控制台中进行Node创建和应用部署。这个过程虽然复杂,但却是实现...

    WebSphereV8.5更新部署记录

    WebSphere V8.5 是 IBM 提供的一款强大的企业级应用服务器,它支持各种应用程序的部署和管理,尤其在Java EE环境中。在这个“WebSphere V8.5 更新部署记录”中,我们将探讨如何有效地进行WebSphere的更新和部署过程...

    WebSphere Application Server for Developers V8.5.5

    WebSphere Application Server for Developers V8.5.5是供开发人员使用的免费版的was,需要的小伙伴可以本地安装一下 ,部署测试web项目,因为上传空间有限,这里就只上传windows64位的。

    red hat5.8下安装websphere8.5 并部署应用手册

    在Red Hat 5.8操作系统环境下安装WebSphere Application Server (WAS) 8.5并部署应用程序是一项关键的任务,尤其对于那些需要在企业级Linux环境中运行Java EE应用程序的组织而言。以下将详细介绍整个过程,包括安装...

    websphere8.5.zip

    【标题】"Websphere8.5.zip" 指的是IBM的一款企业级应用服务器软件——WebSphere Application Server 8.5.5的压缩包。WebSphere是IBM提供的用于部署和管理Java EE(Java Platform, Enterprise Edition)应用程序的...

    IBMWebSphere8.5部署项目

    ### IBM WebSphere 8.5 部署项目知识点总结 #### 一、IBM WebSphere 8.5 创建数据源 ##### 1.1 新建 J2C 认证 - **步骤说明**: - 登录 WebSphere 管理控制台。 - 通过导航栏进入“安全性”>“全局安全性管理”...

    WebSphere Application Server V8.5 Administration and Configuration Guide

    WebSphere Application Server V8.5是IBM推出的一款应用服务器产品,它允许企业构建、部署和运行高性能的企业Java应用。该版本包括多个配置文件,其中Full Profile针对完整的企业级应用部署而设计。它提供了全面的...

    websphere下部署CXF项目jar包冲突问题解决方式

    在websphere8.5 下部署含有CXFwebservice的war包无法正常启动,而相应的war包在tomcat上是可以正常启动的,通过后台的日志分析大致可以定位为相关的cxf类无法找到,其实这些类在项目的lib目录下都是存在的,莫名其妙...

    apache-tomcat-8.5.8-windows-x64

    对于开发者来说,Tomcat提供了一个简单易用的环境来测试和部署Java Web应用,而无需完整的企业级应用服务器,如IBM WebSphere或Oracle WebLogic。 在"apache-tomcat-8.5.8-windows-x64"这个压缩包中,你可以期待...

Global site tag (gtag.js) - Google Analytics