当前位置:  技术问答>java相关

EJB资源问题,高手请进

    来源: 互联网  发布时间:2015-01-10

    本文导语:  在一个ejb中使用另一个ejb时,可以使用资源这种东西,也叫reference,据我的理解他的好处就是可以不用预先知道他要使用的jeb的jndi名字,这样可以增强ejb的独立性 比如可以在deploy的时候预先分配资源的名字 怎样在deplo...

在一个ejb中使用另一个ejb时,可以使用资源这种东西,也叫reference,据我的理解他的好处就是可以不用预先知道他要使用的jeb的jndi名字,这样可以增强ejb的独立性
比如可以在deploy的时候预先分配资源的名字
怎样在deploy的时候分配资源的名字我知道,不过怎样在ejb中使用资源那?请高手指点

|
在一个ejb中使用别的ejb跟在客户端使用区别不大。
travelagentbean使用了四个entity bean和一个无状态session bean,代码如下:
package com.titan.travelagent;

import com.titan.cabin.*;
import com.titan.cruise.*;
import com.titan.customer.*;
import com.titan.processpayment.*;
import com.titan.reservation.*;

import java.sql.*;
import javax.sql.DataSource;
import java.util.Vector;
import java.rmi.RemoteException;
import javax.naming.NamingException;
import javax.ejb.EJBException;


public class TravelAgentBean implements javax.ejb.SessionBean {

    public Customer customer;
    public Cruise cruise;
    public Cabin cabin;

    public javax.ejb.SessionContext ejbContext;
    public javax.naming.Context jndiContext;

    public void ejbCreate(Customer cust){
        customer = cust;
    }
    public int getCustomerID( )
    throws IncompleteConversationalState{
        try{
            if(customer == null)
                throw new IncompleteConversationalState();
            return ((CustomerPK)customer.getPrimaryKey()).id;
        }catch(RemoteException re){
            throw new EJBException(re);
        }
    }
    public int getCruiseID( )
    throws IncompleteConversationalState{
        try{
            if(cruise == null)
                throw new IncompleteConversationalState();
            return ((CruisePK)cruise.getPrimaryKey()).id;
        }catch(RemoteException re){
            throw new EJBException(re);
        }
        
    }
        
    public int getCabinID( )
    throws IncompleteConversationalState{
        try{
            if(cabin==null)
                throw new IncompleteConversationalState();
            return ((CabinPK)cabin.getPrimaryKey()).id;
        }catch(RemoteException re){
            throw new EJBException(re);
        }
    }
    public void setCabinID(int cabinID)
    throws javax.ejb.FinderException{
        try{
            CabinHome home = (CabinHome)getHome("CabinBean",CabinHome.class);
            CabinPK pk = new CabinPK();
            pk.id=cabinID;
            cabin = home.findByPrimaryKey(pk);
        }catch(RemoteException re){
            throw new EJBException(re);
        }
    }
    public void setCruiseID(int cruiseID)
    throws javax.ejb.FinderException{
        try{
            CruiseHome home = (CruiseHome)getHome("CruiseBean", CruiseHome.class);
            cruise = home.findByPrimaryKey(new CruisePK(cruiseID));
        }catch(RemoteException re){
            throw new EJBException(re);
        }
        
    }
    public Ticket bookPassage(CreditCard card, double price)
    throws IncompleteConversationalState{
                    

        if(customer == null || cruise == null || cabin == null){
            throw new IncompleteConversationalState();
        }
        try{
            ReservationHome resHome =
                (ReservationHome) getHome("ReservationBean",ReservationHome.class);
            Reservation reservation =
            resHome.create(customer, cruise, cabin,price);
            ProcessPaymentHome ppHome =
                (ProcessPaymentHome) getHome("ProcessPaymentBean",ProcessPaymentHome.class);
            ProcessPayment process = ppHome.create();
            process.byCredit(customer, card, price);

            Ticket ticket = new Ticket(customer,cruise,cabin,price);
            return ticket;
        }catch(Exception e){
            throw new EJBException(e);
        }
    }
    public void ejbRemove(){}
    public void ejbActivate(){}
    public void ejbPassivate(){}

    public void setSessionContext(javax.ejb.SessionContext cntx){
        ejbContext = cntx;
        try{
          jndiContext = new javax.naming.InitialContext();
        }catch(NamingException ne){
            throw new EJBException(ne);
        }
    }
    protected Object getHome(String name,Class type){
        try{
            Object ref = jndiContext.lookup("java:comp/env/ejb/"+name);
            return javax.rmi.PortableRemoteObject.narrow(ref, type);
        }catch(NamingException ne){
            throw new EJBException(ne);
        }
    }
    private Connection getConnection() throws SQLException{
        try{
           DataSource ds = (DataSource)jndiContext.lookup("java:comp/env/jdbc/mssqlPool");
           return ds.getConnection( );
        }catch(NamingException ne){throw new EJBException(ne);}
    }
    public String [] listAvailableCabins(int bedCount)
    throws IncompleteConversationalState{

        if(cruise == null) throw new IncompleteConversationalState();


        Connection con = null;
        PreparedStatement ps = null;;
        ResultSet result = null;
        try {
            int cruiseID = ((CruisePK)cruise.getPrimaryKey()).id;
            int shipID = cruise.getShipID();
            con = getConnection();
            ps = con.prepareStatement(
                "select ID, NAME, DECK_LEVEL  from CABIN "+
                "where SHIP_ID = ? and ID NOT IN "+
                "(SELECT CABIN_ID FROM RESERVATION WHERE CRUISE_ID = ?)");

            ps.setInt(1,shipID);
            ps.setInt(2,cruiseID);
            result = ps.executeQuery();
            Vector vect = new Vector();
            while(result.next()){
                StringBuffer buf = new StringBuffer();
                buf.append(result.getString(1));
                buf.append(',');
                buf.append(result.getString(2));
                buf.append(',');
                buf.append(result.getString(3));
                vect.addElement(buf.toString());
            }
            String [] returnArray = new String[vect.size()];
            vect.copyInto(returnArray);
            return returnArray;
        }
        catch (Exception e) {
            throw new EJBException(e);
        }
        finally {
            try {
                if (result != null) result.close();
                if (ps != null) ps.close();
                if (con!= null) con.close();
            }catch(SQLException se){se.printStackTrace();}
        }
    }
}

