SessionBeanの作成
さて、ここまで作成したEntityBeanを使って、挨拶を返すHelloWorldクラスをSessionBeanとして作成します。作成方法は http://www.atmarkit.co.jp/fjava/rensai2/eclipse2_04/eclipse04_2.html のとおりです。ただし、今回はEntituBean「HelloTo」を使うため、クラスレベルのXdocletコメントに以下を追加します。
* @ejb.ejb-ref * ejb-name="HelloTo"
SessionBeanのリモートメソッドを実装します。EntityBeanにはローカルでアクセスするようにします。
public String sayHello(String nickName) { try { HelloToLocalHome home = HelloToUtil.getLocalHome(); HelloToLocal helloTo = home.findByPrimaryKey(nickName); String fullName = helloTo.getFullName(); return "Hello " + fullName + " from Stateless Session Bean"; } catch (FinderException e) { return "Couldn't find anyone who has such nickname..."; } catch (NamingException e) { e.printStackTrace(); throw new EJBException(e); } }
SessionBeanのコード全体は以下のようになります。
package hello; import javax.ejb.EJBException; import javax.ejb.FinderException; import javax.ejb.SessionBean; import javax.naming.NamingException; /** * @ejb.bean name="HelloWorldSessionBean" * jndi-name="HelloWorld" * type="Stateless" **/ public abstract class HelloWorld implements SessionBean { /** * @ejb.interface-method * view-type="remote" * **/ public String sayHello(String nickName) { try { HelloToLocalHome home = HelloToUtil.getLocalHome(); HelloToLocal helloTo = home.findByPrimaryKey(nickName); String fullName = helloTo.getFullName(); return "Hello " + fullName + " from Stateless Session Bean"; } catch (FinderException e) { return "Couldn't find anyone who has such nickname..."; } catch (NamingException e) { e.printStackTrace(); throw new EJBException(e); } } }