Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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 如何使用Spring在服务器端的客户端服务调用之间共享数据/对象?_Java_Spring_Hibernate_Session - Fatal编程技术网

Java 如何使用Spring在服务器端的客户端服务调用之间共享数据/对象?

Java 如何使用Spring在服务器端的客户端服务调用之间共享数据/对象?,java,spring,hibernate,session,Java,Spring,Hibernate,Session,我目前正在使用Spring和Hibernate。此时,如果我从客户机发出一个createobject调用(例如),服务器端的服务存根就会收到一个请求。服务调用必须创建一个新的hibernate会话工厂,获取会话,然后进行事务处理。问题是这种情况每次都会发生,因此需要重新创建会话工厂才能使用。这似乎是非常浪费和性能影响,因为创建该工厂需要付出代价 我想做的是重用一个会话工厂,例如,跨客户端或多个客户端发出的不同服务调用。问题是我不知道怎么做,因为服务器端功能的入口点是服务调用。我知道我必须以某种方

我目前正在使用Spring和Hibernate。此时,如果我从客户机发出一个createobject调用(例如),服务器端的服务存根就会收到一个请求。服务调用必须创建一个新的hibernate会话工厂,获取会话,然后进行事务处理。问题是这种情况每次都会发生,因此需要重新创建会话工厂才能使用。这似乎是非常浪费和性能影响,因为创建该工厂需要付出代价

我想做的是重用一个会话工厂,例如,跨客户端或多个客户端发出的不同服务调用。问题是我不知道怎么做,因为服务器端功能的入口点是服务调用。我知道我必须以某种方式在服务器端保存状态,以便不同的调用可以访问相同的会话工厂。我知道在保持状态等方面存在可伸缩性问题,但必须有一种方法来重用以前创建的对象

我的问题是如何使用Spring(我应该使用会话bean还是HttpSession)?容器是否可以在启动时设置这些内容,还是必须等待服务请求进入

我在很大程度上是一个Spring新手,只是我不了解web服务的角色吗

提前谢谢

  • 您的情景是典型的MVC情景,由GWT+MVP实现。根据您的描述,您似乎正在为每个调用创建会话工厂,这显然不是一种标准做法
  • 会话工厂只创建一次,每个请求都在会话工厂创建的不同会话中执行
  • 对于Spring,典型的方法是使用Spring连接和hibernate配置会话工厂。此配置仅在应用程序启动时加载一次
  • 对于每个服务请求,从bean容器中获取会话工厂的引用(而不是每次都创建会话工厂),并从中创建会话以进行DB操作
  • 看看哪个使用了GWT+MVP+Spring+MyBatis。我知道您使用Hibernate而不是MyBatis,但这将作为此类项目的参考服务器
    您好,Santosh,是的,这是为一个webappAre准备的,您使用任何web框架,如Struts或Spring MVC吗?不,它是以GWT为中心的,所以使用MVP,服务器端更像是一个数据提供商。您好,Santosh,谢谢,我想我几乎找到了我想要的东西,多亏了您的指导。有几件事我需要考虑一下。基本上,我必须将我的spring上下文定义为一个servlet,以便在启动时加载配置,对吗?这是在web.xml中使用listener和servlet标记完成的吗?我想我还是不知道是谁为了声明bean之类的东西而加载了配置。它是在
    web.xml
    中完成的。检查Hi Santosh,谢谢,我仍然不确定如何检索servlet以获取您提供的链接中web应用程序上下文的servlet上下文参数,但我想我必须做更多的研究。您可以始终从请求对象中检索
    ServletContext
    ,作为
    HttpServletRequest.getServletContext()