`
yangzb
  • 浏览: 3503226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Weblogic中EJB调用方法总结

    博客分类:
  • Java
阅读更多

1、客户端程序中调用EJB
前提:EJB要实现了REMOTE接口
客户端调用的代码可以用EJB Test Client工具生成。自己写就是这个样子:
    Properties properties = new Properties();
    properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
    properties.put(Context.PROVIDER_URL, "t3://localhost:7001");

    Context context= new InitialContext(properties);
    Object ref = context.lookup("DigestSessionBean"); //通过ejb的JNDI name查找到EJBHome对象

    DigestSessionHome digestSessionHome = (DigestSessionHome) PortableRemoteObject.narrow(ref,
        DigestSessionHome.class);//得到EJBHome
    DigestSession digestSession = digestSessionHome.create();//得到EJBObject

    byte[] ret = digestSession.md5(temp.getBytes());//ejb方法调用

2、SERVLET中调用EJB
前提:被调用的EJB实现了REMOTE接口
在Servlet中,调用的代码应该是这个样子:
    try {
      Context context = new InitialContext();
      Object ref = context.lookup("UserFacade");
      //look up jndi name and cast to Home interface
      UserFacadeHome userFacadeHome = (UserFacadeHome) PortableRemoteObject.
          narrow(ref, UserFacadeHome.class);
      UserFacade userFacade = userFacadeHome.create();
      userFacade.updateUser("002","老二");
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
跟客户端程序中调用EJB的差别是在Context的生成上,servlet中直接用
Context context = new InitialContext();
而客户端程序中是用
    Properties properties = new Properties();
    properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
    properties.put(Context.PROVIDER_URL, "t3://localhost:7001");

    Context context= new InitialContext(properties);

3、EJB中调用其他的EJB(同一EJB模块)
前提:
(1)被调用者实现了LOCAL接口,调用者则实现了REMOTE接口
(2)调用者和被调用者应该在同一EJB模块打包文件(jar)內
(3)调用者的部署描述(ejb-jar.xml)中有关于Local ref的描述,如下所示:
    <session>
      <display-name>UserFacade</display-name>
      <ejb-name>UserFacade</ejb-name>
      <home>ejbtest.test.UserFacadeHome</home>
      <remote>ejbtest.test.UserFacade</remote>
      <ejb-class>ejbtest.test.UserFacadeBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>
      <ejb-local-ref>
        <ejb-ref-name>ejb/user</ejb-ref-name>
        <ejb-ref-type>Entity</ejb-ref-type>
        <local-home>ejbtest.test.UserHome</local-home>
        <local>ejbtest.test.User</local>
        <ejb-link>User</ejb-link>
      </ejb-local-ref>
    </session>
在调用者中,调用的程序代码应该是下面的样子:
package ejbtest.test;

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;

import javax.ejb.*;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.rmi.RemoteException;

public class UserFacadeBean
    implements SessionBean {
  SessionContext sessionContext;
  private UserHome userHome;
  private static Context context;

  public void ejbCreate() throws CreateException {
  }

  public void ejbRemove() {
  }

  public void ejbActivate() {
  }

  public void ejbPassivate() {
  }

  public void setSessionContext(SessionContext sessionContext) {
    System.out.println("@@@@@@@@@@@@@@@@ UserFacadeBean.setSessionContext()");
    this.sessionContext = sessionContext;
    try {
      findUserHome();
    }
    catch (Exception e) {
      throw new EJBException(e.getMessage());
    }
  }

  private void findUserHome() throws Exception {
    final String ENTITY_NAME = "java:comp/env/ejb/user";

    context = new InitialContext();

    if (userHome == null) {
      try {
        Object object = context.lookup(ENTITY_NAME);
        userHome = (UserHome) object;
      }
      catch (Exception e) {
        throw new EJBException(e.getMessage());
      }
    }
  }

  public void addUser(String id, String name) throws RemoteException {
    try {
      User user = userHome.create(id);
      user.setName(name);
    }
    catch (Exception ex) {
      throw new RemoteException(ex.getMessage());
    }
  }
}

4、EJB中调用其他的EJB(不同的EJB模块)
前提:被调用者实现了REMOTE接口
最简单的方法是按客户端程序(或者SERVLET)中调用EJB的方法。

分享到:
评论
1 楼 yupengfeiwangcui 2012-11-10  
能不能不抄别人的

相关推荐

    Weblogic下ejb配置

    WebLogic Server是Oracle公司的一款...总结,WebLogic Server中的EJB配置涉及多个层面,包括EJB组件的编写、打包、部署以及性能优化。理解并熟练掌握这些步骤和最佳实践,有助于开发出高效、可靠的Java EE企业级应用。

    tomcat 调用weblogic EJB

    - 创建一个Action类继承自`org.apache.struts.action.Action`,在这个类中实现具体的EJB调用逻辑。 4. **JNDI查找与远程调用** - 使用JNDI(Java Naming and Directory Interface)进行查找和获取EJB的远程接口...

    weblogic+ejb3.0例子

    总结起来,Weblogic + EJB3.0的组合提供了一个强大而简化的企业级开发环境。EJB3.0的注解驱动和JavaBean模型降低了开发复杂性,使得开发人员能够更快速地构建和部署分布式应用程序。在Weblogic服务器上,这些组件...

    Weblogic Ejb 学习笔记

    - WebLogic Server提供基于角色的访问控制(RBAC),EJB可以定义安全角色,并在部署描述符中指定哪些用户或组可以访问特定的EJB方法。 9. **WebLogic Server集群和EJB** - 在集群环境中,EJB可以实现负载均衡和...

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

    在本文中,我们将深入探讨如何在WebLogic环境中部署EJB 2.0,特别是实现本地接口的Session Bean。 EJB 2.0是Java EE早期版本中的组件模型,用于构建可复用、分布式的企业级服务。它定义了三种主要类型的Bean:...

    Weblogic10 + EJB3入门教程

    每个会话Bean都需要一个远程接口,用于定义客户端可以通过网络调用的方法。示例代码中定义了一个名为`CompanyRemote`的接口: ```java package com.earth; import javax.ejb.Remote; @Remote public interface ...

    EJB3.0+weblogic操作文档

    通过以上步骤,开发者可以在WebLogic 11g上发布和管理EJB3.0应用,同时也能轻松地从客户端项目中调用这些EJB服务。EJB3.0的简洁性和易用性使得开发人员能更专注于业务逻辑,而不是底层基础设施。

    Weblogic11g+EJB3的小例子

    在这个"Weblogic11g+EJB3的小例子"中,我们可以看到以下几个关键知识点: 1. **EJB3核心概念**: - **实体Bean(Entity Bean)**:代表业务数据模型,通常与数据库中的表进行映射。EJB3引入了JPA(Java ...

    ejb.rar_weblogic8 ejb2

    3. **EJB生命周期**:创建、初始化、查找、调用方法、销毁等过程。 4. **JNDI查找**:使用Java Naming and Directory Interface(JNDI)查找并访问EJB组件。 5. **事务管理**:EJB支持自动事务处理,如PROPAGATION_...

    ejb调用详解

    **ejb调用详解** EJB(Enterprise JavaBeans)是Java EE平台中用于构建企业级分布式应用程序的核心组件。本文将深入探讨如何在WebSphere环境中远程调用EJB组件,同时介绍ejb3.0版本的一些关键特性,以及 ejb 开发...

    EJB 和WEBLOGIC 结合例子

    总结起来,EJB和WebLogic的结合是构建大型企业系统的关键技术,它允许开发者专注于业务逻辑,同时享受Java EE平台带来的各种便利。深入学习和实践这个主题,将有助于提升Java EE应用的开发和管理能力。

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

    在本文中,我们将深入探讨如何使用Eclipse IDE与WebLogic Server 10.x版本结合,开发基于EJB 3.0规范的应用程序。EJB(Enterprise JavaBeans)是Java EE平台的核心组件,用于构建可扩展、可靠且安全的企业级应用程序...

    weblogic数据源调用

    WebLogic数据源调用是Java应用在WebLogic服务器上与Oracle数据库交互的关键...总的来说,理解并掌握WebLogic数据源的调用方法对于开发在WebLogic上运行的Java应用至关重要,它能确保应用与数据库之间的高效、稳定通信。

    Weblogic 创建一个简单的EJB项目

    总结来说,创建一个简单的WebLogic EJB项目涉及以下步骤: 1. 安装和配置WebLogic Server。 2. 在IDE中创建Java EE项目,包含EJB模块。 3. 编写EJB接口和实现,定义业务逻辑。 4. 配置部署描述符,声明EJB组件。 5. ...

    WebLogic6.0中Ejb的使用-j2ee

    ### WebLogic 6.0中EJB的使用详解 #### 一、概述 EJB(Enterprise JavaBeans)是Java EE规范中的一个重要组成部分,主要用于构建分布式企业应用中的业务逻辑层。本文将详细介绍如何在WebLogic 6.0服务器环境中部署...

    Weblogic EJB 学习笔记

    总结来说,Weblogic EJB的学习需要理解EJB的基本概念,掌握不同类型的bean及其特点,熟悉配置描述器的使用,以及如何在Weblogic环境中管理和控制事务。这些都是开发企业级Java应用程序的关键技能。在实际应用中,...

    基于Weblogic 的ejb 学习笔记

    - 在调用`ejb.create()`方法之前,需要先设置`UserTransaction`。 - 通过`UserTransaction`可以调用`begin()`、`commit()`和`rollback()`方法来管理事务边界。 ##### 3. 实体Bean (Entity Bean) 实体Bean用来...

    03.Weblogic通过WTC调用Tuxedo服务参考文档@xutt.docx

    这种集成允许WebLogic应用程序调用Tuxedo服务,同时也支持Tuxedo调用WebLogic中的Enterprise JavaBeans (EJBs)。 **一、环境配置** 1. **服务端**:在这个例子中,服务端运行在Asianux release 2.0操作系统上,...

    weblogic+Myeclipse+EJB

    ### WebLogic + MyEclipse + EJB:构建企业级应用 #### 一、WebLogic简介与安装配置 ##### 1.1 WebLogic简介 WebLogic Server 是一款功能强大的企业级应用服务器,由Oracle公司开发并维护。它支持多种标准协议和...

Global site tag (gtag.js) - Google Analytics