WTPを使って開発をすると、JBossへデプロイすることができるだけでなく、jboss.xmlやjboss-web.xml,web.xmlやejb-jar.xmlを自動生成することができます。さらにはEJBの実装クラスを作成するだけで、めんどくさいその他のインタフェースファイルなども自動生成することができます。自動生成にはXDocletという、JavaDoc?コメントから各種設定ファイルを生成するツールが使われています。
今回はJBossの環境を主においているので、JBossの設定ファイルを自動生成する用に設定しました。設定といっても簡単で、Eclipse上で、
ウィンドウ > 設定 >> J2EE注釈 >> XDoclet
でXDocletのホームディレクトリなどを入れておくだけです*1。
JBossなどコンテナ依存の設定ファイルは、更に下の
XDoclet >> ejbdoclet XDoclet >> webdoclet
などのチェックを入れておけばよいようです。
Servletのクラスコメントにには以下のように書きました。
/** * Servlet implementation class for Servlet: HogeServlet * * @web.servlet name="HelloServlet" display-name="HelloServlet" * * @web.servlet-mapping url-pattern="/hello" * @web.ejb-ref name = "ejb/HelloEJB" home = "hello.HelloEJBHome" remote = * "hello.HelloEJB" type = "Session" * @jboss.ejb-ref-jndi jndi-name = "HelloEJBHoge" ref-name = "ejb/HelloEJB" */
このうち
@web.servlet name="HelloServlet" display-name="HelloServlet" @web.servlet-mapping url-pattern="/hello"
の部分で、
<servlet> <servlet-name>HelloServlet</servlet-name> <display-name>HelloServlet</display-name> <servlet-class>hello.web.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
というweb.xmlが出力されます。
@web.ejb-ref name = "ejb/HelloEJB" home = "hello.HelloEJBHome" remote = "hello.HelloEJB" type = "Session"
の部分で
<ejb-ref > <ejb-ref-name>ejb/HelloEJB</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>hello.HelloEJBHome</home> <remote>hello.HelloEJB</remote> </ejb-ref>
というweb.xmlが出力されます。
また先の
@jboss.ejb-ref-jndi jndi-name = "HelloEJBHoge" ref-name = "ejb/HelloEJB"
の部分で、
<ejb-ref> <ejb-ref-name>ejb/HelloEJB</ejb-ref-name> <jndi-name>HelloEJBHoge</jndi-name> </ejb-ref>
というjboss-web.xmlが出力されます。
EJB実装クラスのクラスコメントには以下のように書きました。
/** * @ejb.bean name="HelloEJB" display-name = "HelloEJB" jndi-name="HelloEJBHoge" * type = "Stateless" view-type = "remote" */
このうち
@ejb.bean name="HelloEJB" display-name = "HelloEJB" jndi-name="HelloEJBHoge" type = "Stateless" view-type = "remote"
の部分で、
<session > <description><![CDATA[]]></description> <display-name>HelloEJB</display-name> <ejb-name>HelloEJB</ejb-name> <home>hello.ejb.HelloEJBHome</home> <remote>hello.ejb.HelloEJB</remote> <ejb-class>hello.ejb.HelloEJBSession</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session>
というejb-jar.xmlが出力されます。
また
<session> <ejb-name>HelloEJB</ejb-name> <jndi-name>HelloEJBHoge</jndi-name> <method-attributes> </method-attributes> </session>
もあわせて出力されます。
/** * @return * @throws RemoteException * @ejb.interface-method view-type= "remote" */ public String sayHello() throws RemoteException { System.out.println("hoge"); return "Hello EJB !"; }
この記事は
現在のアクセス:13654