简单EJB3.0实例(glassfish, NetBeans6.0)

    人总有笨的时候,单单搞个EJB3.0的可运行实例竟用了我三天的时间。
    我写的该运行实例没有涉及到数据库操作,只是在一个glassfish服务器实例中调用不同应用的EJB(参考http://developers.sun.com.cn/blog/yutoujava/entry/4)。
    在NetBeans中步骤如下:
    1.创建EJB模块,命名为EJB
    2.在EJB项目中新建一个会话Bean,命名为Hello(IDE会自动在名字之后加上Bean),放在一个新建的ejb包里。选择无状态,并只有远程接口。点击finish。这时会在项目里生成一个名为HelloBean的会话Bean,并在会话Bean的包里生成一个叫HelloRemote的远程调用接口。
    3.编写业务方法。在HelloRemote中添加接口方法public String sayHello(),并在HelloBean中实现该方法。
    4.编写ejb的部署描述文件。在项目的配置文件中新建一个名为ejb-jar.xml的文件(好像不能直接生成,我是用别的编辑器写个再复制过去的),内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" metadata-complete="true" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
<enterprise-beans>
  <session>
    <display-name>HelloBean</display-name>
    <ejb-name>hello</ejb-name>
    <business-remote>ejb.HelloRemote</business-remote>
    <ejb-class>ejb.HelloBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    <security-identity>
        <use-caller-identity/>
    </security-identity>
  </session>
</enterprise-beans>
</ejb-jar>
     需要注意的是,这个文件在生成目标jar后会在META-INF文件夹下。

    5.编写调用EJB的Servlet。在这里我是新建一个web项目,名为TestEJB_WEB,在该项目中新建一个Servlet,名为EJBServlet,为在新建的servlet包里。
      在这里把上面的EJB项目中的HelloRemote文件复制到该项目的源包里(当然还有ejb包,不必复制HelloBean),在EJBServlet里processRequest方法里如下操作:
     1)导入HelloRemote。在EJBServlet中右键->企业资源->调用Enterprise Bean,选择EJB项目里的HelloBean,确定。这样会在EJBServlet中添加如下代码:
    @EJB
    private HelloRemote helloBean;

     2)将注释部分换为out.println("<p>" + helloBean.sayHello() + "</p>");这一行。
     6.部署项目。将EJB和TestEJB_WEB分别部署到glassfish。在这里不用其它操作,只要你能简单地部署项目就行。
     7.测试。在浏览器里输入http://localhost:8080/TestEJB_WEB/EJBServlet,会得到相应的输出。

     遇到的一些问题:
     1.部署EJB项目时出错,是部署描述符出错之类的,好像是部署文件ejb-jar.xml出错。修改。
     2.该EJB资源如何与全局JNDI一起工作。不知道。

你可能感兴趣的:(bean,servlet,ejb,Netbeans,Glassfish)