相关疑难解决方法(0)

使用Jersey 2.0进行依赖注入

从头开始没有任何以前的Jersey 1.x知识,我很难理解如何在我的Jersey 2.0项目中设置依赖注入.

我也明白HK2可用于Jersey 2.0,但我似乎无法找到有助于Jersey 2.0集成的文档.

@ManagedBean
@Path("myresource")
public class MyResource {

    @Inject
    MyService myService;

    /**
     * Method handling HTTP GET requests. The returned object will be sent
     * to the client as "text/plain" media type.
     *
     * @return String that will be returned as a text/plain response.
     */
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/getit")
    public String getIt() {
        return "Got it {" + myService + "}";
    }
}

@Resource
@ManagedBean
public class MyService {
    void serviceCall() {
        System.out.print("Service calls");
    }
}
Run Code Online (Sandbox Code Playgroud)

的pom.xml …

java dependency-injection jersey jersey-2.0 hk2

106
推荐指数
4
解决办法
9万
查看次数

jersey + grizzly + hk2:依赖注入,但不是资源

跟进Jersey + HK2 + Grizzly:注入EntityManager的正确方法?,我想了解如何在不是球衣资源的类中使用依赖注入.

例如,我可能在ExecutorService中运行后台任务,他们可能需要一个EntityManager.如果我尝试@Inject将EntityManager引入该类,则不会发生任何事情.将它注入一个@Path注释的泽西资源类,注入工作正常.

应用程序作为独立的JVM运行,而不是在Java EE应用程序服务器上运行.

更新:我创建了一个测试场景来证明我的意思.代码运行的是一个带有Jersey资源的独立Grizzly服务器,以及一个ExecutorService.A Callable被提交给ExecutorService.

将EntityManager注入资源可以工作,但不能注入Callable.那里的EntityManager仍然存在null.

请告知这里的代码是否比github更好.

java dependency-injection jersey grizzly hk2

6
推荐指数
1
解决办法
3186
查看次数

使用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
查看次数