`

EJB的第一个例子

    博客分类:
  • EJB
阅读更多
打开JBuilder,新建一个EJB项目:



接下来,我们在项目中建立一个EJB:















用JBuilder来开发EJB的好处是图形界面比较直观
然后我们创建一个会话bean
菜单右键










为EJB添加方法:





HOME接口代码 - ConvertEjbHome
package ejbtest01;

import javax.ejb.EJBHome;
import javax.ejb.CreateException;
import java.rmi.RemoteException;
//这是home接口,负责生成EJB对象
public interface ConverEjbHome
    extends EJBHome {
  //create方法用来被客户端调用,返回一个远程接口引用,供客户端使用来调用业务方法
  public ConverEjb create() throws CreateException, RemoteException;
}



远程接口代码 - ConvertEjb
package ejbtest01;

import javax.ejb.EJBObject;
import java.rmi.RemoteException;
//远程接口,负责让客户端通过它来调用业务方法
public interface ConverEjb
    extends EJBObject {
  //业务方法定义
  public double getRmb(double usd) throws RemoteException;
}


EJB Bean类代码 - ConvertEjbBean
package ejbtest01;

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
//实现类,实现了业务逻辑
public class ConverEjbBean
    implements SessionBean {
  SessionContext sessionContext;
  public void ejbCreate() throws CreateException {
  }

  public void ejbRemove() {
  }

  public void ejbActivate() {
  }

  public void ejbPassivate() {
  }

  public void setSessionContext(SessionContext sessionContext) {
    this.sessionContext = sessionContext;
  }

  //业务逻辑实现,不能泄漏给客户端
  public double getRmb(double usd) {
    //从数据库查询出汇率
    double rate = 6.98;
    double rmb = rate * usd;
    return rmb;
  }

}


JBuiler会自动配置好配置文件 - ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
  <display-name>EjbTestModule1</display-name>
  <enterprise-beans>
    <session>
      <display-name>ConverEjb</display-name>
      <ejb-name>ConverEjb</ejb-name>
      <home>ejbtest01.ConverEjbHome</home>
      <remote>ejbtest01.ConverEjb</remote>
      <ejb-class>ejbtest01.ConverEjbBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>
    </session>
  </enterprise-beans>
  <assembly-descriptor>
    <container-transaction>
      <method>
        <ejb-name>ConverEjb</ejb-name>
        <method-name>*</method-name>
      </method>
      <trans-attribute>Required</trans-attribute>
    </container-transaction>
  </assembly-descriptor>
</ejb-jar>


编译项目:



将EjbTestModule1.jar上传到Web Server:

启动WebLogic:




进入WebLogic控制台:
浏览器输入:
http://localhost:7001/console
用户名:weblogic  密码: weblogic

部署模块:










测试EJB类:

在JBuilder中建立一个测试类:
右键项目->New->Add Package
包中新建一个client1类

package client;

import ejbtest01.ConverEjb;
import ejbtest01.ConverEjbHome;
import javax.rmi.PortableRemoteObject;

public class Client1 {
  public static void main(String args[]) throws Exception {
    Object obj = EjbFactory.getEjbHome("ConvertEjb");

    //ConvertEjbHome home = (ConvertEjbHome)obj; 性能不好
    ConverEjbHome home = (ConverEjbHome)PortableRemoteObject.narrow(obj,ConverEjbHome.class);
    ConverEjb remote = home.create();

    double usd = 456;
    double rmb = remote.getRmb(usd);
    System.out.println("人民币数量: " + rmb);

  }
}


package client;

import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;

public class EjbFactory {
  public static Object getEjbHome(String jndiName) throws Exception {
    //连接到Weblogic
    Hashtable map = new Hashtable();
    map.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
    //指定了weblogic服务器的名称(IP),远程调用体现在这里
    map.put(Context.PROVIDER_URL,"t3://localhost:7001");
    map.put(Context.SECURITY_PRINCIPAL,"weblogic");
    map.put(Context.SECURITY_CREDENTIALS,"weblogic");

    Context context = new InitialContext(map);
    //根据JNDI名称查找,查到的就是home接口
    Object obj = context.lookup(jndiName);

    return obj;
  }
}
  • 大小: 42.8 KB
  • 大小: 21.1 KB
  • 大小: 21.9 KB
  • 大小: 18.7 KB
  • 大小: 36.4 KB
  • 大小: 41.2 KB
  • 大小: 10.9 KB
  • 大小: 10.2 KB
  • 大小: 28.5 KB
  • 大小: 11 KB
  • 大小: 10.6 KB
  • 大小: 24.3 KB
  • 大小: 18.5 KB
  • 大小: 45.2 KB
  • 大小: 32.5 KB
  • 大小: 26.2 KB
分享到:
评论

相关推荐

    第一个EJB访问数据库例子

    综上所述,"第一个EJB访问数据库例子"这个项目将引导我们了解如何在EJB环境中设置和使用数据库连接,以及如何通过EJB组件执行SQL查询和操作。这个过程中,我们将涉及JDBC、JNDI、EJB组件类型、事务管理以及可能的JPA...

    第一个EJB简单例子

    在这个“第一个EJB简单例子”中,我们将深入探讨如何创建和理解基本的EJB组件。 1. **EJB组件类型**: - **会话Bean(Session Beans)**:代表客户端的一次交互或会话。它们可以是状态ful(维护会话状态)或状态...

    EJB3入门例子

    **jbos5**是EJB3的一个流行实现,是JBoss Application Server的第五个主要版本。它提供了一个完整的Java EE 5兼容环境,包括对EJB3的支持。JBoss AS5提供了丰富的管理和监控工具,方便开发者部署和调试EJB3应用。 *...

    完整EJB3.0第一个HelloWord,

    在EJB3.0的第一个"Hello, World"项目中,我们将学习如何创建和配置一个简单的EJB组件。首先,我们需要了解EJB的基本概念。EJB分为三种类型:会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean...

    EJB中JNDI的使用源码例子

    1. 创建`InitialContext`:这是JNDI操作的第一步,通常在客户端或EJB内部进行。 ```java Properties props = new Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, ...

    EJB3的三本好书第2本, EJB3 in Action 2007

    EJB3的三本好书第二本,最好的介绍ejb3的书,看过之后,其他的书都送人了,而且附带的源代码,几乎包括了所有的主流应用服务器的例子,glassfish, jboss, weblogic, oracleAS 3本书分别是: 1. Beginning EJB3 ...

    ejb3实例源代码

    EJB 3是其第三个主要版本,发布于2006年,它引入了许多重大改进,极大地简化了EJB的开发模式,降低了学习曲线,提高了开发效率。本实例源代码集就是针对EJB 3技术的实践应用展示。 EJB 3中的关键概念包括: 1. **...

    EJB3.0中文文档

    **1.7 运行第一个EJB3例子** 初学者可以通过简单的示例来了解EJB3的基本概念和工作原理,如创建一个简单的无状态会话Bean并调用其方法。 **1.8 熟悉JBOSS的目录结构** 了解JBOSS的目录结构对于管理和部署EJB组件...

    精通EJB第二版

    《精通EJB第二版》是一本深受欢迎的Java企业级应用开发教材,专注于EJB(Enterprise JavaBeans)技术。EJB是Java平台企业版(Java EE)的核心组件,用于构建可扩展、安全且可靠的分布式应用程序。这本书是学习EJB...

    ejb3 第5讲--通过ANT提高EJB应用的开发效率

    **ejb3 第5讲 -- 通过ANT提高EJB应用的开发效率** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建企业级应用程序。EJB 3.0是一个重要的里程碑,它极大地简化了EJB的开发,提高了开发效率。在本...

    ejb.rar_weblogic8 ejb2

    【标题】"ejb.rar_weblogic8 ejb2" 提供的是一个关于WebLogic 8.1服务器上部署和运行EJB 2(Enterprise JavaBeans第二版)的实例教程。EJB是Java企业级应用的核心组件模型,主要用于构建分布式、可伸缩且具有事务...

    Eclipse配置ejb详细图解(一看就会配的)

    配置Eclipse进行EJB开发的第一步是确保安装了Java EE版本的Eclipse IDE,因为标准的Java SE版本不包含对EJB的支持。你可以通过Eclipse Marketplace或者下载插件的方式添加Java EE支持。 接下来,我们创建一个新的...

    各种EJB之间的调用示例

    1. **部署描述符**:每个EJB都需要一个部署描述符(ejb-jar.xml)来定义其元数据,如bean的类型、接口、方法等。 2. **接口**:EJB有两种接口,本地接口(Local Interface)和远程接口(Remote Interface)。本地...

    Weblogic10 + EJB3入门教程

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

Global site tag (gtag.js) - Google Analytics