gpt4 book ai didi

java - 如何使用 Grizzly/JAX-RS 创建 DAO/服务层

转载 作者:行者123 更新时间:2023-12-01 14:50:49 24 4
gpt4 key购买 nike

对于这个 JAX-RS 应用程序,我使用 Grizzly 而不是 Glassfish。我对这项技术不熟悉,所以我在谷歌上搜索了很多,但似乎找不到关于如何在我的应用程序中设置服务/DAO 层的良好概述。

下面是我的工作原型(prototype)。

我的资源

@Path("/helloworld")
@Stateless
public class MyResource {

@EJB //DOESN'T WORK - how do I map this service to this resource?
WorkflowService workflowService;

@GET
@Produces(MediaType.TEXT_PLAIN)
public String TestRequest() {
Workflow workflow = new Workflow();
workflow.setName("test");

workflowService.save(workflow);

return "Workflow ID:";
}
}

我的道

public class WorkflowDao {

@PersistenceContext(unitName = "unit")
private EntityManager entityManager;

public int save(Workflow workflow) {
entityManager.persist(workflow);
return workflow.getId();
}
}

我的服务

@Stateless
public class WorkflowService {

@EJB //I know EJB is probably wrong here, not sure what else to do yet.
WorkflowDao workflowDao;

public int save(Workflow workflow) {
int id = workflowDao.save(workflow);
return id;
}
}

更新 - 我意识到 EJB 无法与我的设置配合使用。所以我的问题是,什么?如何在我的资源中访问该服务?

-------------- 最终/工作代码 --------------

资源

@Path("/helloworld")
public class MyResource {

WorkflowService workflowService;

public MyResource() {
workflowService = new WorkflowService();
}

@GET
@Produces(MediaType.TEXT_PLAIN)
public String TestRequest() {
Workflow workflow = new Workflow();
workflow.setName("test");

workflowService.save(workflow);

return "Workflow ID:";
}
}

服务

public class WorkflowService {

WorkflowDao workflowDao;

public WorkflowService() {
workflowDao = new WorkflowDao();
}

public int save(Workflow workflow) {
int id = workflowDao.save(workflow);
return id;
}
}

DAO

@Singleton
public class WorkflowDao {

private EntityManager entityManager;

public int save(Workflow workflow) {
getEntityManager().persist(workflow);
return workflow.getId();
}

protected EntityManager getEntityManager() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("unit");
EntityManager em = emf.createEntityManager();
return em;
}
}

最佳答案

我不确定能否完整回答您的问题。但我可以告诉您,@EJB是 JavaEE 6 的一部分,只能在 WebApplication Server 中运行。

Grizzly 不是其中之一(与 Glassfish 相比,Grizzly 是其中之一)。

编辑

如果你想进行依赖注入(inject),你可以使用 Spring 框架。

关于java - 如何使用 Grizzly/JAX-RS 创建 DAO/服务层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com