EJB3.0 SessionBean案例

因为第一次接触EJB3.0由于第一个简单的SessionBean案例郁闷了很久,在网上也查找了一些相关的案例但是有一些一些案例讲的不够清楚,弄了很久都弄不出来第一个简单的案例,有一些例子是用JbossIDE插件做的,所以自己也安装了相关的插件,因为有一些插件下载不了总是出现不了JBossIDE界面。以前以为EJB只有一些插件才能运行的最近发现Eclipse + JBoss就可以实现EJB运用的发布。

    以下是所用到开发环境做第一个简单的EJB3.0例子:

    MyEclipse 5.1.1 GA

    jboss-4.2.3.GA-jdk6

    jdk 6.x

    第一创建一个Java Project

    


    第二把Jboss目录client所有的jar文件导入工程中




    第三创建一个接口HelloWorl.java



    第四创建一个远程实现类HelloWorldBean.java

    package com.ejb;

    import javax.ejb.Remote;
    import javax.ejb.Stateless;

    @Stateless
    @Remote(HelloWorld.class)
    public class HelloWorldBean implements HelloWorld {

        public String say(String name) {
            return name + "说:你好!";
        }

    }

  第五导出jar文件,一般Jboss默认启动都是default目录下面所以导出的文件必须放在server/default/deploy目录下面,我这里是启动all 下面的starup.bat所以我把导出的jar文件放在server/all/deploy目录



    把jar文件发布到服务器时候将提示发布信息,如果后台没有报出错误信息说明发布的工程没有出现错误将会提示以下信息



    第六创建一个EJBClient客户工程



    然后把客户工程关联EJB工程这样客户端就可以调用到服务器端接口类,就不用把EJB接口打包添加到客户端工程中编写一个Test.java类用于测试EJB



    这只是用于本地测试而已,真是的工程可能会存放在不同的服务器中这就是所谓的分布式,要想获取到不同服务器上面的Bean对象必须把接口打包成jar文件提供给用户

    测试类代码如下,会根据jndi找到服务器中的Bean对象,并实现其操作

    package com.ejb;

    import java.util.Properties;

    import javax.naming.InitialContext;
    import javax.naming.NamingException;


    public class Test {

    /**
     * @param args
      */
    public static void main(String[] args) {
     Properties pops = new Properties();
     pops.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
      pops.setProperty("java.naming.provider.url","localhost:1099");
 
         try {
           InitialContext ctx = new InitialContext(pops);
           HelloWorld h = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
           System.out.println(h.say("徐闻人 "));
          } catch (NamingException e) {
          e.printStackTrace();
         }
    }

    }
    其实在测试工程根目录下面编写一个jndi.properties

    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

    java.naming.provider.url=localhost:1099

    测试代码就编写如下         

     try {
           InitialContext ctx = new InitialContext();
           HelloWorld h = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
           System.out.println(h.say("徐闻人 "));
          } catch (NamingException e) {
          e.printStackTrace();
         }
    }

    两种方式都可以JBoss服务器会自动在的找到工程根目录下面的jndi.properties文件的

    最终控制平台打印出结果为

    徐闻人 说:你好!

猜你喜欢

转载自chenshengzun.iteye.com/blog/1164542