EJB 3 学习笔记: HelloWorld Stateless SessionBean
我的开发环境是eclipse 3.4 + glassfish-v2
?
1。下载安装glassfish-v2,具体步骤就不说了,此处省略500字。。。
2。运行asadmin start-appserv启动应用服务器。
3。登陆admin console, http://localhost:4848
?
4。创建eclipse project
?
从%glassfish_home%/lib中找到javaee.jar和appserv-rt.jar这两个文件,加入到project Libraries中。
?
5。编写HelloWorld EJB
?
IHelloWorld.java (remote interface):
package ejb;import javax.ejb.Remote;@Remotepublic interface IHelloWorld{public String sayHello();}
?
HelloWorld.java (stateless session bean)
package ejb;import javax.ejb.Stateless;@Stateless(name="HelloWorldBean", mappedName="ejb/HelloWorldBeanJNDI")public class HelloWorld implements IHelloWorld{public String sayHello(){return ("Hello World! This is my first EJB3 Stateless SessionBean!");}}
?
mappedName定义了HelloWorld的jndi name,稍后客户端测试程序需要用这个名字来做lookup。
?
6。编写ant build.xml
<?xml version="1.0"?><project name="helloWorld" default="deploy" basedir="."><property name="build.dir" value="${basedir}/class"/><property name="glassfish.home" value="F:/glassfish-v2ur2"/><property name="deploy.dir" value="${glassfish.home}/domains/domain1/autodeploy"/><target name="jar"><jar destfile="helloWorld.jar"><fileset dir="${build.dir}"><include name="ejb/*.class"/></fileset></jar></target><target name="deploy" depends="jar"><copy file="${basedir}/helloWorld.jar" todir="${deploy.dir}"/></target></project>
?
7。打包,部署。
?
运行build.xml,把程序打包成helloWorld.jar并拷贝到glassfish的自动部署目录。如果部署成功,在glassfish的admin console中,Applications->EJB Modules下面可以找到我们的HelloWorldBean。如果程序中没有设置mappedName,去Application Server->General->JNDI Browsing也可以找到对应的jndi name。
?
8。编写客户端测试程序。
package test;import javax.naming.InitialContext;import ejb.IHelloWorld;public class Test{public void runTest() throws Exception{InitialContext ctx = new InitialContext();IHelloWorld bean = (IHelloWorld)ctx.lookup("ejb/HelloWorldBeanJNDI");System.out.println(bean.sayHello());}public static void main(String[] args){try{Test t = new Test();t.runTest();}catch(Exception e){e.printStackTrace();}}}
?
运行测试程序,成功打印出: Hello World! This is my first EJB3 Stateless SessionBean!
?
感觉ejb3比ejb2少了一堆繁琐的文件和xml配置,而且支持pojo风格的编程,开发效率和可移植性都比以前要好得多。