当前位置: 首页 > 知识库问答 >
问题:

如何将Spring/Hibernate JPA应用程序从Tomcat7迁移到Tomee Plus1.7.2?

上官彬
2023-03-14
Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.QueryResultsRegion
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.tomee.catalina.LazyStopWebappClassLoader.loadClass(LazyStopWebappClassLoader.java:171)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)

我发现这个类是Hibernate3.3的一部分,但我使用的是Hibernate4.2

我复制了hibernate-core-4.2.0.final.jar,hibernate-ehcache-4.2.0.final.jar,cglib-2.2.2.jar,hibernate-jpa-2.0-api-1.0.1.final.jar,hibernate-commons-annotations-4.0.1.final.jar,hibernate-entitymanager-4.2.0.final.jar,hibernate-validator-4.2.0.final.jar,ehcache-core-2.4.3.3.jar,spring-data-commons-core-1.3.0.release.jar,spring-data-jpa-1.1.0.release.jar,spring-jdbc-3.0.7.release.jar,spring-orm-3.1.2.release.jar也可以添加到/lib文件夹中。这些罐子也是战争的一部分。

persistence.xml是:

<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">      <provider>org.hibernate.ejb.HibernatePersistence</provider>
</persistence-unit>

共有1个答案

万嘉熙
2023-03-14

当WebappClassLoader实现试图启动Web项目时,应用程序或被引用的第三方库中的某些内容仍在引用org.hibernate.cache.QueryResultsRegion类。

这很可能是由于spring-orm-3.1.2.release.JAR的JAR过时所致。您应该可以通过将Spring版本至少升级到4.0来克服这一问题,但从长远来看,最好使用4.1/4.2版本。

在检查spring-data-commons-core-1.3.0.jar的依赖关系时,我发现它应该与Spring4.0.x兼容-不保证4.1/4.2。

另一个棘手的JAR可能是spring-data-jpa-1.1.0.release.JAR,因为它已经过时(发布于2012年5月),并且在1.9.x版本中已经可用。试着找出至少是2014年或更好的2015年的星座。

我的建议是:

  1. 至少将Spring升级至4.0.x版本。
  2. 检查您自己的类文件,以获取该冲突运行时类的直接导入的引用。
  3. 检查项目中可能存在的其他配置文件,如使用ORM类(如ehcache)的Spring应用程序/模块上下文。
  4. (可选)如果类加载错误本应得到解决,则尝试逐步升级到Spring 4.1/4.2。以功能方式测试您的设置。
 类似资料:
  • Tomcat10最近发布了,并尝试简单地部署应用程序。由于Java EE 8使用javax.*包名称空间,而Tomcat10使用Java EE 9,后者使用jakarta.*名称空间,因此很难从Tomcat9迁移到10。有什么方法或工具可以做到这一点吗?我认为这对tomcat 7/8也是一样的。

  • 我用xcode11运行我的应用程序,并且可以发布它。但是,我看到了苹果发布的下面这则公告; “从2021年4月开始,所有提交到应用商店的iOS和iPadOS应用都必须使用Xcode 12和iOS 14 SDK构建。” 我到底该怎么做?如果我下载Xcode12并运行我的应用程序,SDK会自动更新吗?安装iOS 14 SDK该怎么做? 或者我需要为我现有的豆荚“豆荚更新”吗?在我的项目“iOS部署目标

  • 我有一个Web项目,我很容易在tomcat上对其进行depoly。事实上,我有一个实现的类(这个类真的很胖),因为你知道每个支持servlet 3.0的应用程序服务器,它可以很容易地检测到它并尝试启动它。现在我想知道是否可以使用Spring启动启动器,并且无需任何进一步的配置,我将我的传递给它,并根据我的启动我的项目进行Spring启动? 我只想使用spring boot的方法在Tomcat上部署

  • 我正在探索将java web应用程序移动到Azure应用程序服务的可能性。应用程序on prem在启动时读取属性文件。 是否有可能将属性文件传递或放置到应用服务?如果没有,建议将此类遗留应用程序移动到Azure应用服务?

  • 我正在做一个项目,使用Spring框架(Spring MVC,JDBC等)项目不是很大,使用Jetty servlet容器,PostgreSQL数据库与标准DAO类(sql请求)。我需要将Spring Boot和Hibernate/Spring JPA与存储库一起使用,而不是SQL查询。我发现有几种状态描述了向spring Boot的迁移:https://www.baeldung.com/spri

  • 我正在尝试将运行在Jboss eap-6.3服务器上的应用程序传输到Wildfly 9服务器上。 独立日志 谁能帮帮我吗?我是JBoss和Wildfly环境的新手