开发工具: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、感谢传智播客老师的精彩讲解和分享。。。