`
yangzb
  • 浏览: 3473483 次
  • 性别: 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  
能不能不抄别人的

相关推荐

    tomcat 调用weblogic EJB

    tomcat 调用weblogic EJB tomcat 调用weblogic EJB

    ejb调用详解

    主要讲解了如何远程调用websphare中的ejb组建,以及ejb开发实例,ejb开发框架等

    基于Weblogic 的ejb 学习笔记

    的无状态会话bean: 多次和一次调用的结果和效应相同。  在集群中可以负载均衡 a 机器失败,可以在b机器上重试  非等?的无状态会话bean: 如:计数器  不能自动因故障而进行切换。

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...

    J2EE的EJB实践总结包

    EJB实践的服务器是用SUN的服务器,也有用weblogic的一些例子。包里还包括EJB调用EJB、连接数据库、命令行布署EJB等总结。另外,还包括对Jasmine购物系统的分析及总结。是学习EJB很好的总结。

    WebLogic Tuxedo连接器快速入门

    Weblogic端客户通过调用TOUPPER EJB来获取这个服务。 TOLOWER:一个weblogic server端的EJB实现的服务。可被tuxedo端客户调用。 本例包含以下两个域: TDOM2:weblogic使用的域 TDOM1:tuxedo使用的域

    J2EE应用与BEA.WebLogic.Server第2版.pdf

    第六章 远程方法调用和分布式命名 第七章 使用 Java 消息服务进行企业消息传递 第八章 使用会话企业 JavaBean 第九章 实体 EJB 第十章 使用消息驱动 EJB 第十一章 使用 WebLogic Server JavaMail 连接 Internet 邮件...

    WTC暴露ejb服务说明

    目前,通过WTC来调用tuxedo服务,这种技术已经比较成熟。但是反过来却在公司内部还未曾使用过。即,通过tuxedo来调用weblogic的ejb服务。

    通过wtc、jolt进行tuxedo与weblogic通信开发

    在电信,银行,金融等领域广泛应用,通常由tuxedo处理系统的核心业务,weblogic将业务应用扩展到internet平台,实现电子商务,由weblogic调用tuxedo的服务或者由tuxedo的服务调用通过weblogic部署的ejb,所以tuxedo与...

    J2EE应用与BEA WebLogic Server 光盘part1

    全书共分为18章,每章分别对应于使用J2EE和WebLogic Server开发Web应用程序的各个阶段,并且都围绕特定的Java Enterprise技术来组织,包括模型-视图-控制器设计模式、JDBC数据库连接、远程方法调用、JMS、EJB、Java-...

    Ejb技术入门级实例大全

    本人闲来研究了EJB的技术。编写了Ejb技术的所有实例bean,供有兴趣学习Ejb... 本Ejb运行环境:jdk1.42 + weblogic 8.1. 如有问题,请联系我,chtboss@21cn.com.如有好的建议,也指大家指教。 另:解压密码:898989

    J2EE应用与BEA WebLogic Server(第2版).pdf

    全书共分为18章,每章分别对应于使用J2EE和WebLogic Server开发Web应用程序的各个阶段,并且都围绕特定的Java Enterprise技术来组织,包括模型-视图-控制器设计模式、JDBC数据库连接、远程方法调用、JMS、EJB、Java-...

    WTC的EJB项目TOLOWER

    Tuxdeo调用Weblogic时接收Tuxedo请求的EJB示例程序,详细说明参见http://blog.csdn.net/f4761

    EJB初学者常有的十一个疑惑

    它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB...

    J2EE应用与BEA WebLogic Server 光盘part2

    全书共分为18章,每章分别对应于使用J2EE和WebLogic Server开发Web应用程序的各个阶段,并且都围绕特定的Java Enterprise技术来组织,包括模型-视图-控制器设计模式、JDBC数据库连接、远程方法调用、JMS、EJB、Java-...

    java面试800题

    如果调用EJB组件方法的客户端应用处于事务过程中,则调用组件商务方法时原有事务过程挂起,直至组件方法运行结束; 5.Supports:组件方法必须处于事务范围内。如果调用组件商务方法的客户端不处于事务过程中,则EJB...

    java开发无状态EJB应用

    简单的java实现的无状态EJB应用,并在weblogic上发布,包括了调用方式

    myeclilpse开发EJB+Webapp

    该文档详细的介绍了在eclipse的IDE中开发ejb应用程序,并有web应用程序调用

Global site tag (gtag.js) - Google Analytics