Java Tomcat 6中的Toplink运行时错误

Java Tomcat 6中的Toplink运行时错误,java,oracle,tomcat,toplink,Java,Oracle,Tomcat,Toplink,让我提供一点背景知识来说明这个问题的来龙去脉。随着时间的推移,分配给我使用的应用程序失去了作为完整应用程序构建和部署的能力。我的意思是,以前的开发人员在本地IDE中编译代码,并删除单个类文件,而不是构建适当的JAR和WAR部署到tomcat。因此,我的任务是清理该项目,使其再次成为标准的可部署应用程序。因此,总结一下重要的部分,应用程序以工作格式存在于windows tomcat环境中,很长一段时间没有干净的部署,我的目标是使应用程序可构建并可通过jenkins CI服务器部署到Linux服务器

让我提供一点背景知识来说明这个问题的来龙去脉。随着时间的推移,分配给我使用的应用程序失去了作为完整应用程序构建和部署的能力。我的意思是,以前的开发人员在本地IDE中编译代码,并删除单个类文件,而不是构建适当的JAR和WAR部署到tomcat。因此,我的任务是清理该项目,使其再次成为标准的可部署应用程序。因此,总结一下重要的部分,应用程序以工作格式存在于windows tomcat环境中,很长一段时间没有干净的部署,我的目标是使应用程序可构建并可通过jenkins CI服务器部署到Linux服务器上运行的tomcat实例。现在来看看问题。我在一个应用程序模块中得到以下toplink异常

Local Exception Stack:
Exception [TOPLINK-6007] (OracleAS TopLink - 10g (9.0.4) (Build 031126)): oracle.toplink.exceptions.QueryException
Exception Description: Missing descriptor for [class edu.cornell.finsys.datamodel.AccountDTO].
Query: ReadObjectQuery(edu.cornell.finsys.datamodel.AccountDTO)
我已经验证了toplink映射文件已由tomcat加载,并且AccountDTO已映射到该文件中。为了再次检查这一点,我已经将映射文件移出,并且在加载时得到了一个完全不同的错误。我知道文件映射是正确的,因为它在旧服务器上工作正常。我不知道还有什么可能导致toplink异常。 有关更多信息,我使用的是tomcat版本6.0.37、Java版本1.6.0_45、toplink版本9.0.4.031126


有什么想法吗?

可能就是这样;从Metalink获得的权利:

原因:

这是一个加载sessions.xml文件的问题,当应用程序第一次使用该应用程序的类加载器部署时,然后在重新部署应用程序并创建新的XMLContext时,不重新加载会话。这导致我们尝试使用一个与当前应用程序不同的类加载器加载的会话

可能的解决办法:

当TopLink是主类路径的一部分(例如:Applib目录而不是存储在ear文件中)时,就会出现问题。发生这种情况时,静态会话管理器在部署应用程序的第二次和后续时间很难找到描述符。基本上,描述符是按类索引的。重新部署应用程序时,将卸载用于索引的类,并显示这些类的新版本。这会导致“未找到描述符”异常

潜在的解决办法

  • 将toplink.jar文件放入ear中

  • 编写一些代码,以便在toplink应用程序被拆除时手动清理

  • 对于某些体系结构,他们可能能够使用允许刷新会话的sessionManager.getSession()版本

  • 解决方案3是最好的,也是非常可行的。会议必须缓慢地进行 从SessionManager获得并保存在应用程序代码中 变量当应用程序重新启动时,其句柄位于TopLink上 会话将为空。然后可以从 使用getSession(XMLLoader,字符串 sessionName,类加载器objectClassLoader,布尔值 shouldLoginSession、boolean shouldRefreshSession)API 应将RefreshSession设置为true。这将确保老年人 会话(如果有)已注销并从SessionManager中删除 在创建新的之前


    这些解决方法有帮助吗?

    您是否也使用AccountDTO作为持久层中的JPA注释实体?不,在这个应用程序中没有JPA,AccountDTO是一个基本的POJOI,我不明白。如果不是实体管理器接口实现,TopLink的目的是什么?抱歉,如果这个问题很愚蠢…Toplink是一种将java元素映射到数据库表/字段的ORM技术。这是一个非常甜蜜的日子。我在搜索中没有看到这一点,谢谢,休息回来后我会尝试一下。