`

一个以前没发现的EJB古怪问题

阅读更多

      昨天修改了项目中一个EJB实现类,重新编译,然后发布,发布成功,看来一切都是好好的。然后启动客户端进行测试。怪事出现了,只要一调用EJB,控制台就报如下错误:

<BEA-010051> <EJB Exception occurred during invocation from home: cn.com.pansky.xmdswz.system.idgenerator.IDGeneratorEJB_ducnu_HomeImpl@165a43b threw exception: java.lang.IncompatibleClassChangeError
java.lang.IncompatibleClassChangeError
	at cn.com.pansky.xmdswz.system.idgenerator.IDGeneratorEJBBean.getPlBxhByJsqlxAndZlx(IDGeneratorEJBBean.java:64)
	at cn.com.pansky.xmdswz.system.idgenerator.IDGeneratorEJB_ducnu_EOImpl.getPlBxhByJsqlxAndZlx(IDGeneratorEJB_ducnu_EOImpl.java:100)
	at cn.com.pansky.xmdswz.system.idgenerator.IDGeneratorEJB_ducnu_EOImpl_WLSkel.invoke(Unknown Source)
	at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:166)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:247)
	at cn.com.pansky.xmdswz.system.idgenerator.IDGeneratorEJB_ducnu_EOImpl_814_WLStub.getPlBxhByJsqlxAndZlx(Unknown Source)
	at cn.com.pansky.xmdswz.utility.SequenceUtility.getPlBxhByJsqlxAndZlx(SequenceUtility.java:76)
	at cn.com.pansky.xmdswz.utility.SequenceUtility.getPlBxhByJsqlxAndZlx(SequenceUtility.java:54)
	at cn.com.pansky.xmdswz.wssb.service.WssbService.getPlBxhByJsqlxAndZlx(WssbService.java:61)
	at cn.com.pansky.xmdswz.wssb.manager.DfsfMgr.add(DfsfMgr.java:72)
	at cn.com.pansky.xmdswz.wssb.command.Dfsf_addCmd.perform(Dfsf_addCmd.java:34)
	at cn.com.pansky.xmdswz.system.frameext.BaseCmd.execute(BaseCmd.java:213)
	at cn.com.ebis.frame.busirealization.facade.CommandBean.sessionProcess(CommandBean.java:169)
	at cn.com.ebis.frame.busirealization.facade.CommandBean.execute(CommandBean.java:66)
	at cn.com.ebis.frame.busirealization.facade.Command_azsdjk_EOImpl.execute(Command_azsdjk_EOImpl.java:100)
	at cn.com.ebis.frame.busirealization.facade.Command_azsdjk_EOImpl_WLSkel.invoke(Unknown Source)
	at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:166)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:247)
	at cn.com.ebis.frame.busirealization.facade.Command_azsdjk_EOImpl_814_WLStub.execute(Unknown Source)
	at cn.com.ebis.frame.msgRouter.MsgRouter.execute(MsgRouter.java:142)
	at cn.com.ebis.frame.action.FrameAction.myPerformIt(FrameAction.java:266)
	at cn.com.ebis.frame.action.FrameAction.performIt(FrameAction.java:60)
	at cn.com.ebis.frame.action.ActionBase.perform(ActionBase.java:85)
	at cn.com.ebis.frame.action.ActionBase.execute(ActionBase.java:26)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	at cn.com.pansky.xmdswz.system.frameext.BaseRequestProcessor.processActionPerform(BaseRequestProcessor.java:82)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
	at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
	at cn.com.pansky.xmdswz.protal.sso.SSOFilter.doChain(SSOFilter.java:268)
	at cn.com.pansky.xmdswz.protal.sso.SSOFilter.doFilter(SSOFilter.java:147)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6724)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
	at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
	at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
	at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
	at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
> 

 真是怪事,类不兼容错误??应用中的类都是用JDK1.4编译的,怎么会不兼容?于是把EJB重新打包、重新布署,这样来来回回折腾好多次,问题依然存在,到底是碰到了哪个筋?百思不得其解。

      想来想去,后来实然想到在发布时,为了删除重复类文件,当时脑袋一热就把客户端类jar包中把EJB的那几个类删除了,会不会这个原因呢?于是就把那几个EJB的class文件重新放到客户端类jar包中,再启动测试,问题解决了。

      这个问题原因其实挺简单,但花了那么多时间来处理,主要是因为错误提示信息的误导所致。让我崩溃的是为什么系统不提示缺少类文件是提示类不兼容呢?

分享到:
评论
2 楼 seele 2009-06-14  
小S````
1 楼 fjlyxx 2009-06-11  
看看CLASSLODER的加载机制...

相关推荐

    实战EJB 实战EJB 实战EJB

    #### 二、编写和部署第一个EJB程序 **编写第一个EJB程序** 1. **定义接口**:为EJB定义本地和远程接口。 2. **实现EJB类**:实现接口中定义的方法,包括业务逻辑的实现。 3. **配置部署描述符**:使用`ejb-jar.xml...

    一个简单的EJB实例

    **企业JavaBean(EJB)**是Java...这个简单的EJB实例是一个很好的起点,帮助初学者了解EJB的基础知识和实际应用。通过实践和分析这些文件,你可以更深入地理解EJB如何工作,以及如何将它们集成到更大的企业级系统中。

    一个复杂的用EJB3实现的银行系统

    总的来说,这个银行系统利用EJB3和STRUTS框架,构建了一个高效、稳定的业务处理平台,满足了银行日常运营的各种需求。通过EJB3的组件化设计和STRUTS的流程控制,实现了业务逻辑的清晰划分和灵活扩展,确保了系统的可...

    一个简单的EJB

    在"一个简单的EJB"项目中,我们可以看到一个基础的EJB实现,通常这样的例子会展示如何创建一个简单的EJB组件,以及如何在客户端调用这个组件的方法,比如显示一个"Hello, World!"信息。这对于初学者来说,是一个很好...

    完整EJB3.0第一个HelloWord,

    EJB3.0是EJB规范的一个重要版本,它引入了许多改进,使得EJB更加轻量级,易于使用,并减少了XML配置的需求。在EJB3.0中,开发人员可以利用注解(Annotations)来简化对象的声明,使其更加直观。 在EJB3.0的第一个...

    一个EJB项目入门例程

    作为大学课堂作业,这个EJB项目可能是设计一个简单的业务场景,如订单处理或用户管理。学生将通过实际操作理解EJB的组件、容器管理和调用机制。 通过这个入门例程,你将学习到如何创建和配置EJB组件,如何在Java EE...

    EJB 一个完整的例子

    这个"EJB一个完整的例子"很可能是提供了一个实际的EJB应用开发的示例,帮助开发者理解EJB的工作原理和使用方法。EJB在Java EE(Java Platform, Enterprise Edition)框架中扮演着关键角色,主要负责处理业务逻辑和...

    第一个EJB简单例子

    在这个“第一个EJB简单例子”中,我们将深入探讨如何创建和理解基本的EJB组件。 1. **EJB组件类型**: - **会话Bean(Session Beans)**:代表客户端的一次交互或会话。它们可以是状态ful(维护会话状态)或状态...

    一个ejb学习时的简单例子

    Enterprise JavaBeans...总的来说,这个ejb学习的例子是一个很好的起点,它涵盖了EJB的核心概念和实际应用。通过分析和运行这个例子,你可以逐步熟悉并掌握EJB技术,为构建更复杂的Java EE应用程序打下坚实的基础。

    EJB2.0一个完整的Helloworld

    EJB 2.0版本是EJB规范的一个里程碑,引入了许多改进,包括对组件模型、容器管理和部署的优化。 在"一个完整的Helloworld"示例中,我们将深入理解EJB 2.0的基础知识,包括Bean的类型、接口、生命周期管理以及如何在...

    EJB方面 ejb pdf

    理论上任何Java类都可能被视为一个Bean,但在实践中,JavaBean通常具备无参数构造函数,并实现了`Serializable`接口以支持持久化。JavaBean类似于COM模型中的本地进程内组件,不具备跨进程访问能力。 - **...

    第一个EJB工程....

    在"第一个EJB工程"中,你可能会遇到以下关键知识点: 1. **EJB组件类型**:EJB主要分为三种组件类型:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-Driven Beans)。会话Bean通常...

    一个EJB的小测试代码

    在这个小测试代码中,我们看到的是一个EJB应用在WebLogic 9服务器上的实践。WebLogic是Oracle公司提供的一个企业级应用服务器,它支持Java EE规范,包括EJB。 EJB主要分为三种类型:会话bean(Session Beans)、...

    EJB的一个开发实例

    本文旨在通过一个具体的EJB应用系统——学校管理系统——的开发过程,探讨EJB技术的实际应用及其面临的挑战。 #### 二、项目背景 本项目的目标是开发一个学校管理系统,该系统主要提供以下功能: - 学生和教师能够...

    实战角度比较EJB2和EJB3的架构异同

    EJB2的编程模型相对复杂,一个EJB通常需要两个接口(业务接口和远程接口)以及一个Bean实现类。开发者需要手动实现ejbCreate等生命周期方法,这在处理大量EJB时显得较为繁琐。而在EJB3中,这一情况得到了显著改善,...

    Weblogic 创建一个简单的EJB项目

    在本教程中,我们将探讨如何在WebLogic环境中创建一个简单的EJB(Enterprise JavaBean)项目。 首先,我们需要了解EJB的基本概念。EJB是Java EE平台的核心组件之一,它为开发可部署在服务器端的企业级应用提供了...

    EJB集群EJB集群资料

    EJB集群是EJB技术的一个重要特性,它允许EJB容器(如JBOSS)在多台服务器上分布和复制EJB实例,以实现高可用性和负载均衡。 在给定的示例中,我们看到一个简单的无状态会话Bean(Stateless Session Bean)`...

    关于我的第一个EJB程序

    在这个“关于我的第一个EJB程序”中,我们将探讨EJB的基本概念、开发过程以及如何通过源码和工具来实现。 1. **EJB的基本概念** - **会话Bean(Session Beans)**:代表客户端的临时业务逻辑,用于处理单个用户...

    jboss7.1+ejb3.1建立第一个Ejb项目

    本篇文章将指导你如何使用JBoss7.1和EJB3.1在Eclipse3.7环境中创建你的第一个EJB项目。EJB(Enterprise JavaBeans)是一种Java平台上的组件模型,用于构建可扩展的、可靠的、安全的企业级应用。JBoss是Red Hat公司...

    第一个EJB访问数据库例子

    综上所述,"第一个EJB访问数据库例子"这个项目将引导我们了解如何在EJB环境中设置和使用数据库连接,以及如何通过EJB组件执行SQL查询和操作。这个过程中,我们将涉及JDBC、JNDI、EJB组件类型、事务管理以及可能的JPA...

Global site tag (gtag.js) - Google Analytics