0

この JAX-RS アプリケーションには、Glassfish の代わりに Grizzly を使用しています。私はこのテクノロジーに慣れていないので、いろいろと調べてみましたが、アプリケーションでサービス/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:";
    }
}

マイダオ

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;
    }
}

ダオ

@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;
    }
}
4

1 に答える 1

1

あなたの質問に完全に答えられるかどうかわかりません。しかし、@EJBこれは WebApplication Server でのみ実行できる JavaEE 6 の一部であると言えます。

Grizzly はその 1 つではありません (Glassfish は 1 つです)。

編集

依存性注入が必要な場合は、Spring フレームワークを使用できます。

于 2013-02-14T14:59:58.473 に答える