|
对,
java:comp/env/是所有环境变量的前缀
后面跟上在部署工具中设置的reference名 ,如ejb/xxxx
合起来就是java:comp/env/ejb/xxxx

|
to acool
可以在客户端直接使用.

    
 
 

您可能感兴趣的文章:

  • 请问EJB高手,EJB主要用在b/s方式还是c/s,还是两这都可?有用过jBoss的吗?有配置文档吗?一定给分!!
  • EJB的问题,希望用EJB做过开发的高手回答。
  • 问EJB高手一个问题
  • 我做ejb方面的毕业设计,哪位高手给点建议!
  • 关于ejb的配置和使用(你是真正的高手吗?)
  • JBUILDER 5高手请进,EJB的使用问题。
  • 高手:jbuilder6里怎么测试EJB2.0
  • weblogic或EJB高手有没有啊?
  • linux iis7站长之家
  • 高手指点ejb中的实体bean问题!
  • 我的EJB在JBUILDER中总是调试不成功,高分请高手
  • 请教高手关于ejb2.0的BMP问题
  • EJB问题,请教高手(非高手莫进)
  • 请高手指点如何用visual age for java 3.x开发和调试ejb? 急急急!!!!
  • 求教高手ejb的事务问题!
  • 帮帮忙 ejb 高手请进 -------------------------- 赠送100分
  • 急问高手!EJB,送分问题!
  • 请问各位高手,rmi和ejb有什么关系。开发客户端为javaapplet的多层结构系统怎样用到他们???
  • 一个ejb问题, 高手请进!!!
  • 高手请进,关于Ejb部署的问题
  • 在win2000下weblogic EJB Deployer 配置ejb时出问题
  • Container-ManagedPersistence的EJB设定EJB Relationship的问题
  • 快来救命啊。EJB调用EJB问题。深度郁闷,高分相送。
  • weblogic下,session EJB中调用session EJB的问题
  • (高分请教,在线等候)关于ejb的问题和如何调试ejb?
  • 救助,关于EJB调用EJB的问题,急急急!!
  • EJB内部调用问题
  • 我已昏了。快来帮帮我,关于EJB的调用问题
  • 请问EJB中的安全问题如何解决?
  • 关于javaBeans和EJB的区别的问题? ??
  • 有关entity EJB的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有时候觉得ejb实现的东西用javabean也可以实现,好象还省资源
  • ejb2与ejb1有什么区别? 或哪有ejb2规范的资料?
  • 如何在一个EJB工程中引用另外一个EJB包中的EJB对象?跟帖都有分!!!
  • EJB2.0提供了许多新特性,包括EJB SQL语言,谁有EJB SQL语言的帮助文档,100分求助!
  • EJB测试工具 Ejb3Unit
  • 奇怪啊,奇怪,为什么我的JB7做EJB时,只要在EJB设计面板上随便做点东西,我的EJB的JAVA的源码就会变的不见了,或者少了很多字段申明??
  • EJB的概述,EJB的相关网站?100分给回答最好的
  • EJB应用及JavaBean调用EJB
  • EJB的好书,请推荐,我看了<精通EJB2.0>,好薄哟!!
  • 请给介绍一本EJB的书,我刚学~~不想要《精通EJB》,感觉老了点~~
  • 成立java协会不如成立ejb俱乐部,不过大概没有谁会喜欢ejb了
  • jb中建ejb为什么要先弄个EJB module
  • 谁有关于EJB配置方面的好的资料吗?最好是EJB2.0的。
  • 初学EJB,javax.ejb.*; 应该将哪个library 放进来
  • 一个网站适合不适合用ejb???具体在什么情况下,要必须用ejb?和用户数量有关系吗 ??
  • 谁有 电子版 mastering ejb 2e 多谢!!及学习EJB 集合什么实例学习比较快一点?
  • EJB新手提问,同一服务器(就是同一容器吧)内EJB之间调用如何处理?
  • 在JRUN下如何配置EJB? AND 在J2EE下如何配置EJB?
  • 如何在EJB中获取该EJB的JNDI Name?
  • 用jdk编译ejb,报错:javax.ejb找不到
  • [EJB]打包成EJB档案文件的完整步骤


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3