maguro 2005/03/07 23:08:26
Modified: modules/core/src/java/org/openejb/corba Adapter.java
AdapterDelegate.java AdapterEntity.java
AdapterStateful.java AdapterStateless.java
CORBABean.java TSSBean.java
Added: modules/core/src/java/org/openejb/corba CORBAHandle.java
CORBAHomeHandle.java CSSBean.java
Log:
Intermediate CORBA checkin.
Revision Changes Path
1.6 +6 -3
openejb/modules/core/src/java/org/openejb/corba/Adapter.java
Index: Adapter.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/Adapter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Adapter.java 2 Mar 2005 06:14:37 -0000 1.5
+++ Adapter.java 8 Mar 2005 04:08:26 -0000 1.6
@@ -46,6 +46,7 @@
import java.rmi.Remote;
import javax.rmi.CORBA.Tie;
+import javax.rmi.CORBA.Util;
import org.omg.CORBA.ORB;
import org.omg.CosNaming.NameComponent;
@@ -85,13 +86,15 @@
org.omg.CORBA.Object obj =
orb.resolve_initial_references("NameService");
initialContext = NamingContextExtHelper.narrow(obj);
- Servant servant =
tieLoader.loadTieClass(container.getProxyInfo().getHomeInterface(),
container.getProxyInfo());
+
+ Servant servant =
tieLoader.loadTieClass(container.getProxyInfo().getHomeInterface(),
container.getClassLoader());
AdapterProxyFactory factory = new
AdapterProxyFactory(container.getProxyInfo().getHomeInterface(),
container.getClassLoader());
Remote remote = (Remote) factory.create(container.getEJBHome());
if (servant instanceof Tie) {
((Tie) servant).setTarget(remote);
}
+
parentPOA.activate_object_with_id(home_id, servant);
homeReference = parentPOA.servant_to_reference(servant);
1.2 +4 -2
openejb/modules/core/src/java/org/openejb/corba/AdapterDelegate.java
Index: AdapterDelegate.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterDelegate.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AdapterDelegate.java 2 Mar 2005 05:23:10 -0000 1.1
+++ AdapterDelegate.java 8 Mar 2005 04:08:26 -0000 1.2
@@ -61,4 +61,6 @@
final public Remote getDelegate() {
return delegate;
}
+
+ public void finalize() throws Throwable { }
}
1.5 +4 -4
openejb/modules/core/src/java/org/openejb/corba/AdapterEntity.java
Index: AdapterEntity.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterEntity.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AdapterEntity.java 2 Mar 2005 05:23:10 -0000 1.4
+++ AdapterEntity.java 8 Mar 2005 04:08:26 -0000 1.5
@@ -100,7 +100,7 @@
poa.the_POAManager().activate();
- Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
+ Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
referenceInterface = servant._all_interfaces(null, null)[0];
factory = new
AdapterProxyFactory(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
@@ -148,7 +148,7 @@
is.close();
EJBContainer container = getContainer();
- Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
+ Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
Remote remote = (Remote)
factory.create(container.getEJBObject(pk));
if (servant instanceof Tie) {
1.5 +4 -4
openejb/modules/core/src/java/org/openejb/corba/AdapterStateful.java
Index: AdapterStateful.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterStateful.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AdapterStateful.java 2 Mar 2005 05:23:10 -0000 1.4
+++ AdapterStateful.java 8 Mar 2005 04:08:26 -0000 1.5
@@ -100,7 +100,7 @@
poa.the_POAManager().activate();
- Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
+ Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
referenceInterface = servant._all_interfaces(null, null)[0];
factory = new
AdapterProxyFactory(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
@@ -148,7 +148,7 @@
is.close();
EJBContainer container = getContainer();
- Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
+ Servant servant =
getTieLoader().loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
Remote remote = (Remote)
factory.create(container.getEJBObject(pk));
if (servant instanceof Tie) {
1.5 +4 -3
openejb/modules/core/src/java/org/openejb/corba/AdapterStateless.java
Index: AdapterStateless.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterStateless.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AdapterStateless.java 2 Mar 2005 05:23:10 -0000 1.4
+++ AdapterStateless.java 8 Mar 2005 04:08:26 -0000 1.5
@@ -49,6 +49,7 @@
import org.omg.CORBA.ORB;
import org.omg.CORBA.Policy;
+import org.omg.CORBA.SetOverrideType;
import org.omg.PortableServer.IdAssignmentPolicyValue;
import org.omg.PortableServer.ImplicitActivationPolicyValue;
import org.omg.PortableServer.LifespanPolicyValue;
@@ -88,7 +89,7 @@
poa.the_POAManager().activate();
- Servant servant =
tieLoader.loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getProxyInfo());
+ Servant servant =
tieLoader.loadTieClass(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
AdapterProxyFactory factory = new
AdapterProxyFactory(container.getProxyInfo().getRemoteInterface(),
container.getClassLoader());
Remote remote = (Remote)
factory.create(container.getEJBObject(null));
1.6 +27 -7
openejb/modules/core/src/java/org/openejb/corba/CORBABean.java
Index: CORBABean.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/CORBABean.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- CORBABean.java 6 Mar 2005 02:49:24 -0000 1.5
+++ CORBABean.java 8 Mar 2005 04:08:26 -0000 1.6
@@ -47,6 +47,7 @@
import java.util.ArrayList;
import java.util.Properties;
+import EDU.oswego.cs.dl.util.concurrent.Executor;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.omg.CORBA.ORB;
@@ -56,9 +57,10 @@
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
-import org.apache.geronimo.pool.ThreadPool;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
-import EDU.oswego.cs.dl.util.concurrent.Executor;
+
+import org.openejb.corba.security.config.ConfigAdapter;
+import org.openejb.corba.security.config.tss.TSSConfig;
/**
@@ -70,6 +72,8 @@
private final ClassLoader classLoader;
private final Executor threadPool;
+ private final ConfigAdapter configAdapter;
+ private TSSConfig tssConfig;
private ORB orb;
private POA rootPOA;
private ArrayList args = new ArrayList();
@@ -78,11 +82,22 @@
public CORBABean() {
this.classLoader = null;
this.threadPool = null;
+ this.configAdapter = null;
}
- public CORBABean(ClassLoader classLoader, Executor threadPool) {
+ public CORBABean(ClassLoader classLoader, Executor threadPool, String
configAdapter) throws ClassNotFoundException, IllegalAccessException,
InstantiationException {
this.classLoader = classLoader;
this.threadPool = threadPool;
+ this.configAdapter = (ConfigAdapter)
classLoader.loadClass(configAdapter).newInstance();
+ }
+
+ public TSSConfig getTssConfig() {
+ return tssConfig;
+ }
+
+ public void setTssConfig(TSSConfig config) {
+ if (config == null) config = new TSSConfig();
+ this.tssConfig = config;
}
public ORB getORB() {
@@ -115,7 +130,10 @@
try {
Thread.currentThread().setContextClassLoader(classLoader);
- orb = ORB.init((String[]) args.toArray(new String[args.size()]),
props);
+ Properties properties =
configAdapter.translateToProps(tssConfig);
+ properties.putAll(props);
+
+ orb = ORB.init((String[]) args.toArray(new String[args.size()]),
properties);
org.omg.CORBA.Object obj =
orb.resolve_initial_references("RootPOA");
@@ -149,12 +167,14 @@
infoFactory.addAttribute("classLoader", ClassLoader.class, false);
infoFactory.addReference("ThreadPool", Executor.class,
NameFactory.GERONIMO_SERVICE);
+ infoFactory.addAttribute("configAdapter", String.class, true);
+ infoFactory.addAttribute("tssConfig", TSSConfig.class, true);
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.setConstructor(new String[]{"classLoader",
"ThreadPool"});
+ infoFactory.setConstructor(new String[]{"classLoader", "ThreadPool",
"configAdapter"});
GBEAN_INFO = infoFactory.getBeanInfo();
}
1.3 +45 -8
openejb/modules/core/src/java/org/openejb/corba/TSSBean.java
Index: TSSBean.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/TSSBean.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TSSBean.java 6 Mar 2005 02:49:24 -0000 1.2
+++ TSSBean.java 8 Mar 2005 04:08:26 -0000 1.3
@@ -52,6 +52,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
import org.omg.CORBA.Policy;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
@@ -71,8 +73,10 @@
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.openejb.EJBContainer;
+import org.openejb.corba.security.ServerPolicyFactory;
+import org.openejb.corba.security.config.tss.TSSConfig;
+import org.openejb.corba.security.config.tss.TSSNULLTransportConfig;
import org.openejb.corba.util.TieLoader;
-import org.openejb.corba.util.UtilDelegateImpl;
/**
@@ -88,6 +92,7 @@
private final TieLoader tieLoader;
private POA localPOA;
private NamingContextExt initialContext;
+ private TSSConfig tssConfig;
private Collection containers = Collections.EMPTY_SET;
private Map adapters = new HashMap();
private static final Map containerMap = new HashMap();
@@ -98,8 +103,6 @@
this.POAName = POAName;
this.server = server;
this.tieLoader = tieLoader;
-
- UtilDelegateImpl.setTieLoader(tieLoader);
}
public CORBABean getServer() {
@@ -110,6 +113,15 @@
return POAName;
}
+ public TSSConfig getTssConfig() {
+ return tssConfig;
+ }
+
+ public void setTssConfig(TSSConfig tssConfig) {
+ if (tssConfig == null) tssConfig = new TSSConfig();
+ this.tssConfig = tssConfig;
+ }
+
public Collection getContainers() {
return containers;
}
@@ -134,9 +146,14 @@
try {
Thread.currentThread().setContextClassLoader(classLoader);
+ ORB orb = server.getORB();
POA rootPOA = server.getRootPOA();
+ Any any = orb.create_any();
+ any.insert_Value(createCSIv2Config());
+
Policy[] policies = new Policy[]{
+ orb.create_policy(ServerPolicyFactory.POLICY_TYPE, any),
rootPOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT),
rootPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY),
rootPOA.create_servant_retention_policy(ServantRetentionPolicyValue.RETAIN),
@@ -164,7 +181,7 @@
Thread.currentThread().setContextClassLoader(savedLoader);
}
- log.info("Started CORBA Target Security Server in POA " + POAName);
+ log.info("Started CORBA Target Security Service in POA " + POAName);
}
public void doStop() throws Exception {
@@ -183,11 +200,30 @@
localPOA.the_POAManager().deactivate(true, true);
localPOA = null;
}
- log.info("Stopped CORBA Target Security Server in POA " + POAName);
+ log.info("Stopped CORBA Target Security Service in POA " + POAName);
}
public void doFail() {
- log.info("Failed CORBA Target Security Server in POA " + POAName);
+ log.info("Failed CORBA Target Security Service in POA " + POAName);
+ }
+
+ private TSSConfig createCSIv2Config() {
+ if (tssConfig == null) return null;
+ if (tssConfig.isInherit()) return server.getTssConfig();
+
+ TSSConfig config = new TSSConfig();
+
+ if (server.getTssConfig() != null)
+
config.setTransport_mech(server.getTssConfig().getTransport_mech());
+ else
+ config.setTransport_mech(new TSSNULLTransportConfig());
+
+
config.getMechListConfig().setStateful(tssConfig.getMechListConfig().isStateful());
+ for (int i = 0; i < tssConfig.getMechListConfig().size(); i++) {
+
config.getMechListConfig().add(tssConfig.getMechListConfig().mechAt(i));
+ }
+
+ return config;
}
public static final GBeanInfo GBEAN_INFO;
@@ -198,6 +234,7 @@
infoFactory.addAttribute("classLoader", ClassLoader.class, false);
infoFactory.addAttribute("POAName", String.class, true);
infoFactory.addReference("Server", CORBABean.class,
NameFactory.GERONIMO_SERVICE);
+ infoFactory.addAttribute("tssConfig", TSSConfig.class, true);
infoFactory.addReference("Containers", EJBContainer.class);//many
types
infoFactory.addReference("TieLoader", TieLoader.class,
NameFactory.GERONIMO_SERVICE);
infoFactory.setConstructor(new String[]{"classLoader", "POAName",
"Server", "TieLoader"});
1.1
openejb/modules/core/src/java/org/openejb/corba/CORBAHandle.java
Index: CORBAHandle.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: CORBAHandle.java,v 1.1 2005/03/08 04:08:26 maguro Exp $
*/
package org.openejb.corba;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
import javax.ejb.Handle;
import javax.ejb.spi.HandleDelegate;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import org.openejb.corba.util.Util;
/**
* EJB v2.1 spec, section 19.5.5.1
* <p/>
* The <code>javax.ejb.spi.HandleDelegate</code> service provider interface
* defines methods that enable portable implementations of <code>Handle</code>
* and <code>HomeHandle</code> that are instantiated in a different vendor’s
* container to serialize and deserialize EJBObject and EJBHome references.
* The <code>HandleDelegate</code> interface is not used by enterprise beans
* or J2EE application components directly.
*
* @version $Revision: 1.1 $ $Date: 2005/03/08 04:08:26 $
*/
public class CORBAHandle implements Handle, Serializable {
private String ior;
public CORBAHandle(String ior) {
this.ior = ior;
}
public EJBObject getEJBObject() throws RemoteException {
try {
return (EJBObject)
PortableRemoteObject.narrow(Util.getORB().string_to_object(ior),
EJBObject.class);
} catch (Exception e) {
throw new RemoteException("Unable to convert IOR into object", e);
}
}
private void writeObject(ObjectOutputStream out) throws IOException {
HandleDelegate handleDelegate;
try {
handleDelegate = Util.getHandleDelegate();
} catch (NamingException e) {
throw new IOException("Unable to lookup
java:comp/HandleDelegate");
}
handleDelegate.writeEJBObject(getEJBObject(), out);
}
private void readObject(ObjectInputStream in) throws IOException,
ClassNotFoundException {
HandleDelegate handleDelegate;
try {
handleDelegate = Util.getHandleDelegate();
} catch (NamingException e) {
throw new IOException("Unable to lookup
java:comp/HandleDelegate");
}
EJBObject obj = handleDelegate.readEJBObject(in);
try {
ior = Util.getORB().object_to_string((org.omg.CORBA.Object) obj);
} catch (Exception e) {
throw new RemoteException("Unable to convert object to IOR", e);
}
}
}
1.1
openejb/modules/core/src/java/org/openejb/corba/CORBAHomeHandle.java
Index: CORBAHomeHandle.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: CORBAHomeHandle.java,v 1.1 2005/03/08 04:08:26 maguro Exp $
*/
package org.openejb.corba;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.EJBHome;
import javax.ejb.HomeHandle;
import javax.ejb.spi.HandleDelegate;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import org.openejb.corba.util.Util;
/**
* EJB v2.1 spec, section 19.5.5.1
* <p/>
* The <code>javax.ejb.spi.HandleDelegate</code> service provider interface
* defines methods that enable portable implementations of <code>Handle</code>
* and <code>HomeHandle</code> that are instantiated in a different vendor’s
* container to serialize and deserialize EJBObject and EJBHome references.
* The <code>HandleDelegate</code> interface is not used by enterprise beans
* or J2EE application components directly.
*
* @version $Revision: 1.1 $ $Date: 2005/03/08 04:08:26 $
*/
public class CORBAHomeHandle implements HomeHandle, Serializable {
private String ior;
public CORBAHomeHandle(String ior) {
this.ior = ior;
}
public EJBHome getEJBHome() throws RemoteException {
try {
return (EJBHome)
PortableRemoteObject.narrow(Util.getORB().string_to_object(ior), EJBHome.class);
} catch (Exception e) {
throw new RemoteException("Unable to convert IOR into home", e);
}
}
private void writeObject(ObjectOutputStream out) throws IOException {
HandleDelegate handleDelegate;
try {
handleDelegate = Util.getHandleDelegate();
} catch (NamingException e) {
throw new IOException("Unable to lookup
java:comp/HandleDelegate");
}
handleDelegate.writeEJBHome(getEJBHome(), out);
}
private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException {
HandleDelegate handleDelegate;
try {
handleDelegate = Util.getHandleDelegate();
} catch (NamingException e) {
throw new IOException("Cannot get HandleDelegate");
}
EJBHome home = handleDelegate.readEJBHome(in);
try {
ior = Util.getORB().object_to_string((org.omg.CORBA.Object) home);
} catch (Exception e) {
throw new RemoteException("Unable to convert object to IOR", e);
}
}
}
1.1
openejb/modules/core/src/java/org/openejb/corba/CSSBean.java
Index: CSSBean.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: CSSBean.java,v 1.1 2005/03/08 04:08:26 maguro Exp $
*/
package org.openejb.corba;
import java.net.URI;
import java.util.ArrayList;
import java.util.Properties;
import EDU.oswego.cs.dl.util.concurrent.Executor;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.omg.CORBA.ORB;
import org.omg.CORBA.UserException;
import org.omg.CosNaming.NameComponent;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.openejb.corba.security.config.ConfigAdapter;
import org.openejb.corba.security.config.css.CSSConfig;
/**
* @version $Revision: 1.1 $ $Date: 2005/03/08 04:08:26 $
*/
public class CSSBean implements GBeanLifecycle {
private final Log log = LogFactory.getLog(CSSBean.class);
private final ClassLoader classLoader;
private final Executor threadPool;
private final ConfigAdapter configAdapter;
private String description;
private CSSConfig nssConfig;
private CSSConfig cssConfig;
private ORB nssORB;
private ORB cssORB;
private ArrayList nssArgs;
private ArrayList cssArgs;
private Properties nssProps;
private Properties cssProps;
public CSSBean() {
this.classLoader = null;
this.threadPool = null;
this.configAdapter = null;
}
public CSSBean(ClassLoader classLoader, Executor threadPool, String
configAdapter) throws ClassNotFoundException, IllegalAccessException,
InstantiationException {
this.classLoader = classLoader;
this.threadPool = threadPool;
log.info("LOADING - " + configAdapter);
try {
this.configAdapter = (ConfigAdapter)
classLoader.loadClass(configAdapter).newInstance();
} catch (InstantiationException e) {
log.info("ERROR - " , e);
throw e;
} catch (IllegalAccessException e) {
log.info("ERROR - " , e);
throw e;
} catch (ClassNotFoundException e) {
log.info("ERROR - " , e);
throw e;
}
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public CSSConfig getNssConfig() {
return nssConfig;
}
public void setNssConfig(CSSConfig nssConfig) {
this.nssConfig = nssConfig;
}
public CSSConfig getCssConfig() {
return cssConfig;
}
public void setCssConfig(CSSConfig config) {
if (config == null) config = new CSSConfig();
this.cssConfig = config;
}
public ORB getORB() {
return cssORB;
}
public ArrayList getNssArgs() {
return nssArgs;
}
public void setNssArgs(ArrayList nssArgs) {
if (nssArgs == null) nssArgs = new ArrayList();
this.nssArgs = nssArgs;
}
public ArrayList getCssArgs() {
return cssArgs;
}
public void setCssArgs(ArrayList cssArgs) {
if (cssArgs == null) cssArgs = new ArrayList();
this.cssArgs = cssArgs;
}
public Properties getNssProps() {
return nssProps;
}
public void setNssProps(Properties nssProps) {
if (nssProps == null) nssProps = new Properties();
this.nssProps = nssProps;
}
public Properties getCssProps() {
return cssProps;
}
public void setCssProps(Properties cssProps) {
if (cssProps == null) cssProps = new Properties();
this.cssProps = cssProps;
}
public org.omg.CORBA.Object getHome(URI nsURI, String name) {
try {
org.omg.CORBA.Object ref =
nssORB.string_to_object(nsURI.toString());
NamingContextExt ic = NamingContextExtHelper.narrow(ref);
NameComponent[] nameComponent = ic.to_name(name);
org.omg.CORBA.Object bean = ic.resolve(nameComponent);
String beanIOR = nssORB.object_to_string(bean);
return cssORB.string_to_object(beanIOR);
} catch (UserException ue) {
// do nothing
}
return null;
}
public void doStart() throws Exception {
log.info("Starting CORBA Client Security Server - " + description);
if (nssConfig == null) nssConfig = cssConfig;
if (nssArgs == null) nssArgs = cssArgs;
ClassLoader savedLoader =
Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
Properties properties = configAdapter.translateToProps(nssConfig);
properties.putAll(nssProps);
log.info("S1 CORBA Client Security Server - " + description);
nssORB = ORB.init((String[]) nssArgs.toArray(new
String[nssArgs.size()]), properties);
log.info("S2 CORBA Client Security Server - " + description);
threadPool.execute(new Runnable() {
public void run() {
nssORB.run();
}
});
log.info("S3 CORBA Client Security Server - " + description);
properties = configAdapter.translateToProps(cssConfig);
properties.putAll(cssProps);
log.info("S4 CORBA Client Security Server - " + description);
cssORB = ORB.init((String[]) cssArgs.toArray(new
String[cssArgs.size()]), properties);
log.info("S5 CORBA Client Security Server - " + description);
threadPool.execute(new Runnable() {
public void run() {
cssORB.run();
}
});
} finally {
Thread.currentThread().setContextClassLoader(savedLoader);
}
log.info("Started CORBA Client Security Server - " + description);
}
public void doStop() throws Exception {
nssORB.shutdown(true);
cssORB.shutdown(true);
log.info("Stopped CORBA Client Security Server - " + description);
}
public void doFail() {
log.info("Failed CORBA Client Security Server " + description);
}
public static final GBeanInfo GBEAN_INFO;
static {
GBeanInfoBuilder infoFactory = new GBeanInfoBuilder(CSSBean.class);
infoFactory.addAttribute("classLoader", ClassLoader.class, false);
infoFactory.addReference("ThreadPool", Executor.class,
NameFactory.GERONIMO_SERVICE);
infoFactory.addAttribute("configAdapter", String.class, true);
infoFactory.addAttribute("description", String.class, true);
infoFactory.addAttribute("nssConfig", CSSConfig.class, true);
infoFactory.addAttribute("cssConfig", CSSConfig.class, true);
infoFactory.addAttribute("ORB", ORB.class, false);
infoFactory.addAttribute("nssArgs", ArrayList.class, true);
infoFactory.addAttribute("cssArgs", ArrayList.class, true);
infoFactory.addAttribute("nssProps", Properties.class, true);
infoFactory.addAttribute("cssProps", Properties.class, true);
infoFactory.addOperation("getHome", new Class[]{URI.class,
String.class});
infoFactory.setConstructor(new String[]{"classLoader", "ThreadPool",
"configAdapter"});
GBEAN_INFO = infoFactory.getBeanInfo();
}
public static GBeanInfo getGBeanInfo() {
return GBEAN_INFO;
}
}