开发工具:myeclipse8.5、ant
jdk:1.5
容器:jboss4.2.3
1、安装jboss:解压、配置JBOSS_HOME环境变量
2、测试安装是否成功:启动%JBOSS_HOME%\bin\run.bat,访问http://localhost:8080
3、开发EJB3
a 接口:interface HelloWorld
b 实现类:class HelloWorldBean implements HelloWorld
c 在实现类上加上注解:
//无状态session bean
@Stateless
//远程bean
@Remote(HelloWorld.class)
4、export导出jar文件,放到%JBOSS_HOME%\server\default\deploy目录,启动jboss,测试远程EJBHelloWorldBean ,客户端代码如下:
public class EJBClient { public static void main(String[] args) { // Properties props = new Properties(); // props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); // props.setProperty("java.naming.provider.url", "localhost:1099"); try { // InitialContext ctx = new InitialContext(props); //通过属性文件jndi.properties设置jndi信息 InitialContext ctx = new InitialContext(); HelloWorld helloWorld = (HelloWorld) ctx.lookup("HelloWorldBean/remote"); System.out.println(helloWorld); UserDTO dto = helloWorld.sayHello("wsc"); System.out.println(dto.getUsername()); } catch (NamingException e) { e.printStackTrace(); } } }
其中jndi.properties内容如下:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
可以通过jboss的管理界面,查看HelloWorldBean这个ejb是否发布成功:
5、为了实现EJB开发的快速发布测试,这里引入了ant构建脚本,实现自动的发布。build.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <project name="helloworld" basedir="."> <property name="src.dir" value="${basedir}\src"></property> <property environment="env"></property> <property name="jboss.home" value="${env.JBOSS_HOME}"></property> <property name="jboss.server.config" value="default"></property> <property name="build.dir" value="${basedir}\build"></property> <path id="build.classpath"> <fileset dir="${jboss.home}\client"> <include name="*.jar"/> </fileset> <pathelement location="${build.dir}"/> </path> <target name="echotest" description="测试环境变量是否正确"> <echo>${env.JBOSS_HOME}</echo> </target> <target name="prepare"> <delete dir="${build.dir}"></delete> <mkdir dir="${build.dir}"/> </target> <target name="compile" depends="prepare" description="编译"> <javac srcdir="${src.dir}" destdir="${build.dir}"> <classpath refid="build.classpath"></classpath> </javac> </target> <target name="ejbjar" depends="compile" description="创建ejb发布包"> <jar destfile="${basedir}\${ant.project.name}.jar"> <fileset dir="${build.dir}"> <include name="**/*.class"/> </fileset> </jar> </target> <target name="deploy" depends="ejbjar,undeploy" description="发布ejb包"> <copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"></copy> </target> <target name="undeploy" description="卸载ejb包"> <delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"></delete> </target> </project>
6、附项目的整体目录结构如下:
7、感谢传智播客老师的精彩讲解和分享。。。