我的开发环境是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; @Remote public 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风格的编程,开发效率和可移植性都比以前要好得多。