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下的执行结果

国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

时间: 2024-08-29 07:23:36

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

eclipse + JBoss 5 + EJB3开发指南(1):编写第一个无状态的SessionBean

本文为原创,如需转载,请注明作者和出处,谢谢! 本系列教程使用的软件版本如下: Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/ JDK:1.6.0.14,http://java.sun.com/javase/downloads/index.jsp     在本文中将编写一个简单的无状态SessionBean.在发布EJB时,一般需要将EJB

eclipse+JBoss 5+EJB3开发指南(1):编写第一个无状态的SessionBean

本系列教程使用的软件版本如下: Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/ JDK:1.6.0.14,http://java.sun.com/javase/downloads/index.jsp 在本文中将编写一个简单的无状态SessionBean.在发布EJB时,一般需要将EJB程序以jar文件的形式 进行发布.这些jar文件将被放在

JBoss下的EJB3开发无状态会话Bean

1.开发一个具有Remote和Local接口的EJB3 Stateless SessionBean.如有那里写的不好请大家多多指教.################################ 好了先介绍一下明星演员们:###############################Remote接口:RemoteHelloWorld.javaLocal接口:LocalHelloWorld.javaSessionBean:HelloWorldBean.javaJNDI配置:jndi.proper

CodeSmith教程(2) 编写第一个代码模板

在CodeSmith 使用教程(1): 概述我们通过使用CodeSmith从数据库自动生成NHiberate代码,可以了解到使用CodeSmith自动 生成代码的基本步骤: 选择使用合适的模板,CodeSmith随开发包自带了大量常用的模板,如果找不到合适的模板,CodeSmith支持自定义模板. 为模板选择合适的参数设置. 自动生成代码(可以为任意类型的代码,C#,Java, .XML 文本等) 其核心为代码模板文件,随CodeSmith自带了不少常用的模板,可以通过模板浏览器来查询,此外网上

js入门教程[Javascript学习第一季]

Javascript学习第一季(2) 上篇文章讲了js中的一些概念(词法结构) 和 数据类型(部分). 这章我们 继续.然后了解下js中操作数据 和 函数的 作用域.  1,对象跟基本类型之间的转换: 不管何时,只是对象非空,在布尔环境中都为true. 如; new Boolean(false);  new Number(0); new String(""); new Array(); 上面虽然内部值是false,但对象的值是true; Object à valueOf() à toS

PowerShell入门教程之编写和使用脚本模块实例_PowerShell

现在通过编写模块就可以在PowerShell命令行或者脚本中管理大型.分布式软件系统,就像Exchange Server和SharePoint Server正在做的那样.你有这样的需求吗? 模块.脚本模块 模块是PowerShell V2中引入的概念,用以改进之前提出的"管理单元".将管理单元也作为模块(二进制模块)处理之后,PowerShell中就包括两种模块--脚本模块和二进制模块.那么什么是模块呢?模块就是包含一些PowerShell命令.项的程序包,它以一个整体被分发共享和加载

零基础易语言入门教程(二)之编程思路_易语言

易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 上一篇跟大家讲了零基础易语言入门教程(一)编写第一个程序,然后接下来大家应该自己把支持库和易语言组件里面的控件全部认真的看一下,下面我直接跟大家分享下易语言简单编程思路. 方法和步骤如下所示: 1.易语言程序

学习网页制作基础入门教程(1)网页编写

教程|入门教程|网页 用记事本编写代码 1.首先打开"记事本"程序(方法是「开始」-「程序」-「附件」-「记事本」) 2.将下面代码复制好粘贴到记事本上,如图-1所示.(按鼠标右键选择粘贴就可以了!) <html> <head> <title>这里是标题</title></head> <body> 这里是放置网页内容的文本区域</body></html> [图-1说明]利用鼠标右键的&quo

Java入门教程系列 – 第一个程序 “hello, world”

原文Java入门教程系列 – 第一个程序 "hello, world" Posted on 2012 年 5 月 25 日 by Johnny "Hello, World"程序指的是指在计算机屏幕上输出"Hello, World!"(意为"世界,你好!")这行字符串的计算机程序.一般来说,这是每一种计算机编程语言中最基本.最简单的程序,亦通常是初学者所编写的第 一个程序.它还可以用来确定该语言的编译器.程序开发环境,以及运行环