【问题标题】:Spring - How to stop and start a Webserice from web application?Spring - 如何从 Web 应用程序停止和启动 Web 服务?
【发布时间】:2014-02-17 18:24:58
【问题描述】:

我想为应用程序管理员创建一个功能,使其能够从前端停止和启动 Web 服务,而无需关闭整个应用程序。

该应用程序具有需要一直运行的各种其他界面、屏幕和作业。仅 Web 服务就必须关闭以进行一些数据维护工作,并且需要在完成后重新启动。该网络服务被少数第三方应用程序使用。

应用程序是使用 Spring 3.0.5 构建的。

我需要以某种方式在控制器中获取 web 服务对象(?)并触发停止/启动。

spring-config.xml

<wss:binding url="/wss/shipRequest.wss">
   <wss:service>
      <ws:service bean="#shipRequestWS">
      </ws:service>
   </wss:service>
</wss:binding>
<bean id="shipRequestWS" class="com.xxx.ShipRequestService">
   <property name="shipRequestBO" ref="shipRequestBO" />
</bean>

服务

@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC, use = SOAPBinding.Use.LITERAL)
public interface ShipRequestService extends java.rmi.Remote {

          WebService methods...
}

【问题讨论】:

    标签: java spring web-services spring-mvc


    【解决方案1】:

    最简单的解决方案之一是添加一个JMX controlled bean,提供网络服务的启动和停止。这个bean可以实现两种类型的控制:

    • 在注入的服务上设置一个标志。该服务可能会在停用状态下引发异常,但需要扩展到此特殊行为。
    • Web 服务可以由一个特殊的子上下文创建,通过激活加载或通过停用停止。可以使用ClassPathXmlApplicationContext 使用当前上下文作为父上下文创建上下文。

    【讨论】:

    • 谢谢阿恩。我正在通过 ClassPathXmlApplicationContext 创建上下文并能够启动/停止
    【解决方案2】:

    对于“轻量级”维护更改,您可以简单地检查服务方法开头的标志,以了解您是否应该处理请求。例如,这种技术广泛用于功能翻转。

    【讨论】:

      猜你喜欢
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多