【Eclipse×TomcatでJavaEE開発】JSF・CDI・JPAを使えるようにするまでの設定

JavaEE(JSF・CDI・JPA)の開発においてGlassFishを使っていますが、APPサーバーの起動にとっても時間がかかること、IDEがEclipseのためか起動に失敗することも多々あり正直JavaEE(JSF・CDI・JPA)開発にうんざりしています。

なんとかならないものかと考えてTomcatベースでJavaEE(JSF・CDI・JPA)が開発できないか挑戦しています。

途中経過含めて以下に記しておきます。

開発環境

  • Eclipse4.5 or 4.6(Tomcat8系が利用できればなんでもOKです)
  • JDKは1.8系
  • Tomcatは8系(今回は8.0.42を利用しています)
  • Tomcatの起動はWTP3.1
  • JavaEE7(GlassFishでいうと4.1系をベースとします。JSF2.2・CDI1.2・JPA2.1)
    • JSF:mojarra
    • CDI:weld
    • JPA:Eclipse Link
  • ライブラリはMavenで取得

プロジェクトの作成からライブラリの取得

こちらを参考にプロジェクトを作成

EclipseでMaven形式のJSF開発プロジェクトを作成する方法
JavaEEの開発環境を整えた後は実際にJSF(JavaServer Faces)でアプリケーションを作成します。プロジェクトの作成方法は(...

上記設定後pom.xmlができるので以下を追記します。


 <dependency>
   <groupId>javax</groupId>
   <artifactId>javaee-api</artifactId>
   <version>7.0</version>
   <scope>provided</scope>
 </dependency>

 <dependency>
   <groupId>javax.faces</groupId>
   <artifactId>javax.faces-api</artifactId>
   <version>2.2</version>
   <scope>provided</scope>
 </dependency>

 <dependency>
   <groupId>org.glassfish</groupId>
   <artifactId>javax.faces</artifactId>
   <version>2.2.8-02</version>
   <scope>runtime</scope>
 </dependency>

 <dependency>
   <groupId>javax.enterprise</groupId>
   <artifactId>cdi-api</artifactId>
   <version>1.2</version>
   <scope>provided</scope>
 </dependency>

 <dependency>
   <groupId>org.jboss.weld.servlet</groupId>
   <artifactId>weld-servlet</artifactId>
   <version>2.2.6.Final</version>
   <scope>runtime</scope>
 </dependency>

※現時点ではまだJPAまでの動作確認はできていません。JSF・CDIまでとなります。

設定

GlassFishを直接利用するときはわざわざ設定しなくてもよいものもあるようですが、Eclipse×Tomcatで環境を作る場合は以下の設定が必要になります。

beans.xmlの作成

web.xmlと同じディレクトリにbeans.xmlを作成します。


<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
 bean-discovery-mode="annotated"
 >
</beans>

web.xmlの修正

以下の設定を追加します。


 <resource-env-ref>
 <resource-env-ref-name>BeanManager</resource-env-ref-name>
 <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
 </resource-env-ref>

 <context-param>
 <param-name>javax.faces.PROJECT_STAGE</param-name>
 <param-value>Development</param-value>
 </context-param>

context.xmlの修正

WTPでTomcatの設定を実施するとプロジェクトの一覧に「Servers」というフォルダができます。その中にcontext.xmlというファイルがありますので、このファイルを修正します。

以下の設定を追記してください。


<Resource
name="BeanManager"
auth="Container"
type="javax.enterprise.inject.spi.BeanManager"
factory="org.jboss.weld.resources.ManagerObjectFactory"
/>

以上で設定は完了です。GlassFishを利用していた時と同じようにコーディングし動作確認してみてください。

終わりに

今回はまずはJSF・CDIが動作するところまでを確認しました。しかし、まだJPAを含めた確認ができていなことと、JavaEEにはもっとたくさんの機能があります。

また、基本的なプログラムしか動作確認できていないのでGlassFishと完璧に同じ動作なのかは保証できません。ご了承ください。

今後も、GlassFishでできることと同等のことをするために何が必要かは少しずつ調査して追記していきたいと思います。

ぜひ、皆様からの情報提供もお待ちしております。

スポンサーリンク
スポンサードリンク
スポンサードリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする