Java 如何在单个spring容器中加载多个jax ws web服务

Java 如何在单个spring容器中加载多个jax ws web服务,java,spring,jakarta-ee,jax-ws,Java,Spring,Jakarta Ee,Jax Ws,我们正在进行一个由多个web服务组成的SOA项目 每个web服务都基于Metro JAX-WS框架,并在内部使用spring和hibernate。每个web服务作为web应用程序加载到单独的spring容器中 这意味着我们的部署架构由多个web应用程序组成,每个应用程序运行不同的服务 但是,我们面临一些性能问题,因为每个web应用程序都加载自己的spring容器/hibernate会话工厂 可能的替代方案: 单web应用程序单spring上下文 多个web应用程序单个spring上下文 我们所有

我们正在进行一个由多个web服务组成的SOA项目

每个web服务都基于Metro JAX-WS框架,并在内部使用spring和hibernate。每个web服务作为web应用程序加载到单独的spring容器中

这意味着我们的部署架构由多个web应用程序组成,每个应用程序运行不同的服务

但是,我们面临一些性能问题,因为每个web应用程序都加载自己的spring容器/hibernate会话工厂

可能的替代方案:

  • 单web应用程序单spring上下文
  • 多个web应用程序单个spring上下文
  • 我们所有的web服务将始终在一台服务器上一起运行。对于我们的案例,什么是最好的架构?如何实现这一点,即如何将一个spring上下文与多个web服务一起使用?

    在“最佳体系结构”中的“最佳”是相当主观的,因为它取决于您当前的体系结构,您还没有很好地定义它

    不过,我有一些建议:

  • 考虑将与您的服务相关的所有业务逻辑整合到一个web应用程序中对维护的影响,更不用说所有spring配置的bean了,您将不得不对这些bean进行交互以重新考虑您的所有服务。从这个意义上说,根据我的经验,单独保存web应用程序往往会更好

  • 考虑将hibernate会话工厂从每个服务移动到一个集中的位置,例如,在JBoss中,您可以以.HAR文件的方式创建某种类型的“hibernate接口”,每个服务只需“请求”一个hibernate会话。也许您可以在特定的应用程序服务器中执行类似的操作。这里有几种模式可以有效地检索Hibernate会话

  • 大多数web服务性能问题也与它们的使用方式(同步或异步)有关。我们在我的公司解决了一个这样的问题,我们在幕后实现了一个消息传递系统,以异步方式处理web服务请求。每当有请求传入时,如果将它们放入队列中,就会有其他服务等待某些类型的请求来处理它们。这可以通过Spring和ActiveMQ轻松实现

  • 这就足够了

    关于。

    在“最佳架构”中的“最佳”是相当主观的,因为它取决于您当前的架构,您还没有很好地定义它

    不过,我有一些建议:

  • 考虑将与您的服务相关的所有业务逻辑整合到一个web应用程序中对维护的影响,更不用说所有spring配置的bean了,您将不得不对这些bean进行交互以重新考虑您的所有服务。从这个意义上说,根据我的经验,单独保存web应用程序往往会更好

  • 考虑将hibernate会话工厂从每个服务移动到一个集中的位置,例如,在JBoss中,您可以以.HAR文件的方式创建某种类型的“hibernate接口”,每个服务只需“请求”一个hibernate会话。也许您可以在特定的应用程序服务器中执行类似的操作。这里有几种模式可以有效地检索Hibernate会话

  • 大多数web服务性能问题也与它们的使用方式(同步或异步)有关。我们在我的公司解决了一个这样的问题,我们在幕后实现了一个消息传递系统,以异步方式处理web服务请求。每当有请求传入时,如果将它们放入队列中,就会有其他服务等待某些类型的请求来处理它们。这可以通过Spring和ActiveMQ轻松实现

  • 这就足够了


    关于。

    Hi Joeshph,一个与相同体系结构相关的不同查询。所有web服务在内部使用相同的数据库。我们如何进行跨多个服务的事务?您建议的Hibernate方法会解决这个问题吗?还是我们需要使用JTA.Hi Joeshph,一个与相同体系结构相关的不同查询。所有web服务在内部都使用相同的数据库。我们如何进行跨多个服务的事务?您建议的Hibernate方法会解决这个问题还是我们需要使用JTA。