Applet和EJB3的联合

    技术2022-05-11  119

    EJB3已经出来了一段时间,这两天对它的功能进行了测试.发现与以前版本比较已经有了很大的改变..

    测试环境:JBoss4.0.5.GA,Eclipse3.2.1.由于只是测试并没有与数据库进行连接..1、定义需要在客户端进行调用的接口

    package  com.service.ejb3;        /**    * 提供给客户端的接口    * @author xzgf javac_oracle@163.com    * @create 2007-1-31    *    */     public   interface  HelloWorld  {        public String SayHello(String name);    }    

    定义了一个SayHello的方法.参数为一个String2、服务器端需要实现这个接口:

    package  com.service.ejb3.impl;        import  java.util.Date;        import  javax.ejb.Remote;     import  javax.ejb.Stateless;        import  org.apache.commons.lang.time.StopWatch;     import  org.apache.commons.logging.Log;     import  org.apache.commons.logging.LogFactory;        import  com.service.ejb3.HelloWorld;     import  com.service.pub.DateUtil;        /**    * 客户端接口的实现类...服务器端     * @author xzgf javac_oracle@163.com    * @create 2007-1-31    *    */       @Stateless   @Remote ( {HelloWorld.class} )     public   class  HelloWorldBean  implements  HelloWorld  {           private static Log log = LogFactory.getLog(HelloWorldBean.class);                public String SayHello(String name) {             StopWatch sw = new StopWatch();            sw.start();            log.debug("Begin execute in service:" + name + " Time:"  + DateUtil.CN_DATETIME.format(new Date()));                        String str = name + ": Hello,World." ;            sw.stop();            str += DateUtil.CN_DATETIME.format(new Date());                        log.debug("Over execute in service:" + str + " Time:" + DateUtil.CN_DATETIME.format(new Date()));            return str;        }    }    

     实现很简单,根据客户端传入的String,加上Hello,World和当前服务器时间后返回.3、实现客户端调用.采用applet.优点:比较容易实现一些在Web下不好实现的界面功能.缺点:需要在客户端安装jre并有一定量的代码下载量.

    package  com.client.ejb3;        import  java.awt.BorderLayout;     import  java.awt.Dimension;     import  java.awt.event.ActionEvent;     import  java.awt.event.ActionListener;     import  java.util.Properties;        import  javax.naming.InitialContext;     import  javax.swing.JApplet;     import  javax.swing.JButton;     import  javax.swing.JOptionPane;        import  com.service.ejb3.HelloWorld;        /**    * 客户端    *     * @author xzgf javac_oracle@163.com    * @create 2007-1-31    *     */     public   class  MyApplet  extends  JApplet  {           private HelloWorld hw = null;           private void initSelf() {               Properties props = new Properties();               props.setProperty("java.naming.factory.initial""org.jnp.interfaces.NamingContextFactory");            props.setProperty("java.naming.provider.url""localhost:1099");            props.setProperty("java.naming.factory.url.pkgs""org.jboss.naming:org.jnp.interfaces");               InitialContext ctx = null;            try {                if (props == null{                    props = System.getProperties();                }                ctx = new InitialContext(props);                if (ctx == null{                    System.out.println("InitialContext is null");                }                hw = (HelloWorld) ctx.lookup("HelloWorldBean/remote");                if (hw == null{                    System.out.println("HelloWorld is null.");                }            } catch (Exception e) {                e.printStackTrace();            }               JButton button = new JButton();            button.setText("Test Button");            button.addActionListener(new ActionListener() {                   public void actionPerformed(ActionEvent e) {                    onClick();                }               });               getContentPane().setLayout(new BorderLayout());            getContentPane().add(button, BorderLayout.NORTH);        }           private void onClick() {            JOptionPane.showMessageDialog(this, hw.SayHello("xzgf"));        }           @Override       public void init() {            // TODO Auto-generated method stub            this.setSize(new Dimension(800900));            super.init();            initSelf();        }    }     

    4、用JSP实现applet的加载:

     

    " com.client.ejb3.MyApplet "  archive = " client.jar "  codebase = " ./applet "  type = " applet " >     

    5、部署时需要注意的是:由于在jsp中指定了codebase和archive,所以客户端会在此目录下的client.jar进行类查找.所以需要把JBoss中自带的jbossall-client.jar、jboss-aop-jdk50-client.jar、jboss-aspect-jdk50-client.jar、jboss-ejb3-client.jar解压后和applet主类即MyApplet一起打成一个client.jar.否则会报类找不到异常.下一步会解决这个问题...

    6、部署后访问上面的jsp页面即可 


    最新回复(0)