我正在构建客户端-服务器应用程序的服务器部分,它们使用 Web 服务相互通信,使用 Apache CXF 实现。
在应用程序中,我想要一个对象,该对象在部署 Web 应用程序时创建并一直存在,直到它停止和/或取消部署。
让我们称之为MyBackend backend
。
我也想拥有不同的网络服务,比如http://myserver.com/service1
and 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();
}
}
问题:
- 如果我像这样实现 Web 服务,
MyBackend
实例的状态是否会在不同的 Web 服务调用中保留(如上所述,只要应用程序在应用程序容器内运行,我就需要此对象处于活动状态)? - 我在哪里可以创建和初始化
MyBackend
实例(考虑到由于连接到数据库,初始化可能会持续很长时间)? - 后端对象的关闭程序应该放在哪里(比如切断与数据库的连接)?