在这个JAX应用程序中,我使用的是灰熊而不是玻璃鱼。我对这项技术很陌生,所以我一直在谷歌搜索,似乎找不到一个很好的轮廓,如何在我的应用程序中设置一个服务/DAO层。
下面是我的工作原型。
我的资源
@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:";
}
}My Dao
public class WorkflowDao {
@PersistenceContext(unitName = "unit")
private EntityManager entityManager;
public int save(Workflow workflow) {
entityManager.persist(workflow);
return workflow.getId();
}
}My Service
@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;
}
}更新--我意识到不会与我的设置一起工作。所以我的问题是,什么是?如何使资源中的服务可访问?
资源
@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;
}
}发布于 2013-02-14 14:59:58
我不能完全回答你的问题。但是我可以告诉您,@EJB是JavaEE 6的一部分,它只能在WebApplication服务器上运行。
灰熊不是其中之一(相比之下,玻璃鱼是其中之一)。
编辑
如果希望使用依赖项注入,可以使用Spring框架。
https://stackoverflow.com/questions/14877553
复制相似问题