在 grails 服务中,我创建和管理一个用于从外部 API 调用方法的会话,使用 API 的会话工厂来启动连接:
1)Service Session对象(服务级别):
private final SessionFactory sessionFactory = SessionFactoryImpl.newInstance()
private Session session
2)服务getSession方法调用
def getSession(Map conf) {
if (session == null) {
...
Object o = sessionFactory.getRepositories(params)
session = o.createSession()
}
session
}
3) 从控制器调用的服务连接器
def connect() {
<some logic>
return session
}
4)在控制器中,我检索会话对象:
def session = service.connect()
一旦第一个连接创建了会话对象,在控制器之间共享它的最佳方式是什么(甚至在 grails 插件之外)?如何确保会话对象被称为单例(即避免每个控制器的方法调用以重新初始化服务中的 sessionFactory 调用)?