0
我构建了一个客户机 - 服务器应用程序的服务器部分,它使用Web服务相互通信,使用Apache CXF实现。基于Apache CXF的应用程序中的长寿命对象
在应用程序中,我希望有一个对象,它是在部署Web应用程序时创建的,直到停止和/或取消部署为止。
我们称之为MyBackend backend
。
我也希望有不同的网络服务,如http://myserver.com/service1
和http://myserver.com/service2
,这
- 接收来自客户端的请求,
- 它们传递到
backend
对象和 - 送
MyBackend
方法的返回值回到客户端。
我打算创建以下两个类,它们使用相同的MyBackend
实例。
@Path("/service1")
public class MyWebService1 {
private MyBackend backend = ...;
@POST
@Produces("text/plain")
public String performOperation1(@FormParam("request") final String aRequest)
{
return backend.doSomething();
}
}
@Path("/service2")
public class MyWebService2 {
private MyBackend backend = ...;
@POST
@Produces("text/plain")
public String performOperation2(@FormParam("request") final String aRequest)
{
return backend.doSomethingDifferent();
}
}
问题:
- 如果我实现这样的网络服务,将
MyBackend
实例的状态可以在不同的Web服务调用保存(如上所述,我需要这个对象是只要应用程序在应用程序容器中运行,就一直存在)? - 在哪里可以创建并初始化
MyBackend
实例(考虑到由于连接到数据库,初始化可能会持续很长时间)? - 后端对象的关闭过程应该放在哪里(如切断与数据库的连接)?
谢谢。你能推荐一个基于Spring的web服务的最小代码示例(最好是mavenised)吗? – 2013-04-23 10:37:15
@DmitriPisarenko您已经拥有该代码,请查看http://cxf.apache.org/docs/embedding-cxf-inside-spring.html了解如何将CXF集成到Spring中。 – Qwerky 2013-04-23 12:17:01