`

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

    博客分类:
  • Ejb
 
阅读更多

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

  第1步:编写远程接口

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

 

packag ecom.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 Stringname;
  private Stringjob;
  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=newEmployee[2];
    employees[0]=newEmployee();
    employees[0].setName("superman");
    employees[0].setJob("CEO");
    employees[0].setAge(1234);
    
    employees[1]=newEmployee();
    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。注意JNDI的名字需要以大写开头,否则会报javax.naming.NameNotFoundException: While trying to lookup 'person#com.ejb3.stateless.demo.PersonRemote' didn't find subcontext 'person#com'. Resolved '' 类似这种错误。

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

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

javac-d.-classpath.;C:beawlserver_10.3serverlibweblogic.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=newProperties();
    props.setProperty(Context.INITIAL_CONTEXT_FACTORY,
        "weblogic.jndi.WLInitialContextFactory");
    props.setProperty(Context.PROVIDER_URL,"t3://192.168.17.127:7001");
    InitialContext ctx=newInitialContext(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:beawlserver_10.3serverlibweblogic.jarTestCompany.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 Test Company

 执行上面的命令后的输出结果如下面两个图所示:

 

本文转载自http://tech.ddvip.com

 

 

分享到:
评论

相关推荐

    Weblogic10 + EJB3入门教程

    #### 三、编写第一个无状态会话Bean(Stateless Session Bean) ##### 第1步:定义远程接口 每个会话Bean都需要一个远程接口,用于定义客户端可以通过网络调用的方法。示例代码中定义了一个名为`CompanyRemote`的接口...

    weblogic 10 ejb3 入门教程 + 调试通过的源代码

    【标题】"weblogic 10 ejb3 入门教程 + 调试通过的源代码"涉及的关键知识点主要集中在两个核心领域:WebLogic Server 10 和 EJB 3.0(Enterprise JavaBeans 第三版)。WebLogic Server 是 Oracle 提供的一款企业级...

    Weblogic11g+EJB3的小例子

    - **会话Bean(Session Bean)**:提供业务逻辑服务,可以是无状态的(Stateless Session Bean)或有状态的(Stateful Session Bean)。 - **消息驱动Bean(Message Driven Bean)**:用于处理JMS(Java Message ...

    weblogic部署EJB2.0 实现本地接口的SessionBean

    它定义了三种主要类型的Bean:Stateless Session Beans(无状态会话bean)、Stateful Session Beans(有状态会话bean)和Message Driven Beans(消息驱动bean)。我们关注的是Session Bean,它们通常代表业务逻辑,...

    EJB3.0+weblogic操作文档

    1. **无状态会话Bean(Stateless Session Bean)**: - 无状态会话Bean是最简单的EJB类型,它不维护任何会话状态,每个请求都独立于其他请求。在EJB3.0中,只需通过`@Stateless`注解标记类即可创建无状态会话Bean。...

    实验6-无状态会话bean.pdf

    【实验6-无状态会话bean】主要涉及的是Java企业级应用开发中的核心概念——无状态会话Bean(Stateless Session Bean),这是Java EE(Java Platform, Enterprise Edition)规范中的重要组成部分,主要用于处理业务...

    实验6-无状态会话bean.docx

    【实验6-无状态会话bean】是关于Java企业级应用开发的一个实践环节,主要涉及的是EJB(Enterprise JavaBeans)中的无状态会话bean。无状态会话bean是一种服务器端组件,它不保存任何会话状态信息,每次调用都是独立...

    EJB3.0源代码,包含会话Bean,实体Bean,还有消息Bean

    - **无状态会话Bean (Stateless Session Beans)**: 提供无持久性状态的业务逻辑服务。它们不维护与客户端的会话,每次调用都是独立的,适合处理大量并发请求。 - **有状态会话Bean (Stateful Session Beans)**: ...

    ejb入门录像 sessionBean

    【ejb入门录像 sessionBean】是针对企业级Java应用(Enterprise JavaBeans,简称EJB)技术的初学者设计的一段教学视频。EJB是Java EE(Java Platform, Enterprise Edition)框架的重要组成部分,它提供了一种标准的...

    EJB3.0开发Session Bean.rar

    - **无状态Session Bean (Stateless Session Bean)**:每个客户端请求都会创建一个新的实例,不保存任何客户端状态,适合执行计算任务或事务操作。 - **有状态Session Bean (Stateful Session Bean)**:每个客户端...

    WebLogic_SessionBean应用模板

    WebLogic_SessionBean应用模板是基于Java EE平台,特别是Enterprise JavaBeans (EJB)技术的一个典型应用实例,主要用于在Oracle WebLogic Server上构建和部署会话Bean。会话Bean是Java EE中的一个核心组件,它提供了...

    ejb sessionbean demo

    在EJB 3.x中,无状态Session Bean的实现相当简单,只需要通过注解`@Stateless`标记类,并提供公共方法作为远程接口。 2. **有状态Session Bean**:对于需要保持客户端状态的应用,如购物车服务,有状态Session Bean...

    Weblogic Ejb 学习笔记

    - EJB是Java平台为企业级应用设计的组件模型,分为三种类型:Session Beans(会话Bean)、Message-driven Beans(消息驱动Bean)和Entity Beans(实体Bean)。 - Session Beans负责业务逻辑处理,提供临时或持续性...

    java开发无状态EJB应用

    无状态会话Bean(Stateless Session Bean)是企业级Java应用中的一个重要组件类型,主要用于处理业务逻辑。与有状态会话Bean不同,无状态会话Bean并不保存客户端状态,这使得它们更加轻量级且易于扩展。本文将详细...

    EJB3基础教程

    - **会话bean(Session Beans)**:提供业务逻辑,可以是无状态或有状态的。无状态会话bean处理一次性请求,而有状态会话bean则可以跟踪客户端的交互。 - **实体bean(Entity Beans)**:代表持久化数据,通常映射...

    使用eclipse通过weblogic开发简单的ejb应用(weblogic 10.x & ejb3.x)

    在项目中,我们可以创建一个EJB模块,包含实体Bean(Entity Bean)、会话Bean(Session Bean)或消息驱动Bean(Message-Driven Bean)。EJB 3.0引入了注解,使得组件的声明变得更加简洁,例如使用`@Stateless`、`@...

    自己编写的EJB源代码

    会话bean分为无状态会话bean(Stateless Session Bean)和有状态会话bean(Stateful Session Bean)。无状态bean不保存客户端间的状态,而有状态bean则能记住客户端的上下文信息。 "ManagerEJB"可能是这个EJB组件的...

    电子教程:EJB开发

    - **会话Bean**:用于短暂的客户端交互,分状态会话Bean(Stateful Session Bean)和无状态会话Bean(Stateless Session Bean)。前者保持与客户端的会话状态,后者不维护状态。 - **实体Bean**:代表持久化的业务...

    EJB3.0简介

    根据其对会话状态的处理方式,会话Bean主要分为两种类型:有状态会话Bean(Stateful Session Bean)和无状态会话Bean(Stateless Session Bean)。 ##### 无状态会话Bean(Stateless Session Bean) 无状态会话...

Global site tag (gtag.js) - Google Analytics