dain 2005/06/25 23:11:23
Modified: modules/core/src/java/org/openejb/corba StandardServant.java
Added: modules/core/src/java/org/openejb/corba CORBAEJBMemento.java
Log:
Handles and EJB objects can now be passed over corba
Revision Changes Path
1.7 +3 -2
openejb/modules/core/src/java/org/openejb/corba/StandardServant.java
Index: StandardServant.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/StandardServant.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- StandardServant.java 25 Jun 2005 07:00:29 -0000 1.6
+++ StandardServant.java 26 Jun 2005 03:11:23 -0000 1.7
@@ -220,8 +220,9 @@
} else if (method.equals(GETPRIMARYKEY)) {
result =
ejbContainer.getEjbObject(primaryKey).getPrimaryKey();
} else if (method.equals(ISIDENTICAL)) {
- EJBObject ejbObject = (EJBObject) arguments[0];
- result = new
Boolean(ejbContainer.getEjbObject(primaryKey).isIdentical(ejbObject));
+ org.omg.CORBA.Object thisObject =
this._this_object();
+ org.omg.CORBA.Object otherObject =
(org.omg.CORBA.Object)arguments[0];
+ result = new
Boolean(thisObject._is_equivalent(otherObject));
} else if (method.equals(GETEJBHOME)) {
result = ejbContainer.getEjbHome();
} else if (method.equals(REMOVE)) {
1.1
openejb/modules/core/src/java/org/openejb/corba/CORBAEJBMemento.java
Index: CORBAEJBMemento.java
===================================================================
/**
* Redistribution and use of this software and associated documentation
* ("Software"), with or without modification, are permitted provided
* that the following conditions are met:
*
* 1. Redistributions of source code must retain copyright
* statements and notices. Redistributions must also contain a
* copy of this document.
*
* 2. Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* 3. The name "OpenEJB" must not be used to endorse or promote
* products derived from this Software without prior written
* permission of The OpenEJB Group. For written permission,
* please contact [EMAIL PROTECTED]
*
* 4. Products derived from this Software may not be called "OpenEJB"
* nor may "OpenEJB" appear in their names without prior written
* permission of The OpenEJB Group. OpenEJB is a registered
* trademark of The OpenEJB Group.
*
* 5. Due credit should be given to the OpenEJB Project
* (http://openejb.org/).
*
* THIS SOFTWARE IS PROVIDED BY THE OPENEJB GROUP AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE OPENEJB GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Copyright 2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id: CORBAEJBMemento.java,v 1.1 2005/06/26 03:11:23 dain Exp $
*/
package org.openejb.corba;
import java.io.Serializable;
import java.io.ObjectStreamException;
import java.io.InvalidObjectException;
import javax.ejb.EJBObject;
import javax.ejb.EJBHome;
import javax.rmi.PortableRemoteObject;
import javax.naming.Context;
import javax.naming.InitialContext;
import org.omg.CORBA.ORB;
/**
* @version $Revision: 1.1 $ $Date: 2005/06/26 03:11:23 $
*/
public class CORBAEJBMemento implements Serializable {
private final String ior;
private final boolean home;
public CORBAEJBMemento(String ior, boolean home) {
this.ior = ior;
this.home = home;
}
private Object readResolve() throws ObjectStreamException {
Class type;
if (home) {
type = EJBHome.class;
} else {
type = EJBObject.class;
}
try {
return
PortableRemoteObject.narrow(getOrb().string_to_object(ior), type);
} catch (Exception e) {
throw (InvalidObjectException) new InvalidObjectException("Unable
to convert IOR into object").initCause(e);
}
}
private static ORB getOrb() {
try {
Context context = new InitialContext();
ORB orb = (ORB) context.lookup("java:comp/ORB");
return orb;
} catch (Throwable e) {
throw new org.omg.CORBA.MARSHAL("Cound not find ORB in jndi at
java:comp/ORB", 0, org.omg.CORBA.CompletionStatus.COMPLETED_YES);
}
}
}