001: /**
002: * EasyBeans
003: * Copyright (C) 2006 Bull S.A.S.
004: * Contact: easybeans@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: * $Id: HandleDelegate.java 1100 2006-08-16 13:05:31Z benoitf $
023: * --------------------------------------------------------------------------
024: */package javax.ejb.spi;
025:
026: import java.io.IOException;
027: import java.io.ObjectInputStream;
028: import java.io.ObjectOutputStream;
029:
030: import javax.ejb.EJBHome;
031: import javax.ejb.EJBObject;
032:
033: /**
034: * Used to get used by portable implementations of javax.ejb.Handle and
035: * javax.ejb.HomeHandle.
036: * @see <a href="http://www.jcp.org/en/jsr/detail?id=220">EJB 3.0 specification</a>
037: * @author Florent Benoit
038: */
039: public interface HandleDelegate {
040:
041: /**
042: * Serialize the EJBObject reference corresponding to a Handle. This method
043: * is called from the writeObject method of portable Handle implementation
044: * classes. The ostream object is the same object that was passed in to the
045: * Handle class's writeObject.
046: * @param ejbObject The EJBObject reference to be serialized.
047: * @param objectOutputStream The output stream.
048: * @throws IOException The EJBObject could not be serialized because of a
049: * system-level failure.
050: */
051: void writeEJBObject(final EJBObject ejbObject,
052: final ObjectOutputStream objectOutputStream)
053: throws IOException;
054:
055: /**
056: * Deserialize the EJBObject reference corresponding to a Handle.
057: * readEJBObject is called from the readObject method of portable Handle
058: * implementation classes. The istream object is the same object that was
059: * passed in to the Handle class's readObject. When readEJBObject is called,
060: * istream must point to the location in the stream at which the EJBObject
061: * reference can be read. The container must ensure that the EJBObject
062: * reference is capable of performing invocations immediately after
063: * deserialization.
064: * @param objectInputStream The input stream.
065: * @return The deserialized EJBObject reference.
066: * @throws IOException The EJBObject could not be deserialized because of a
067: * system-level failure.
068: * @throws ClassNotFoundException The EJBObject could not be deserialized
069: * because some class could not be found.
070: */
071: EJBObject readEJBObject(ObjectInputStream objectInputStream)
072: throws IOException, ClassNotFoundException;
073:
074: /**
075: * Serialize the EJBHome reference corresponding to a HomeHandle. This
076: * method is called from the writeObject method of portable HomeHandle
077: * implementation classes. The ostream object is the same object that was
078: * passed in to the Handle class's writeObject.
079: * @param ejbHome The EJBHome reference to be serialized.
080: * @param objectOutputStream The output stream.
081: * @throws IOException The EJBObject could not be serialized because of a
082: * system-level failure.
083: */
084: void writeEJBHome(EJBHome ejbHome,
085: ObjectOutputStream objectOutputStream) throws IOException;
086:
087: /**
088: * Deserialize the EJBHome reference corresponding to a HomeHandle.
089: * readEJBHome is called from the readObject method of portable HomeHandle
090: * implementation classes. The istream object is the same object that was
091: * passed in to the HomeHandle class's readObject. When readEJBHome is
092: * called, istream must point to the location in the stream at which the
093: * EJBHome reference can be read. The container must ensure that the EJBHome
094: * reference is capable of performing invocations immediately after
095: * deserialization.
096: * @param objectInputStream The input stream.
097: * @return The deserialized EJBHome reference.
098: * @throws IOException The EJBHome could not be deserialized because of a
099: * system-level failure.
100: * @throws ClassNotFoundException The EJBHome could not be deserialized
101: * because some class could not be found.
102: */
103: EJBHome readEJBHome(ObjectInputStream objectInputStream)
104: throws IOException, ClassNotFoundException;
105:
106: }
|