Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)...

  在本文主要介绍如何来开发一个 Stateless Session Bean ,并在未安装 WebLogic10 的机器上访问 Session Bean 。开发 EJB3 Stateless Session Bean 要比开发 EJB2 Stateless Session Bean 容易得多,只需要几个注释就可以搞定。读者可按如下的步骤来开发和调用 EJB3 Stateless Session Bean
1 步:编写远程接口
    每一个Session Bean需要一个远程接口,该接口的代码如下:

package  com.earth;

import  javax.ejb.Remote;

//   此处必须使用@Remote注释指定该接口为远程接口
@Remote
public   interface  CompanyRemote
{
    
public  String getName();
    
public  Employee[] getEmployees();
}

     CompanyRemote 接口中定义了两个方法,分别返回一个字符串和一个Employee 类型的数组。
2 步:编写Employee

    Employee类是一个实现implements java.io.Serializable接口的JavaBean,代码如下:

package  com.earth;

public   class  Employee  implements  java.io.Serializable
{
    
private  String name;
    
private  String job;
    
private   int  age;
    
public  String getName()
    {
        
return  name;
    }
    
public   void  setName(String name)
    {
        
this .name  =  name;
    }
    
public  String getJob()
    {
        
return  job;
    }
    
public   void  setJob(String job)
    {
        
this .job  =  job;
    }
    
public   int  getAge()
    {
        
return  age;
    }
    
public   void  setAge( int  age)
    {
        
this .age  =  age;
    }
}

3 步:编写Stateless Session Bean

    Session Bean需要实现CompanyRemote接口,代码如下:

package  com.earth;

import  java.util.List;
import  java.util.ArrayList;
import  javax.ejb.Remote;
import  javax.ejb.Stateless;

@Stateless(mappedName 
=   " Company " )
public   class  Company  implements  CompanyRemote
{
    
public  Employee[] getEmployees()
    {
        Employee[] employees 
=   new  Employee[ 2 ];
        employees[
0 =   new  Employee();
        employees[
0 ].setName( " superman " );
        employees[
0 ].setJob( " CEO " );
        employees[
0 ].setAge( 1234 );
        
        employees[
1 =   new  Employee();
        employees[
1 ].setName( " 擎天柱 " );
        employees[
1 ].setJob( " CTO " );
        employees[
1 ].setAge( 4321 );
        
        
return  employees;
    }
    
public  String getName()
    {        
        
return   " 地球软件有限公司 " ;
    }
}

     这个Session Bean 使用了@Stateless 注释指定了该Session Bean 是无状态的,并使用了mappedName 属性指定该Session Bean JNDI 名的前一部分,如果mappedName 属性的值是Company ,则该Session Bean JNDI 名是Company#com.earth.CompanyRemote
4 步:编译.java 文件,并生成.jar 文件

    将上面三个.java文件放到同一个目录下,并使用如下的命令生成相应的.class文件:

javac  - d .  - classpath .;C:\bea\wlserver_10. 3 \server\lib\weblogic.jar  * .java

     注意:在编译.java 文件时要将在classpath 环境变量或javac -classpath 参数中指定weblogic.jar 文件,假设WebLogic10 安装在了C 盘的bea 目录,则weblogic.jar 文件位于C:"bea"wlserver_10.3"server"lib 目录中,本例使用了weblogic10.3
     在生成.class 文件后,使用如下的命令生成company.jar 文件:

jar cvf company.jar com

5 步:发布EJB
     发布EJB 的方法很多,然而最简单的是直接将company.jar 文件复制到如下的目录:

C:\bea\user_projects\domains\base_domain_new\autodeploy
     其中base_domain_new 是域名,读者也可将company.jar 文件复制到其他域的autodeploy 目录中。
     启动Weblogic ,该EJB 自动发布。读者可以使用如下的URL 来查看在当前Weblogic 服务器中注册的JNDI

http://localhost:7001/console/consolejndi.portal?_nfpb=true&_pageLabel=JNDIHomePage&server=AdminServer

    其中AdminServer为Weblogic的服务名,可能在读者的机器上是其他的服务名,请使用如下的URL进行Weblogic Console进行查看:

http://localhost:7001/console

     安装EJB 后,本机注册的JNDI 如下图所示。

6
步:编写客户端程序
     调用EJB 的客户端代码如下:
import  java.util.Properties;
import  javax.naming.Context;
import  javax.naming.InitialContext;
import  com.earth. * ;

public   class  TestCompany
{
    
public   static   void  main(String[] args)  throws  Exception
    {

        Properties props 
=   new  Properties();
        props.setProperty(Context.INITIAL_CONTEXT_FACTORY,
                
" weblogic.jndi.WLInitialContextFactory " );
        props.setProperty(Context.PROVIDER_URL, 
" t3://192.168.17.127:7001 " );
        InitialContext ctx 
=   new  InitialContext(props);
        CompanyRemote companyRemote 
=  (CompanyRemote) ctx
                .lookup(
" Company#com.earth.CompanyRemote " );
        System.out.println(companyRemote.getName());
        Employee[] employees 
=  companyRemote.getEmployees();
        
for  (Employee employee : employees)
        {
            System.out.println(
" name: "   +  employee.getName());
            System.out.println(
" job: "   +  employee.getJob());
            System.out.println(
" age: "   +  employee.getAge());
            System.out.println(
" ------------------------- " );            
        }
    }
}
     使用如下的命令编译TestCompany.java
javac   - classpath .;company.jar;E:\bea\wlserver_10. 3 \server\lib\weblogic.jar TestCompany.java
     注意:TestCompany.java company.jar 文件需要在同一目录下。

     由于调用客户端的代码并不一定在安装WebLogic 的机器上运行,因此,在将TestCompany.class company.jar (发布到客户端的这个jar 文件只需要Employee.class CompanyRemote.class 文件即可,Company.class 可以从该jar 文件中删除)发布到客户端时还需要带一些WebLogic 自身的jar 文件。虽然Weblogic 中有一个wlclient.jar 文件,但光有这个文件还不够,不了方便提取客户端需要的jar 文件,Weblogic 提供了一个jar 包,通过该包,可以将客户端需要的所有.class 文件打成一个jar 包。
     这个jar 文件是C:\bea\modules\com.bea.core.jarbuilder_1.2.0.0.jar ,可通过如下的命令行来生成客户端需要的jar 包:
    java  - jar .. / .. / .. / modules / com.bea.core.jarbuilder_1. 2.0 . 0 .jar
     注意:上面的命令必须在C:\bea\wlserver_10.3\server\lib 目录中执行。
     在执行上面的命令后,将在E:\bea\wlserver_10.3\server\lib 目录生成一个wlfullclient.jar 文件,将该文件与TestCompany.class company.jar 一同复制到客户端的机器上即可。并通过如下的命令来执行TestCompany.class
    java  - classpath .;company.jar;wlfullclient.jar TestCom
     执行上面的命令后的输出结果如下面两个图所示:


Windows下的执行结果



Linux下的执行结果





 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/215196,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值