`
e_ville
  • 浏览: 28073 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

一个简单的EJB例子!!

阅读更多
EJB入门例子
文件创建日期:2006-10-13 14:48
作者:ALin
声明:这个Converter的例子应该是J2EE 1.4 Tutorial上面的。不过那上面都是用NetBeans开发的。让人知其然,不知所以然。同时本文参考了网上的一些资料。算不上原创,只能说是把别人的东西拿来总结了一下。
 
1、  开发环境:Windows XP SP2,WTP1.02,JBoss4.02,JDK1.5.05
2、  在WTP中新建一个EJB Projcet:ejb_demo,然后加入一个EJB模块所需要的文件: Remote(or Local) Interface、Remote(or Local) Home Interface、Bean class。本例子中依次为:Converter.java、ConverterHome.java、ConverterEJB.java。源代码见后面。
Ø         Converter.java                       Remote Interface
Ø         ConverterHome.java              Remote Home Interface
Ø         ConverterEJB.java                 Bean class
代码如下:
代码1Converter.java
// Converter.java -- Remote Interface.
// 2006-10-13 12:46
 
import java.rmi.RemoteException;
import javax.ejb.*;
 
public interface Converter extends EJBObject {
   public double dollarToYen(double dollars) throws RemoteException;
   public double yenToEuro(double yen) throws RemoteException;
  
   // Simple example.
   public String helloEcho(String word) throws RemoteException;
}
 
代码2ConverterHome.java
// ConverterHome.java -- Remote Home Interface.
// 2006-10-13 12:50
 
 
import java.rmi.RemoteException;
 
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
 
public interface ConverterHome extends EJBHome {
   Converter create() throws CreateException, RemoteException;
}
 
代码3ConverterEJB.java
// ConverterEJB.java -- Bean class.
// 2006-10-13 12:54
 
import java.rmi.RemoteException;
import javax.ejb.*;
 
public class ConverterEJB implements SessionBean {
 
   private static final long serialVersionUID = 1L;
  
   public double dollarToYen(double dollars) {
       return dollars * 121.6000;
   }
 
   public double yenToEuro(double yen) {
       return yen * 0.0077;
   }
  
   public String helloEcho(String word) {
       System.out.println("Someone called 'Hello Echo Successed!'");
       return "*********" + word + "*********";
   }
  
   public void ejbCreate() {
       System.out.println("Ejb 4 is creating!...");
   }
  
   public void ejbPostCreate() {
   }
  
   public void ejbActivate() throws EJBException, RemoteException {
   }
 
   public void ejbPassivate() throws EJBException, RemoteException {      
   }
 
   public void ejbRemove() throws EJBException, RemoteException {
   }
 
   public void setSessionContext(SessionContext arg0) throws EJBException,
   RemoteException {      
   }
 
}
 
3、  在项目的META-INF目录中,确保有两个文件:ejb-jar.xml和jboss.xml。前者应该已经自动生成了,后者要自己手动添加。内容如下:
u       ejb-jar.xml文件内容:
代码4ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.1"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
 <display-name>ConverJAR</display-name>
 <enterprise-beans>
    <session>
      <display-name>ConverterEJB</display-name>
      <ejb-name>ConverterEJB</ejb-name>
      <home>ConverterHome</home>
      <remote>Converter</remote>
      <ejb-class>ConverterEJB</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Bean</transaction-type>
      <security-identity>
        <use-caller-identity/>
      </security-identity>
    </session>
 </enterprise-beans>
</ejb-jar>
 
u       jboss.xml文件内容:
代码4jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
<jboss>
   <enterprise-beans>
       <session>
           <ejb-name>ConverterEJB</ejb-name>
           <jndi-name>MyConverter</jndi-name>
       </session>
   </enterprise-beans>
</jboss>
 
请注意文件中的<jndi-name>MyConverter</jndi-name>元素,用到了JNDI绑定,在客户程序中将使用到它。
4、  因为用到了JNDI绑定,因此一旦发布到服务器上,你还需要一个jndi.properties文件,以告诉调用你程序的客户端请求到哪里去初始化JNDI naming service。文件内容如下,注意前面以#号开头的是注释。该文件和你的类文件放在同一目录下,即项目的build/classes目录下。
代码5jndi.properties
# jndi.properties --
#
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
 
 
 
 
5、  最终的目录结构如下所示:
 
最终build/classes目录包含三个源文件的class文件、jndi.properties文件和一个META-INF目录,META-INF目录下包含:ejb-jar.xml和jboss.xml两个文件。
6、  将EJB项目打包成jar文件。控制台到的build/classes目录下,执行:jar cvf Converter.jar .即将该项目打包成Converter.jar。注意命令后面的点,表示将当前目录打包。
7、  将Converter.jar复制到<JBoss-install>/server/default/deploy目录,起动JBoss Server(起动类型默认为Default)。控制台会输出相应提示,如下图所示:
      
8、  编写客户端,这里是一个Java应用程序。我这里新建了一个Java Project:ejb_client。因为要用到前面的相关类,所以把Converter.jar文件添加到ejb_client项目的Build path中,同时把j2ee.jar也添加进来,客户端就只有一个类:ConverterClient.java,如下所示:
代码6ConverterClient.java
// ConverterClient.java -- A client class use ConverEJB in project ejb_demo.
// 2006-10-13 13:15
 
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
 
public class ConverterClient {
  
   public static void main(String[] args) {
       try {
           // 创建一个JNDI naming contest
           Context initial = new InitialContext();
          
           // JNDI 中以MyConverter 名子来定位到对象(在发布名称指定了JNDI名称)
//         Object objref = initial.lookup("java:comp/env/ejb/ConverterEJB");
           Object objref = initial.lookup("MyConverter");
          
           // 通过objref 得到ConverterHome 本地接口
           ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(
                   objref, ConverterHome.class);
          
           // 再由Home 接口的create 方法来创建一个服务器上的EJB实例
           Converter currencyConverter = home.create();
          
           // 调用EJB 中的方法
           double amount = currencyConverter.dollarToYen(100.00);
           System.out.println(String.valueOf(amount));
           amount = currencyConverter.yenToEuro(100.00);
           System.out.println(String.valueOf(amount));
分享到:
评论

相关推荐

    一个ejb学习时的简单例子

    Enterprise JavaBeans...总的来说,这个ejb学习的例子是一个很好的起点,它涵盖了EJB的核心概念和实际应用。通过分析和运行这个例子,你可以逐步熟悉并掌握EJB技术,为构建更复杂的Java EE应用程序打下坚实的基础。

    第一个EJB简单例子

    Enterprise JavaBeans(EJB)是Java平台上...通过这个简单的EJB例子,你可以学习到如何从头开始创建一个基本的EJB组件,了解其工作原理和在实际项目中的应用。这将帮助你更好地理解和掌握Java企业级开发的核心技术。

    简单EJB3例子

    这个"简单EJB3例子"将展示如何使用EJB3来创建一个简单的实体Bean(Entity Bean),这是EJB中负责持久化数据的部分。 首先,了解EJB3中的核心概念: 1. **实体Bean(Entity Bean)**:代表业务对象,通常与数据库中...

    Java EJB简单例子.rar

    Java EJB简单例子,这是HelloWorldBean的Home接口,它是EJB对象的生成库,无状态会话(将在下一个实例中具体讲解)Bean,这个接口是客户端与EJB对象相互作用的中间途径,通过Client触发调用Bean方法:  try {  //...

    EJB简单例子

    在本“EJB简单例子”中,我们将探讨EJB的基本概念、类型以及如何创建和运行一个简单的EJB应用。 1. **EJB组件类型** - **会话Bean(Session Beans)**:代表客户端的临时会话,提供业务逻辑服务。分为无状态会话...

    EJB例子

    4. **嵌入式EJB(Embedded EJB)**:这是Java EE 6引入的一个新概念,它允许在Java SE应用程序中使用EJB,简化了小型企业级服务的开发。嵌入式EJB可以在非Java EE容器中运行,如Java SE应用或Swing应用,无需部署到...

    ejb简单例子

    ejb简单例子

    EJB3入门例子

    4. **简化会话bean(Simplified Session Beans)**:EJB3的无状态会话bean(`@Stateless`)和有状态会话bean(`@Stateful`)更加易用,不再需要接口和Home接口,只需一个实现了业务逻辑的类即可。 5. **实体bean的...

    EJB_TEST自己编写的EJB例子

    在EJB_TEST中,我们看到的是作者自编的一个EJB实例,这通常涉及到创建、部署以及运行EJB组件,以便展示其功能和工作原理。 **EJB的组成部分**: 1. **实体Bean (Entity Bean)**:代表业务数据,通常映射到数据库中...

    EJB3.0完整代码例子

    EJB3.0是EJB规范的一个重要版本,它在EJB2.x的基础上进行了重大改进,引入了许多简化开发的新特性,使得Java企业级开发变得更加易用和高效。 EJB3.0的核心特点包括: 1. **注解驱动(Annotation-based)**:在EJB...

    jasperreports ejbql例子

    例如,一个简单的EJBQL查询可能是: ```java String ejbql = "SELECT entity FROM Entity entity WHERE entity.someProperty = :value"; ``` 在这个示例中,`Entity`是我们的实体类,`someProperty`是该类的一个...

    一个简单的EJB

    在"一个简单的EJB"项目中,我们可以看到一个基础的EJB实现,通常这样的例子会展示如何创建一个简单的EJB组件,以及如何在客户端调用这个组件的方法,比如显示一个"Hello, World!"信息。这对于初学者来说,是一个很好...

    EJB例子源码自己写的

    会话Bean可以是无状态的,即每个客户端请求都会创建一个新的Bean实例,或者有状态的,其中每个客户端会话都对应一个特定的Bean实例,保持了客户端的上下文信息。 2. **实体Bean(Entity Beans)**:实体Bean映射到...

    EJB项目例子

    在这个"HelloEJBS"项目中,我们将深入探讨EJB的基本概念、组件类型以及如何创建和部署一个简单的EJB应用。 1. **EJB基础** - **EJB组件**: EJB主要包括三种类型的组件:会话Bean(Session Beans)、实体Bean...

    jboss 测试EJB 的例子

    5. **客户端调用**:ejb_client可能是一个简单的Java客户端程序,使用EJB的远程接口来调用服务端的EJB方法。JNDI(Java Naming and Directory Interface)用于查找并绑定EJB的引用。 6. **readme.txt**:这个文件...

    1.EJB的HelloWorld!

    在这个例子中,我们将探讨如何创建并运行一个简单的EJB HelloWorld应用。 EJB的核心概念包括会话bean、实体bean和消息驱动bean。会话bean代表一次用户会话或业务逻辑,实体bean用于持久化数据,而消息驱动bean则...

    ejb3加数据库的简单例子

    在本文中,我们将深入探讨如何在EJB3环境下使用数据库,以一个简单的例子来引导初学者。EJB(Enterprise JavaBeans)3.0是Java EE(企业版)平台的一部分,提供了一种标准的方法来开发分布式、事务处理和持久化的...

    基于JSF+EJB和EJB+Struct的开发例子

    这个开发例子展示了如何将它们结合使用,以创建一个简单的内容管理系统,该系统能够实现新闻的编辑、修改和删除功能。 【JSF(Java Server Faces)】 JSF是一种Java标准的用户界面组件模型,用于构建服务器端的Web...

    EJB Dev 1: EJB入门例子

    为了运行这个EJB例子,你需要一个支持EJB的Java EE服务器,如GlassFish、WildFly或TomEE。部署EJB应用到服务器后,客户端代码可以通过JNDI查找找到并调用Bean的方法。在开发过程中,IDE如Eclipse或IntelliJ IDEA提供...

    ejb原理详细说明,一个很容易理解的例子

    本文将深入探讨EJB的工作原理,并通过一个简单的示例帮助读者更好地理解。 #### EJB的基本概念 EJB主要分为三类:会话Bean(Session Bean)、实体Bean(Entity Bean)以及消息驱动Bean(Message-Driven Bean)。...

Global site tag (gtag.js) - Google Analytics