`

重新部署应用出现ClassCastException

阅读更多

      若开发者重新部署某应用,与此同时有其他的应用引用了该应用的类,则此时ClassCastException异常经常出现,如单独的Web应用(.war)访问EJB。如果重新部署了某应用,所有依赖于它的应用必须刷新(flush)它们的类引用。一般情况下,这要求依赖的应用程序能够自动重新部署。

 

    做了如下的实验:

    jboss已经部署a.ear,通过页面触发action,打印其中一个类的信息,信息如下:

    2010-07-02 14:56:11,062 INFO  [STDOUT] (http-0.0.0.0-8080-3) action's CmtCtrlMgr cast::org.jboss.mx.loading.UnifiedClassLoader3@562d4b{ url=file:/usr/jboss/jboss/server/default/tmp/deploy/tmp801559332682014361Jdom.ear ,addedOrder=50}

 

   重新部署a.ear,通过页面触发action,打印其中一个类的信息,信息如下:

2010-07-02 15:03:18,395 INFO  [STDOUT] (http-0.0.0.0-8080-3) action's CmtCtrlMgr cast::org.jboss.mx.loading.UnifiedClassLoader3@d40c4e{ url=file:/usr/jboss/jboss/server/default/tmp/deploy/tmp548120413744882785Jdom.ear ,addedOrder=52}

 

可以看出,同一个类,重新部署后,加载器的实例不同,这样尽管类全限定名相同,也不能进行cast的。

 

解决方法:重新部署调用a.ear的应用。以后部署时,最好都重启一下应用服务器。

 

在网上找到这样的一句话:

在JAVA中,一个类用其完全匹配类名(fully qualified class name)作为标识,这里指的完全匹配类名包括包名和类名。但在JVM中一个类用其全名和一个加载类ClassLoader的实例作为唯一标识。因此,如果一个名为Pg的包中,有一个名为Cl的类,被类加载器KlassLoader的一个实例kl1加载,Cl的实例,即C1.class在JVM中表示为(Cl, Pg, kl1)。这意味着两个类加载器的实例(Cl, Pg, kl1) 和 (Cl, Pg, kl2)是不同的,被它们所加载的类也因此完全不同,互不兼容的。)

分享到:
评论

相关推荐

    weblogic解决clob添加失败 classcastexception

    在IT行业中,WebLogic是一款由Oracle公司开发的企业级应用服务器,广泛用于部署和管理Java EE应用程序。当我们在使用WebLogic时,可能会遇到各种问题,其中之一就是"weblogic解决clob添加失败 classcastexception"。...

    将应用部署在weblogic中于axis2冲突的问题及解决方案

    删除该包后,Weblogic Server 10.3可以正确地部署应用程序。 相关知识点 1. Weblogic Server 10.3的XML Input Factory机制 Weblogic Server 10.3使用了XML Input Factory机制来解析XML文件。在该机制下,Weblogic ...

    将应用部署在weblogic中于JSTL冲突的问题及解决方案

    4. 重新部署应用,并检查是否成功解决了问题。 需要注意的是,虽然移除`xml-apis-1.x.x.jar`通常可以解决问题,但在某些情况下,你的应用程序可能依赖于这个库的特定功能。因此,在移除前,应确保其他依赖项不会...

    WebSphere7.0_上部署struts2_找不到用于处理_JSP_的扩展处理器

    解决问题后,重新部署应用并测试关键功能,确保JSP页面和Struts2请求能够正常处理。如果问题仍然存在,可能需要进一步排查或寻求更专业的帮助。 综上所述,"找不到用于处理JSP的扩展处理器"的问题涉及到WebSphere...

    Birt与MyEclipse的集成及Birt的部署问题

    通过理解BIRT的核心概念,以及解决可能出现的问题,可以更有效地利用BIRT的功能,创建出符合需求的报表,并在各种Java和J2EE应用中顺利部署。记得在集成和部署时要关注版本兼容性,及时处理异常,确保系统的稳定运行...

    JBoss JMX实现架构

    在JBoss这样的应用服务器中,理解这些异常及其原因至关重要,因为它们可以帮助诊断和解决动态部署过程中可能出现的问题。通过优化类加载器的策略和管理,可以提高系统的稳定性和可扩展性。 总之,JBoss JMX的实现...

    CXF support WAS Weblogic

    - 根据所使用的应用服务器类型,按照特定指南部署CXF应用。 - 如果使用JBoss AS,则需要确保开启类加载隔离机制。 #### 常见问题解答 **1. ClassCastException: org.apache.xerces.jaxp....

    JBoss管理与开发核心技术_第三版电子书

    - **热部署能力**:新的部署架构和类装载架构使得所有组件都支持热部署,无需重启服务器即可更新或替换应用和服务。 - **跨部署单元共享**:新的类装载器架构允许类在不同的部署单元之间共享,提高了资源利用率和...

    解决SpringBoot使用devtools导致的类型转换异常问题

    然而,在实际应用中,使用devtools可能会遇到类型转换异常(ClassCastException)的问题,尤其是在结合使用Shiro进行会话管理时,如果会话存储方式采用Redis,问题尤为明显。本文将详细介绍导致这一异常的原因以及...

    tomcat自动关闭原因

    - **未捕获的异常**:应用程序中未妥善处理的异常,尤其是那些会导致程序崩溃的严重异常,如NullPointer、ClassCastException等,可能触发Tomcat的自动保护机制,导致服务停止。 - **死锁**:多线程应用程序中可能...

    EJB client调用EJB3 .doc

    需要注意的是,由于Web应用和EJB都在同一个容器中,EJB的接口类不需要放入/WEB-INF/classes/目录,否则可能会导致类型冲突,例如`ClassCastException`。 调用EJB时,客户端可以通过`InitialContext`查找EJB,如下...

    tomcat的安装配置

    - WAR文件是一种遵循Java EE标准的压缩文件格式,主要用于部署Java Web应用程序。WAR文件包含了Web应用的所有资源和元数据,包括HTML文档、图片文件、JSP文件以及Java类文件等。 2. **放置WAR包至Tomcat** - 将...

    超级有影响力霸气的Java面试题大全文档

    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 23、EJB与JAVA BEAN的区别?  Java Bean 是可...

    SoTower常见问题

    同时,SoTower DE 也支持将业务模块间调用暴露的 Bean,但需要注意 ClassCastException(139)的问题。 SoTower DE 的扩展和部署 SoTower DE 支持扩展模块的部署,以满足不同的业务需求。例如,通过源代码的形式...

    tomcat7启动或运行报错

    在使用Tomcat7部署Web应用的过程中,可能会遇到启动或者运行时出现以下错误提示: ``` java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl ...

    JBoss Admin Development Guide3.26

    - **Java中的类型与类加载**:解释了Java中的类加载机制以及可能出现的异常情况,如ClassCastException、IllegalAccessException等。 - **深入JBoss类加载器架构**:具体分析了JBoss如何处理类加载问题,以确保...

    JAVA基础知识点

    - **类型安全:** 使用泛型可以确保类型安全,避免在运行时出现ClassCastException。 - **代码重用:** 泛型允许编写一次代码,用于多种类型的数据,从而提高代码的复用性。 **注意事项:** - **性能:** 泛型在...

Global site tag (gtag.js) - Google Analytics