Spring - 如何从Web应用程序停止和启动Web服务?

时间:2014-02-17 18:24:58

标签: java spring web-services spring-mvc

我想为应用程序管理员创建一个功能,以便能够在不关闭整个应用程序的情况下从前端停止和启动Web服务。

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

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

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

弹簧-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...
}

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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