Chinaunix首页 | 论坛 | 博客
  • 博客访问: 522452
  • 博文数量: 147
  • 博客积分: 10105
  • 博客等级: 上将
  • 技术积分: 1594
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-14 10:18
文章分类

全部博文(147)

文章存档

2011年(4)

2010年(4)

2009年(6)

2008年(5)

2007年(40)

2006年(88)

我的朋友

分类: Java

2007-01-09 14:20:59

//本类需要引入的类或接口  
  import   java.rmi.RemoteException;  
  import   java.util.Properties;  
  import   javax.ejb.CreateException;  
  import   javax.ejb.RemoveException;  
  import   javax.naming.Context;  
  import   javax.naming.InitialContext;  
  import   javax.naming.NamingException;  
  import   javax.rmi.PortableRemoteObject;  
   
  /**  
    *   这是EJB的客户端测试程序  
    */  
   
  public   class   HelloClient   {  
   
      private   static   final   String   JNDI_NAME   =   "HelloHome";  
   
      private   String   url;  
      private   HelloHome   home;  
   
      public   HelloClient(String   url)  
          throws   NamingException  
      {  
   
          this.url               =   url;  
           
          home   =   lookupHome();  
      }  
       
      void   test()  
          throws   RemoteException,CreateException  
      {  
          Hello   hello   =   (Hello)   PortableRemoteObject.narrow(home.create(),   Hello.class);  
          System.out.println("I   am   in   client.   "+hello.sayHello());  
      }  
   
   
      /**  
        *   运行这个实例:  
        *   java   HelloClient   t3://localhost:7001  
        */  
      public   static   void   main(String[]   args)   throws   Exception   {  
   
          System.out.println("\n客户端程序测试开始...\n");  
   
          String   url               =   "t3://localhost:7001";  
           
          //   解析命令行  
            if   (args.length   !=   1)   {  
              System.out.println("用法:   java   HelloClient   t3://hostname:port");        
              return;  
          }   else   {  
              url   =   args[0];  
          }  
          HelloClient   client   =   null;  
          try   {  
              client   =   new   HelloClient(url);  
          }   catch   (NamingException   ne)   {  
              System.exit(1);  
          }  
          try   {  
              client.test();  
          }   catch   (Exception   e)   {  
            System.exit(1);  
          }    
          System.out.println("\n客户端程序测试结束...\n");  
      }  
   
   
      /**  
        *   查找   EJB   的主接口  
        */  
      private   HelloHome   lookupHome()  
          throws   NamingException  
      {  
            Context   ctx   =   getInitialContext();  
            Object   home   =   ctx.lookup(JNDI_NAME);  
            return   (HelloHome)   PortableRemoteObject.narrow(home,   HelloHome.class);  
      }  
   
      /**  
        *   使用属性对象获取上下文  
        */  
      private   Context   getInitialContext()   throws   NamingException   {  
              Properties   h   =   new   Properties();  
              h.put(Context.INITIAL_CONTEXT_FACTORY,  
                    "weblogic.jndi.WLInitialContextFactory");  
              h.put(Context.PROVIDER_URL,   url);  
              return   new   InitialContext(h);  
      }  
  }  
Hello.java  
  //本接口需要引入的类或接口  
  import   javax.ejb.EJBObject;  
  import   java.rmi.RemoteException;  
   
  //定义远程接口,必须继承EJBObject  
  public   interface   Hello   extends   EJBObject   {  
  //定义业务逻辑方法  
  public     String   sayHello()  
  throws   RemoteException;  
  }  
   
  HelloBean.java  
  //本类需要引入的类或接口  
  import   javax.ejb.CreateException;  
  import   javax.ejb.SessionBean;  
  import   javax.ejb.SessionContext;  
   
  //实现业务逻辑,必须实现SessionBean接口  
  public   class   HelloBean   implements   SessionBean   {  
      //这是个会话EJB,声明会话上下文  
      private   SessionContext   ctx;  
      //声明字符串  
      private   String   words;  
      //接口SessionBean中定义的方法,必须实现  
      public   void   setSessionContext(SessionContext   ctx)   {  
          this.ctx   =   ctx;  
      }  
      //接口SessionBean中定义的方法,必须实现  
      public   void   ejbActivate()   {  
      }  
      //接口SessionBean中定义的方法,必须实现  
      public   void   ejbPassivate()   {  
      }  
      //接口SessionBean中定义的方法,必须实现  
      public   void   ejbRemove()   {  
      }  
      //和主接口定义对应的方法,必须实现  
      public   void   ejbCreate()   throws   CreateException   {  
      words   =   "Hello   World";  
      }  
      //供客户端调用的业务逻辑方法,这里只简单的打印字符串,并把字符串返回到客户端  
      public   String   sayHello()  
      {  
      System.out.println("I   am   in   an   EJB   of   Server   ."+words);  
      return   words;  
      }  
   
   
  }  
   
  HelloHome.java  
  //本接口需要引入的类或接口  
  import   java.rmi.RemoteException;  
  import   javax.ejb.CreateException;  
  import   javax.ejb.EJBHome;  
   
  //定义主接口,必须继承EJBHome    
  public   interface   HelloHome   extends   EJBHome   {  
      //定义EJB创建方法  
      Hello   create()   throws   CreateException,   RemoteException;  
  }  
   
   
  ejb-jar.xml  
   
   
   
   
   
   
  images/green-cube.gif  
   
   
   
  images/orange-cube.gif  
   
  MyFirstEJB  
   
  HelloHome  
   
  Hello  
   
  HelloBean  
   
  Stateless  
  Container  
 
 
 
 
   
   
   
   
  MyFirstEJB  
  Remote  
  *  
 
 
  Required  
 
 
 
 
 
 
   
   
  weblogic-ejb-jar  
   
   
   
   
   
   
   
  MyFirstEJB  
   
   
  100  
 
 
   
  HelloHome  
 
 
 
 
   
   
  程序都在这里了!!!  
阅读(1877) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~