しおしお

IntelliJ IDEAのことなんかを書いてます

金魚本6章のサンプルコード

金魚本(Beginning Java EE 6 GlassFish 3で始めるエンタープライズJava)の6章のサンプルコード。

IntelliJを使ったことが原因なのかよくわからないけど、書籍通りではEJBの自動テストが全く動かせなかったので、本のコードと変えた部分をまとめてみました。

※面倒だったので、EJBのメソッドやEntityの属性は一部省略しています。また、JPAプロバイダは、Hibernateを使っているので書籍の内容とはちょと差があります。

書籍の内容

テストコードで、EJBContainerを生成するときに引数なしのcreateEJBContainerを使用している。
これだと、テストの実行が遅すぎて終わるの待てないレベルだった。エラー解析と修正するのが嫌になるレベルの遅さだったので、頑張ってエラー修正したら動いたのかもしれないが・・・

    @BeforeClass
    public static void initContainer() {
        ec = EJBContainer.createEJBContainer();
        ctx = ec.getContext();
    }

変更後のコード

コンパイルされたクラスファイルが出力されるディレクトリと、テスト用のMETA-INF/persistence.xmlが配置されているディレクトリをEJBContainer.MODULESプロパティに設定して、そのプロパティを引数にEJBContainerを生成しています。
この設定をしてあげると、EJBの検索範囲が限定されるからテスト実行が早くなると思ってる。(ちょっと理解不足な気はしてる)

    @BeforeClass
    public static void initContainer() {
        Map<String, Object> props = new HashMap<String, Object>();
        props.put(EJBContainer.MODULES, new File[]{
                new File("out/production/chapter6/"),
                new File("src/test/resources/"),
        });
        ec = EJBContainer.createEJBContainer(props);
        ctx = ec.getContext();
    }

サンプルプロジェクトは、こちらから参照できます→siosio/chapter6 · GitHub


Beginning Java EE 6 GlassFish 3で始めるエンタープライズJava (Programmer’s SELECTION)

Beginning Java EE 6 GlassFish 3で始めるエンタープライズJava (Programmer’s SELECTION)