Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何跨web应用程序共享Hibernate SessionFactory?_Java_Hibernate_Spring_Orm - Fatal编程技术网

Java 如何跨web应用程序共享Hibernate SessionFactory?

Java 如何跨web应用程序共享Hibernate SessionFactory?,java,hibernate,spring,orm,Java,Hibernate,Spring,Orm,我有两个web应用程序,它们运行在一个Tomcat服务器上,并通过Hibernate连接到同一个数据库。我担心运行两个SessionFactory实例可能会导致一些问题 另外,由于两个web应用程序共享许多相同的应用程序逻辑,我认为尽可能地集中是一个好主意。而且,由于我使用Spring进行DI和Hibernate配置,因此使用单个ApplicationContext也是有意义的 我该怎么做这样的事情呢?我是否需要部署一个无头WAR,创建一个ApplicationContext,从而创建一个Ses

我有两个web应用程序,它们运行在一个Tomcat服务器上,并通过Hibernate连接到同一个数据库。我担心运行两个SessionFactory实例可能会导致一些问题

另外,由于两个web应用程序共享许多相同的应用程序逻辑,我认为尽可能地集中是一个好主意。而且,由于我使用Spring进行DI和Hibernate配置,因此使用单个ApplicationContext也是有意义的

我该怎么做这样的事情呢?我是否需要部署一个无头WAR,创建一个ApplicationContext,从而创建一个SessionFactory,并允许每个应用程序访问它?这是个好主意吗

我担心有两个 正在运行的SessionFactory实例 周围可能会引起一些问题

Web应用程序在专用的
类加载器中相互屏蔽。所以我不认为冲突会发生,也不会为此烦恼。两个
SessionFactory
就可以了

我担心有两个 正在运行的SessionFactory实例 周围可能会引起一些问题

Web应用程序在专用的
类加载器中相互屏蔽。所以我不认为冲突会发生,也不会为此烦恼。两个SessionFactory应该可以。

您可以将创建会话的应用程序逻辑放入共享类加载器(通常是/shared中的JAR)中,但是,要非常小心,因为除非您熟悉所做的工作,否则很容易生成奇怪的异常

除非您需要跨两个Web应用同步事务,否则您也不太可能从中看到很多好处(因为您必须担心同步Web应用会话状态等),在这种情况下,JTA或其他选项可能仍然是更好的解决方案。

您可以将创建会话的应用程序逻辑,并将其访问到一个共享类加载器(通常是/shared中的JAR)中。但是,在这样做时要非常小心,因为除非您熟悉所做的工作,否则很容易生成奇怪的异常


除非您需要跨两个Web应用同步事务,否则您也不太可能从中看到很多好处(因为您必须担心同步Web应用会话状态等),在这种情况下,JTA或其他选项可能仍然是更好的解决方案。

可以通过JNDI共享
SessionFactory
(理想情况下,您可以将Hibernate作为JMX服务部署在应用服务器中)


但是老实说,拥有2+
SessionFactory
实例并不是一个真正需要考虑的问题,也没有什么真正需要担心的。这是一个非常常见的场景,即使对于单个应用程序(在集群环境中)。

可以通过JNDI共享
SessionFactory
(理想情况下,您可以将Hibernate作为JMX服务部署在应用服务器中)


但老实说,拥有2+
SessionFactory
实例并不是一个真正需要考虑的问题,也没有什么真正需要担心的。这是一个非常常见的场景,即使对于单个应用程序(在集群环境中).

JNDI是一个想法,但在这一点上可能无法做到。我将进一步研究。您的第二点很有意义。谢谢!JNDI是一个想法,但在这一点上可能无法做到。我将进一步研究。您的第二点很有意义。谢谢!同步是一个问题,因为其中一个应用程序s是客户端应用程序的管理应用程序。感谢您的回复。我同意将应用程序内容放在共享类加载器中可能不是一个好主意。是的,不幸的是,JNDI路由基本上也需要这样做-与JDBC驱动程序相同。同步是一个问题,因为其中一个应用程序是管理应用程序对于客户端应用程序。感谢您的回复。我同意将应用程序内容放在共享类加载器中可能不是一个好主意。是的,不幸的是,JNDI路由基本上也需要这样做-与JDBC驱动程序相同。