简单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一起工作。不知道。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值