001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 1999 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: *
022: * --------------------------------------------------------------------------
023: * $Id: JRemote.java 8098 2006-03-09 14:15:42Z durieuxp $
024: * --------------------------------------------------------------------------
025: */package org.objectweb.jonas_ejb.container;
026:
027: import java.rmi.NoSuchObjectException;
028: import java.rmi.RemoteException;
029:
030: import javax.ejb.EJBObject;
031: import javax.rmi.PortableRemoteObject;
032:
033: import org.objectweb.util.monolog.api.BasicLevel;
034:
035: /**
036: * This class is the common part of the EJBObject implementation class. Here
037: * goes the code common for Entity beans and Session beans
038: * @author Philippe Durieux
039: */
040: public abstract class JRemote extends PortableRemoteObject implements
041: EJBObject {
042:
043: protected JFactory bf;
044:
045: /**
046: * constructor
047: * @param bf The Bean Factory
048: */
049: public JRemote(JFactory bf) throws RemoteException {
050: if (TraceEjb.isDebugIc()) {
051: TraceEjb.interp.log(BasicLevel.DEBUG, "");
052: }
053: this .bf = bf;
054:
055: // For CMI needs, we have to keep the link between jndiname/classloader
056: // The link has already been registered in the JHome constructor
057: }
058:
059: // --------------------------------------------------------------------------
060: // EJBObject implementation
061: // --------------------------------------------------------------------------
062:
063: // --------------------------------------------------------------------------
064: // Export / UnExport Object
065: // Due to the fact that this object extends RemoteObject, it is
066: // automatically
067: // exported when built. We just need to unexport it when unused, and to re
068: // export
069: // it if we reuse it again.
070: // --------------------------------------------------------------------------
071:
072: /**
073: * Make this object accessible again thru the Orb.
074: * @return True if export is OK.
075: */
076: public boolean exportObject() {
077: if (TraceEjb.isDebugIc()) {
078: TraceEjb.interp.log(BasicLevel.DEBUG, "");
079: }
080: try {
081: exportObject(this );
082: } catch (Exception e) {
083: TraceEjb.logger.log(BasicLevel.ERROR, "cannot export", e);
084: return false;
085: }
086: return true;
087: }
088:
089: /**
090: * Make this object unaccessible thru the Orb.
091: */
092: public void unexportObject() throws NoSuchObjectException {
093: if (TraceEjb.isDebugIc()) {
094: TraceEjb.interp.log(BasicLevel.DEBUG, "");
095: }
096: unexportObject(this );
097: }
098:
099: /**
100: * @return the bean factory
101: */
102: public JFactory getBf() {
103: return bf;
104: }
105: }
|