maguro 2005/01/13 12:00:22
Modified: modules/core/src/java/org/openejb/corba Adapter.java
CORBABean.java POABean.java
Added: modules/core/src/java/org/openejb/corba AdapterEntity.java
AdapterStateful.java AdapterStateless.java
AdapterWrapper.java CORBAException.java
OpenORBNameBean.java RefGenerator.java
Log:
Add support for CORBA
Intermediate checkin.
Revision Changes Path
1.2 +101 -15
openejb/modules/core/src/java/org/openejb/corba/Adapter.java
Index: Adapter.java
===================================================================
RCS file:
/scm/openejb/openejb/modules/core/src/java/org/openejb/corba/Adapter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Adapter.java 5 Nov 2004 23:46:13 -0000 1.1
+++ Adapter.java 13 Jan 2005 17:00:22 -0000 1.2
@@ -38,39 +38,125 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * Copyright 2001 (C) The OpenEJB Group. All Rights Reserved.
+ * Copyright 2004-2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id$
*/
package org.openejb.corba;
-import org.openejb.EJBContainer;
+import javax.rmi.CORBA.Tie;
+
import org.omg.CORBA.ORB;
+import org.omg.CosNaming.NameComponent;
+import org.omg.CosNaming.NamingContext;
+import org.omg.CosNaming.NamingContextExt;
+import org.omg.CosNaming.NamingContextExtHelper;
+import org.omg.CosNaming.NamingContextHelper;
+import org.omg.CosNaming.NamingContextPackage.NotEmpty;
import org.omg.PortableServer.POA;
+import org.omg.PortableServer.Servant;
+
+import org.openejb.EJBContainer;
+import org.openejb.corba.util.TieLoader;
+import org.openejb.proxy.ProxyInfo;
/**
- *
- *
* @version $Revision$ $Date$
*/
-public class Adapter {
- private final ORB orb;
- private final POA poa;
+public abstract class Adapter implements RefGenerator {
private final EJBContainer container;
+ private final POA parentPOA;
+ private final NamingContextExt initialContext;
+ private final TieLoader tieLoader;
+ private final byte[] home_id;
+ private final org.omg.CORBA.Object homeReference;
- public Adapter(ORB orb, POA poa, EJBContainer container) {
- this.orb = orb;
- this.poa = poa;
+ protected Adapter(EJBContainer container, ORB orb, POA parentPOA,
TieLoader tieLoader) throws CORBAException {
this.container = container;
+ this.parentPOA = parentPOA;
+ this.tieLoader = tieLoader;
+ this.home_id = container.getContainerID().toString().getBytes();
+
+
+ try {
+ org.omg.CORBA.Object obj =
orb.resolve_initial_references("NameService");
+ initialContext = NamingContextExtHelper.narrow(obj);
+
+ Servant servant =
tieLoader.loadTieClass(container.getProxyInfo().getHomeInterface(),
container.getProxyInfo());
+ if (servant instanceof Tie) {
+ ((Tie) servant).setTarget(container.getEJBHome());
+ }
+ parentPOA.activate_object_with_id(home_id, servant);
+ homeReference = parentPOA.servant_to_reference(servant);
+
+ String[] names = container.getJndiNames();
+ for (int i = 0; i < names.length; i++) {
+ NameComponent[] nameComponent =
initialContext.to_name(names[i]);
+ NamingContext currentContext = initialContext;
+ NameComponent[] nc = new NameComponent[1];
+ int lastComponent = nameComponent.length - 1;
+ for (int j = 0; j < lastComponent; ++j) {
+ nc[0] = nameComponent[j];
+ try {
+ currentContext =
NamingContextHelper.narrow(currentContext.resolve(nc));
+ } catch (org.omg.CosNaming.NamingContextPackage.NotFound
nf) {
+ currentContext = currentContext.bind_new_context(nc);
+ }
+ }
+ nc[0] = nameComponent[lastComponent];
+ currentContext.rebind(nc, homeReference);
+ initialContext.resolve(nameComponent);
+ }
+ } catch (Exception e) {
+ throw new CORBAException(e);
+ }
+ }
- String home_name = container.getEJBName();
- byte[] objectId = container.getContainerID().toString().getBytes();
+ public EJBContainer getContainer() {
+ return container;
+ }
+
+ public NamingContextExt getInitialContext() {
+ return initialContext;
+ }
- byte [] home_id = home_name.getBytes();
+ public TieLoader getTieLoader() {
+ return tieLoader;
}
- public void stop() {
+ public org.omg.CORBA.Object getHomeReference() {
+ return homeReference;
+ }
+ public void stop() throws CORBAException {
+ try {
+ String[] names = container.getJndiNames();
+ for (int i = 0; i < names.length; i++) {
+ NameComponent[] nameComponent =
initialContext.to_name(names[i]);
+ initialContext.unbind(nameComponent);
+
+ for (int j = nameComponent.length - 1; 0 < j; --j) {
+ NameComponent[] nc = new NameComponent[j];
+ System.arraycopy(nameComponent, 0, nc, 0, j);
+ NamingContext currentContext =
NamingContextHelper.narrow(initialContext.resolve(nc));
+ try {
+ initialContext.unbind(nc);
+ currentContext.destroy();
+ } catch (NotEmpty nf) {
+ break;
+ }
+ }
+ }
+
+ parentPOA.deactivate_object(home_id);
+ } catch (Exception e) {
+ throw new CORBAException(e);
+ }
}
+
+ public org.omg.CORBA.Object genHomeReference(ProxyInfo proxyInfo) throws
CORBAException {
+ return this.getHomeReference();
+ }
+
}
1.2 +19 -12
openejb/modules/core/src/java/org/openejb/corba/CORBABean.java
Index: CORBABean.java
===================================================================
RCS file:
/scm/openejb/openejb/modules/core/src/java/org/openejb/corba/CORBABean.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CORBABean.java 5 Nov 2004 23:46:13 -0000 1.1
+++ CORBABean.java 13 Jan 2005 17:00:22 -0000 1.2
@@ -38,7 +38,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * Copyright 2001 (C) The OpenEJB Group. All Rights Reserved.
+ * Copyright 2004-2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id$
*/
@@ -57,11 +57,10 @@
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.gbean.WaitingException;
+import org.apache.geronimo.pool.ThreadPool;
/**
- *
- *
* @version $Revision$ $Date$
*/
public class CORBABean implements GBeanLifecycle {
@@ -69,6 +68,7 @@
private final Log log = LogFactory.getLog(CORBABean.class);
private final ClassLoader classLoader;
+ private final ThreadPool threadPool;
private ORB orb;
private POA rootPOA;
private ArrayList args = new ArrayList();
@@ -76,10 +76,12 @@
public CORBABean() {
this.classLoader = null;
+ this.threadPool = null;
}
- public CORBABean(ClassLoader classLoader) {
+ public CORBABean(ClassLoader classLoader, ThreadPool threadPool) {
this.classLoader = classLoader;
+ this.threadPool = threadPool;
}
public ORB getORB() {
@@ -118,8 +120,11 @@
rootPOA = POAHelper.narrow(obj);
-// obj = orb.resolve_initial_references("NameService");
-// NamingContextExt initial_context =
NamingContextExtHelper.narrow(obj);
+ threadPool.execute(new Runnable() {
+ public void run() {
+ orb.run();
+ }
+ });
} finally {
Thread.currentThread().setContextClassLoader(savedLoader);
}
@@ -128,6 +133,7 @@
}
public void doStop() throws WaitingException, Exception {
+ orb.shutdown(true);
log.info("Stopped CORBABean");
}
@@ -141,12 +147,13 @@
GBeanInfoBuilder infoFactory = new GBeanInfoBuilder(CORBABean.class);
infoFactory.addAttribute("classLoader", ClassLoader.class, false);
+ infoFactory.addReference("ThreadPool", ThreadPool.class);
infoFactory.addAttribute("ORB", ORB.class, false);
- infoFactory.addAttribute("RootPOA", POA.class, false);
- infoFactory.addAttribute("Args", ArrayList.class, true);
- infoFactory.addAttribute("Props", Properties.class, true);
+ infoFactory.addAttribute("rootPOA", POA.class, false);
+ infoFactory.addAttribute("args", ArrayList.class, true);
+ infoFactory.addAttribute("props", Properties.class, true);
- infoFactory.setConstructor(new String[]{"classLoader"});
+ infoFactory.setConstructor(new String[]{"classLoader",
"ThreadPool"});
GBEAN_INFO = infoFactory.getBeanInfo();
}
1.2 +99 -39
openejb/modules/core/src/java/org/openejb/corba/POABean.java
Index: POABean.java
===================================================================
RCS file:
/scm/openejb/openejb/modules/core/src/java/org/openejb/corba/POABean.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- POABean.java 5 Nov 2004 23:46:13 -0000 1.1
+++ POABean.java 13 Jan 2005 17:00:22 -0000 1.2
@@ -38,7 +38,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * Copyright 2001 (C) The OpenEJB Group. All Rights Reserved.
+ * Copyright 2004-2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id$
*/
@@ -53,6 +53,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.omg.CORBA.Policy;
+import org.omg.CosNaming.NamingContextExt;
+import org.omg.CosNaming.NamingContextExtHelper;
import org.omg.PortableServer.IdAssignmentPolicyValue;
import org.omg.PortableServer.ImplicitActivationPolicyValue;
import org.omg.PortableServer.LifespanPolicyValue;
@@ -69,6 +71,8 @@
import org.apache.geronimo.gbean.WaitingException;
import org.openejb.EJBContainer;
+import org.openejb.corba.util.TieLoader;
+import org.openejb.corba.util.UtilDelegateImpl;
/**
@@ -78,29 +82,34 @@
private final Log log = LogFactory.getLog(POABean.class);
- private CORBABean server;
+ private final ClassLoader classLoader;
+ private final String POAName;
+ private final CORBABean server;
+ private final TieLoader tieLoader;
private POA localPOA;
- private String POAName;
+ private NamingContextExt initialContext;
private Collection containers = Collections.EMPTY_SET;
private Map adapters = new HashMap();
+ private static final Map containerMap = new HashMap();
- public CORBABean getServer() {
- return server;
+ public POABean(ClassLoader classLoader, String POAName, CORBABean
server, TieLoader tieLoader) {
+ this.classLoader = classLoader;
+ this.POAName = POAName;
+ this.server = server;
+ this.tieLoader = tieLoader;
+
+ UtilDelegateImpl.setTieLoader(tieLoader);
}
- public void setServer(CORBABean server) {
- this.server = server;
+ public CORBABean getServer() {
+ return server;
}
public String getPOAName() {
return POAName;
}
- public void setPOAName(String POAName) {
- this.POAName = POAName;
- }
-
public Collection getContainers() {
return containers;
}
@@ -112,25 +121,47 @@
this.containers = containers;
}
- public void doStart() throws WaitingException, Exception {
- POA rootPOA = server.getRootPOA();
+ public TieLoader getTieLoader() {
+ return tieLoader;
+ }
- Policy[] policies = new Policy[]{
- rootPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT),
-
rootPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY),
-
rootPOA.create_servant_retention_policy(ServantRetentionPolicyValue.RETAIN),
-
rootPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
-
rootPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
- };
- localPOA = rootPOA.create_POA(POAName, rootPOA.the_POAManager(),
policies);
-
- localPOA.the_POAManager().activate();
-
- Iterator iter = containers.iterator();
- while (iter.hasNext()) {
- EJBContainer container = (EJBContainer) iter.next();
+ public static EJBContainer getContainer(String containerId) {
+ return (EJBContainer) containerMap.get(containerId);
+ }
- adapters.put(container.getContainerID(), new
Adapter(server.getORB(), localPOA, container));
+ public void doStart() throws WaitingException, Exception {
+ ClassLoader savedLoader =
Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(classLoader);
+
+ POA rootPOA = server.getRootPOA();
+
+ Policy[] policies = new Policy[]{
+
rootPOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT),
+
rootPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY),
+
rootPOA.create_servant_retention_policy(ServantRetentionPolicyValue.RETAIN),
+
rootPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
+
rootPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
+ };
+ localPOA = rootPOA.create_POA(POAName, rootPOA.the_POAManager(),
policies);
+
+ localPOA.the_POAManager().activate();
+
+ org.omg.CORBA.Object obj =
server.getORB().resolve_initial_references("NameService");
+ initialContext = NamingContextExtHelper.narrow(obj);
+
+ for (Iterator iter = adapters.keySet().iterator();
iter.hasNext();) {
+ AdapterWrapper adapterWrapper = (AdapterWrapper)
adapters.get(iter.next());
+ try {
+ adapterWrapper.start(server.getORB(), localPOA,
initialContext, tieLoader);
+ log.info("Linked container " +
adapterWrapper.getContainer().getContainerID());
+ } catch (CORBAException e) {
+ log.error("Unable to link container " +
adapterWrapper.getContainer().getContainerID());
+ log.error(e);
+ }
+ }
+ } finally {
+ Thread.currentThread().setContextClassLoader(savedLoader);
}
log.info("Started POABean");
@@ -138,10 +169,17 @@
public void doStop() throws WaitingException, Exception {
if (localPOA != null) {
- Iterator iter = adapters.keySet().iterator();
- while (iter.hasNext()) {
- ((Adapter) adapters.remove(iter.next())).stop();
+ for (Iterator iter = adapters.keySet().iterator();
iter.hasNext();) {
+ AdapterWrapper adapterWrapper = (AdapterWrapper)
adapters.get(iter.next());
+ try {
+ adapterWrapper.stop();
+ log.info("Unlinked container " +
adapterWrapper.getContainer().getContainerID());
+ } catch (CORBAException e) {
+ log.error("Error unlinking container " +
adapterWrapper.getContainer().getContainerID());
+ log.error(e);
+ }
}
+ adapters.clear();
localPOA.the_POAManager().deactivate(true, true);
localPOA = null;
}
@@ -157,9 +195,12 @@
static {
GBeanInfoBuilder infoFactory = new GBeanInfoBuilder(POABean.class);
+ infoFactory.addAttribute("classLoader", ClassLoader.class, false);
infoFactory.addAttribute("POAName", String.class, true);
infoFactory.addReference("Server", CORBABean.class);
infoFactory.addReference("Containers", EJBContainer.class);
+ infoFactory.addReference("TieLoader", TieLoader.class);
+ infoFactory.setConstructor(new String[]{"classLoader", "POAName",
"Server", "TieLoader"});
GBEAN_INFO = infoFactory.getBeanInfo();
}
@@ -170,19 +211,38 @@
public void memberAdded(ReferenceCollectionEvent event) {
EJBContainer container = (EJBContainer) event.getMember();
+
+ containerMap.put(container.getContainerID(), container);
+
if (localPOA != null) {
- adapters.put(container.getContainerID(), new
Adapter(server.getORB(), localPOA, container));
+ try {
+ AdapterWrapper adapterWrapper = new
AdapterWrapper(container);
+
+ adapterWrapper.start(server.getORB(), localPOA,
initialContext, tieLoader);
+ adapters.put(container.getContainerID(), adapterWrapper);
+
+ log.info("Linked container " + container.getContainerID());
+ } catch (CORBAException e) {
+ log.error("Unable to link container " +
container.getContainerID());
+ log.error(e);
+ }
}
- log.info("Linked container " + container.getContainerID());
}
public void memberRemoved(ReferenceCollectionEvent event) {
EJBContainer container = (EJBContainer) event.getMember();
- Adapter adapter = (Adapter)
adapters.remove(container.getContainerID());
- if (adapter != null) {
- adapter.stop();
+ containerMap.remove(container.getContainerID());
+
+ AdapterWrapper adapterWrapper = (AdapterWrapper)
adapters.remove(container.getContainerID());
+ if (adapterWrapper != null) {
+ try {
+ adapterWrapper.stop();
+ log.info("Unlinked container " + container.getContainerID());
+ } catch (CORBAException e) {
+ log.error("Error unlinking container " +
container.getContainerID());
+ log.error(e);
+ }
}
- log.info("Unlinked container " + container.getContainerID());
}
}
1.1
openejb/modules/core/src/java/org/openejb/corba/AdapterEntity.java
Index: AdapterEntity.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.sf.net/).
*
* 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 2004-2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id: AdapterEntity.java,v 1.1 2005/01/13 17:00:22 maguro Exp $
*/
package org.openejb.corba;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.rmi.CORBA.Tie;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.omg.CORBA.LocalObject;
import org.omg.CORBA.OBJECT_NOT_EXIST;
import org.omg.CORBA.ORB;
import org.omg.CORBA.Policy;
import org.omg.PortableServer.IdAssignmentPolicyValue;
import org.omg.PortableServer.ImplicitActivationPolicyValue;
import org.omg.PortableServer.LifespanPolicyValue;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAManagerPackage.AdapterInactive;
import org.omg.PortableServer.RequestProcessingPolicyValue;
import org.omg.PortableServer.Servant;
import org.omg.PortableServer.ServantLocator;
import org.omg.PortableServer.ServantLocatorPackage.CookieHolder;
import org.omg.PortableServer.ServantRetentionPolicyValue;
import org.openejb.EJBContainer;
import org.openejb.corba.util.TieLoader;
import org.openejb.proxy.ProxyInfo;
/**
* @version $Revision: 1.1 $ $Date: 2005/01/13 17:00:22 $
*/
public final class AdapterEntity extends Adapter {
private final Log log = LogFactory.getLog(AdapterEntity.class);
private final POA poa;
private final String referenceInterface;
public AdapterEntity(EJBContainer container, ORB orb, POA parentPOA,
TieLoader tieLoader) throws CORBAException {
super(container, orb, parentPOA, tieLoader);
try {
Policy[] policies = new Policy[]{
parentPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT),
parentPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
parentPOA.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
parentPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
parentPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
};
poa = parentPOA.create_POA(container.getContainerID().toString(),
parentPOA.the_POAManager(), policies);
poa.set_servant_manager(new ObjectActivator());
poa.the_POAManager().activate();
Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
referenceInterface = servant._all_interfaces(null, null)[0];
} catch (Exception e) {
throw new CORBAException(e);
}
}
public POA getPOA() {
return poa;
}
public void stop() throws CORBAException {
try {
poa.the_POAManager().deactivate(true, true);
} catch (AdapterInactive e) {
throw new CORBAException(e);
}
}
public org.omg.CORBA.Object genObjectReference(ProxyInfo proxyInfo)
throws CORBAException {
byte[] bytes = null;
try {
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(b);
os.writeObject(proxyInfo.getPrimaryKey());
bytes = b.toByteArray();
os.close();
} catch (IOException e) {
log.error("Could not serialize deployment info for " + proxyInfo,
e);
throw new CORBAException(e);
}
return poa.create_reference_with_id(bytes, referenceInterface);
}
protected class ObjectActivator extends LocalObject implements
ServantLocator {
public Servant preinvoke(byte[] oid, POA poa, String operation,
CookieHolder cookie) {
// the byte array can be cached in a weak hash map for performance
Object pk = null;
try {
ObjectInputStream is = new ObjectInputStream(new
ByteArrayInputStream(oid));
pk = is.readObject();
is.close();
EJBContainer container = getContainer();
Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
if (servant instanceof Tie) {
((Tie)
servant).setTarget(container.getProxyFactory().getEJBObject(pk));
}
return servant;
} catch (IOException e) {
// if we can't deserialize, then this object can't exist in
this process
throw new OBJECT_NOT_EXIST(0,
org.omg.CORBA.CompletionStatus.COMPLETED_NO);
} catch (Exception e) {
log.error("Exception during dispatch to method " + operation
+ " in bean " + pk, e);
return null;
}
}
public void postinvoke(byte[] oid, POA poa, String operation, Object
cookie, Servant servant) {
}
}
}
1.1
openejb/modules/core/src/java/org/openejb/corba/AdapterStateful.java
Index: AdapterStateful.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.sf.net/).
*
* 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 2004-2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id: AdapterStateful.java,v 1.1 2005/01/13 17:00:22 maguro Exp $
*/
package org.openejb.corba;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.rmi.CORBA.Tie;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.omg.CORBA.LocalObject;
import org.omg.CORBA.OBJECT_NOT_EXIST;
import org.omg.CORBA.ORB;
import org.omg.CORBA.Policy;
import org.omg.PortableServer.IdAssignmentPolicyValue;
import org.omg.PortableServer.ImplicitActivationPolicyValue;
import org.omg.PortableServer.LifespanPolicyValue;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAManagerPackage.AdapterInactive;
import org.omg.PortableServer.RequestProcessingPolicyValue;
import org.omg.PortableServer.Servant;
import org.omg.PortableServer.ServantLocator;
import org.omg.PortableServer.ServantLocatorPackage.CookieHolder;
import org.omg.PortableServer.ServantRetentionPolicyValue;
import org.openejb.EJBContainer;
import org.openejb.corba.util.TieLoader;
import org.openejb.proxy.ProxyInfo;
/**
* @version $Revision: 1.1 $ $Date: 2005/01/13 17:00:22 $
*/
public class AdapterStateful extends Adapter {
private final Log log = LogFactory.getLog(AdapterStateful.class);
private final POA poa;
private final String referenceInterface;
public AdapterStateful(EJBContainer container, ORB orb, POA parentPOA,
TieLoader tieLoader) throws CORBAException {
super(container, orb, parentPOA, tieLoader);
try {
Policy[] policies = new Policy[]{
parentPOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT),
parentPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
parentPOA.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
parentPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
parentPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
};
poa = parentPOA.create_POA(container.getContainerID().toString(),
parentPOA.the_POAManager(), policies);
poa.set_servant_manager(new ObjectActivator());
poa.the_POAManager().activate();
Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
referenceInterface = servant._all_interfaces(null, null)[0];
} catch (Exception e) {
throw new CORBAException(e);
}
}
public POA getPOA() {
return poa;
}
public void stop() throws CORBAException {
try {
poa.the_POAManager().deactivate(true, true);
} catch (AdapterInactive e) {
throw new CORBAException(e);
}
}
public org.omg.CORBA.Object genObjectReference(ProxyInfo proxyInfo)
throws CORBAException {
byte[] bytes = null;
try {
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(b);
os.writeObject(proxyInfo.getPrimaryKey());
bytes = b.toByteArray();
os.close();
} catch (IOException e) {
log.error("Could not serialize deployment info for " + proxyInfo,
e);
throw new CORBAException(e);
}
return poa.create_reference_with_id(bytes, referenceInterface);
}
protected class ObjectActivator extends LocalObject implements
ServantLocator {
public Servant preinvoke(byte[] oid, POA poa, String operation,
CookieHolder cookie) {
// the byte array can be cached in a weak hash map for performance
Object pk = null;
try {
ObjectInputStream is = new ObjectInputStream(new
ByteArrayInputStream(oid));
pk = is.readObject();
is.close();
EJBContainer container = getContainer();
Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
if (servant instanceof Tie) {
((Tie)
servant).setTarget(container.getProxyFactory().getEJBObject(pk));
}
return servant;
} catch (IOException e) {
// if we can't deserialize, then this object can't exist in
this process
throw new OBJECT_NOT_EXIST(0,
org.omg.CORBA.CompletionStatus.COMPLETED_NO);
} catch (Exception e) {
log.error("Exception during dispatch to method " + operation
+ " in bean " + pk, e);
return null;
}
}
public void postinvoke(byte[] oid, POA poa, String operation, Object
cookie, Servant servant) {
}
}
}
1.1
openejb/modules/core/src/java/org/openejb/corba/AdapterStateless.java
Index: AdapterStateless.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.sf.net/).
*
* 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 2004-2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id: AdapterStateless.java,v 1.1 2005/01/13 17:00:22 maguro Exp $
*/
package org.openejb.corba;
import java.rmi.Remote;
import javax.rmi.CORBA.Tie;
import org.omg.CORBA.ORB;
import org.omg.CORBA.Policy;
import org.omg.PortableServer.IdAssignmentPolicyValue;
import org.omg.PortableServer.ImplicitActivationPolicyValue;
import org.omg.PortableServer.LifespanPolicyValue;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAManagerPackage.AdapterInactive;
import org.omg.PortableServer.RequestProcessingPolicyValue;
import org.omg.PortableServer.Servant;
import org.omg.PortableServer.ServantRetentionPolicyValue;
import org.openejb.EJBContainer;
import org.openejb.corba.util.TieLoader;
import org.openejb.proxy.ProxyInfo;
/**
* @version $Revision: 1.1 $ $Date: 2005/01/13 17:00:22 $
*/
public final class AdapterStateless extends Adapter {
private POA poa;
private org.omg.CORBA.Object objectReference;
public AdapterStateless(EJBContainer container, ORB orb, POA parentPOA,
TieLoader tieLoader) throws CORBAException {
super(container, orb, parentPOA, tieLoader);
try {
Policy[] policies = new Policy[]{
parentPOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT),
parentPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY),
parentPOA.create_servant_retention_policy(ServantRetentionPolicyValue.RETAIN),
parentPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
parentPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
};
poa = parentPOA.create_POA(container.getContainerID().toString(),
parentPOA.the_POAManager(), policies);
poa.the_POAManager().activate();
Servant servant =
tieLoader.loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
Remote obj = container.getProxyFactory().getEJBObject(null);
if (servant instanceof Tie) {
((Tie) servant).setTarget(obj);
}
poa.activate_object_with_id(container.getContainerID().toString().getBytes(),
servant);
objectReference = poa.servant_to_reference(servant);
} catch (Exception e) {
throw new CORBAException(e);
}
}
public void stop() throws CORBAException {
try {
poa.the_POAManager().deactivate(true, true);
} catch (AdapterInactive e) {
throw new CORBAException(e);
}
}
public org.omg.CORBA.Object genObjectReference(ProxyInfo proxyInfo) {
return objectReference;
}
}
1.1
openejb/modules/core/src/java/org/openejb/corba/AdapterWrapper.java
Index: AdapterWrapper.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.sf.net/).
*
* 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 2004-2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id: AdapterWrapper.java,v 1.1 2005/01/13 17:00:22 maguro Exp $
*/
package org.openejb.corba;
import java.util.HashMap;
import java.util.Map;
import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.PortableServer.POA;
import org.openejb.EJBComponentType;
import org.openejb.EJBContainer;
import org.openejb.corba.util.TieLoader;
/**
* @version $Revision: 1.1 $ $Date: 2005/01/13 17:00:22 $
*/
public final class AdapterWrapper {
private final static Map adapters = new HashMap();
private final EJBContainer container;
private Adapter generator;
public AdapterWrapper(EJBContainer container) {
this.container = container;
}
public EJBContainer getContainer() {
return container;
}
public void start(ORB orb, POA poa, NamingContextExt initialContext,
TieLoader tieLoader) throws CORBAException {
switch (container.getProxyInfo().getComponentType()) {
case EJBComponentType.STATELESS:
generator = new AdapterStateless(container, orb, poa,
tieLoader);
break;
case EJBComponentType.STATEFUL:
generator = new AdapterStateful(container, orb, poa,
tieLoader);
break;
case EJBComponentType.BMP_ENTITY:
case EJBComponentType.CMP_ENTITY:
generator = new AdapterEntity(container, orb, poa, tieLoader);
break;
default:
throw new CORBAException("CORBA Adapter does not handle MDB
containers");
}
adapters.put(container.getContainerID(), generator);
}
public void stop() throws CORBAException {
generator.stop();
adapters.remove(container.getContainerID());
}
public static RefGenerator getRefGenerator(String containerId) {
return (RefGenerator) adapters.get(containerId);
}
}
1.1
openejb/modules/core/src/java/org/openejb/corba/CORBAException.java
Index: CORBAException.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.sf.net/).
*
* 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 2004-2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id: CORBAException.java,v 1.1 2005/01/13 17:00:22 maguro Exp $
*/
package org.openejb.corba;
/**
* @version $Revision: 1.1 $ $Date: 2005/01/13 17:00:22 $
*/
public class CORBAException extends Exception {
public CORBAException() {
super();
}
public CORBAException(String message) {
super(message);
}
public CORBAException(String message, Throwable cause) {
super(message, cause);
}
public CORBAException(Throwable cause) {
super(cause);
}
}
1.1
openejb/modules/core/src/java/org/openejb/corba/OpenORBNameBean.java
Index: OpenORBNameBean.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.sf.net/).
*
* 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: OpenORBNameBean.java,v 1.1 2005/01/13 17:00:22 maguro Exp $
*/
package org.openejb.corba;
import java.util.ArrayList;
import java.util.Properties;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openorb.ins.Server;
import org.openorb.ins.Service;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.gbean.WaitingException;
import org.apache.geronimo.pool.ThreadPool;
/**
* @version $Revision: 1.1 $ $Date: 2005/01/13 17:00:22 $
*/
public class OpenORBNameBean implements GBeanLifecycle {
private final Log log = LogFactory.getLog(OpenORBNameBean.class);
private final ClassLoader classLoader;
private final Server server;
private final ThreadPool threadPool;
private ArrayList args = new ArrayList();
private Properties props = new Properties();
public OpenORBNameBean() {
this.classLoader = null;
this.server = null;
this.threadPool = null;
this.args = null;
this.props = null;
}
public OpenORBNameBean(ClassLoader classLoader, ThreadPool threadPool,
ArrayList args, Properties props) {
this.server = new Server();
this.classLoader = classLoader;
this.threadPool = threadPool;
this.args = args;
this.props = props;
ClassLoader savedLoader =
Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
Options options = new Options();
// persistenceType
options.addOption(OptionBuilder.withArgName(Service.OPT_PERSISTENCE_ARG_NAME)
.hasArg()
.withDescription(Service.OPT_PERSISTENCE_DESCRIP)
.withLongOpt(Service.OPT_PERSISTENCE_LONG)
.create(Service.OPT_PERSISTENCE));
// shutdown
options.addOption(new Option(Service.OPT_SHUTDOWN_ROOT,
Service.OPT_SHUTDOWN_ROOT_LONG,
false,
Service.OPT_SHUTDOWN_ROOT_DESCRIP));
// make sure to import the pss config
props.put("ImportModule.pss",
"${openorb.home}config/pss.xml#pss");
server.init((String[]) args.toArray(new String[args.size()]),
options, props);
} finally {
Thread.currentThread().setContextClassLoader(savedLoader);
}
}
public ArrayList getArgs() {
return args;
}
public Properties getProps() {
return props;
}
public void doStart() throws WaitingException, Exception {
threadPool.execute(new Runnable() {
public void run() {
Thread.currentThread().setContextClassLoader(classLoader);
server.run();
}
});
log.info("Started OpenORBNameBean");
}
public void doStop() throws WaitingException, Exception {
server.getORB().shutdown(true);
log.info("Stopped OpenORBNameBean");
}
public void doFail() {
log.info("Failed OpenORBNameBean");
}
public static final GBeanInfo GBEAN_INFO;
static {
GBeanInfoBuilder infoFactory = new
GBeanInfoBuilder(OpenORBNameBean.class);
infoFactory.addAttribute("classLoader", ClassLoader.class, false);
infoFactory.addReference("ThreadPool", ThreadPool.class);
infoFactory.addAttribute("args", ArrayList.class, true);
infoFactory.addAttribute("props", Properties.class, true);
infoFactory.setConstructor(new String[]{"classLoader", "ThreadPool",
"args", "props"});
GBEAN_INFO = infoFactory.getBeanInfo();
}
public static GBeanInfo getGBeanInfo() {
return GBEAN_INFO;
}
}
1.1
openejb/modules/core/src/java/org/openejb/corba/RefGenerator.java
Index: RefGenerator.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.sf.net/).
*
* 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 2004-2005 (C) The OpenEJB Group. All Rights Reserved.
*
* $Id: RefGenerator.java,v 1.1 2005/01/13 17:00:22 maguro Exp $
*/
package org.openejb.corba;
import org.openejb.proxy.ProxyInfo;
/**
* @version $Revision: 1.1 $ $Date: 2005/01/13 17:00:22 $
*/
public interface RefGenerator {
public org.omg.CORBA.Object genHomeReference(ProxyInfo proxyInfo) throws
CORBAException;
public org.omg.CORBA.Object genObjectReference(ProxyInfo proxyInfo)
throws CORBAException;
}