小编ale*_*zot的帖子

使用HK2向Jersey返回hibernate会话

我正在开发小应用程序并且在DI方面存在一些问题.

我有一个存储库类用于保存我注入到我的服务中的实体.我想使用H2K向它注入Session对象.为此我尝试做以下SO帖子中描述的类似内容:

  1. Jersey + HK2 + Grizzly:注入EntityManager的正确方法是什么?
  2. 使用Jersey 2.0,如何为每个请求注册一个可绑定实例?
  3. 如何在jersey/hk2应用程序中正确配置EntityManager?

所以我创建了SFFactory类并在ApplicationConfig中注册它.

SFFactory.java

import org.glassfish.hk2.api.Factory;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class SFFactory implements Factory<Session> {

private SessionFactory factory;

public SFFactory() {
    Configuration configuration = new Configuration();
    configuration.configure("hibernate.cfg.xml");
    StandardServiceRegistryBuilder srBuilder = new StandardServiceRegistryBuilder();
    srBuilder.applySettings(configuration.getProperties());
    factory = configuration.buildSessionFactory(srBuilder.build());
    }

@Override
public Session provide() {
    return factory.openSession();
    }

@Override
public void dispose(Session session) {
    if (session.isOpen()) {
        session.close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ApplicationConfig.java

import org.alexdzot.phonettesttask.repository.MessageRepository;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.server.ResourceConfig;
import org.hibernate.Session; …
Run Code Online (Sandbox Code Playgroud)

java hibernate dependency-injection jersey-2.0 hk2

3
推荐指数
1
解决办法
1800
查看次数

标签 统计

dependency-injection ×1

hibernate ×1

hk2 ×1

java ×1

jersey-2.0 ×1