ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【原创】Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean

【原创】Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean

原创 Linux操作系统 作者:银河使者 时间:2009-02-10 09:22:25 0 删除 编辑

本文为原创,如需转载,请注明作者和出处,谢谢!

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

1步:编写远程接口

    每一个Session Bean需要一个远程接口,该接口的代码如下:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->package com.earth;

import javax.ejb.Remote;

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

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4     CompanyRemote接口中定义了两个方法,分别返回一个字符串和一个Employee类型的数组。

2步:编写Employee

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

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->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;
    }
}

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 3步:编写Stateless Session Bean

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

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->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 "地球软件有限公司";
    }
}

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4     这个Session Bean使用了@Stateless注释指定了该Session Bean是无状态的,并使用了mappedName属性指定该Session BeanJNDI名的前一部分,如果mappedName属性的值是Company,则该Session BeanJNDI名是Company#com.earth.CompanyRemote

4步:编译.java文件,并生成.jar文件


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

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

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

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

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->jar cvf company.jar com


Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4

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

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4     安装EJB后,本机注册的JNDI如下图所示。
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4
6步:编写客户端程序

    调用EJB的客户端代码如下:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->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(
"-------------------------");            
        }
    }
}

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 使用如下的命令编译TestCompany.java

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->javac  -classpath .;company.jar;E:\bea\wlserver_10.3\server\lib\weblogic.jar TestCompany.java

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4

    注意:TestCompany.javacompany.jar文件需要在同一目录下。

   
由于调用客户端的代码并不一定在安装WebLogic的机器上运行,因此,在将TestCompany.classcompany.jar(发布到客户端的这个jar文件只需要Employee.classCompanyRemote.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包:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->    java -jar ../../../modules/com.bea.core.jarbuilder_1.2.0.0.jar

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 注意:上面的命令必须在C:"bea"wlserver_10.3"server"lib目录中执行。

    在执行上面的命令后,将在E:"bea"wlserver_10.3"server"lib目录生成一个wlfullclient.jar文件,将该文件与TestCompany.classcompany.jar一同复制到客户端的机器上即可。并通过如下的命令来执行TestCompany.class

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->    java -classpath .;company.jar;wlfullclient.jar TestCom

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 执行上面的命令后的输出结果如下面两个图所示:



Windows下的执行结果



Linux下的执行结果

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12921506/viewspace-545711/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2008-02-08

  • 博文量
    169
  • 访问量
    1057515