dain 2005/03/23 22:49:04
Added: modules/core/src/java/org/openejb/corba SunNameService.java
Log:
A simple transient CORBA name server using Sun's NSORB. This class does not
depend on any sun libraries, but will not start on a JVM that does not
contain the
com.sun.corba.se.internal.CosNaming.NSORB
Revision Changes Path
1.1
openejb/modules/core/src/java/org/openejb/corba/SunNameService.java
Index: SunNameService.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: SunNameService.java,v 1.1 2005/03/24 03:49:04 dain Exp $
*/
package org.openejb.corba;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.omg.CORBA.ORB;
/**
* @version $Revision: 1.1 $ $Date: 2005/03/24 03:49:04 $
*/
public class SunNameService implements GBeanLifecycle {
private static final Log log = LogFactory.getLog(SunNameService.class);
private final ORB orb;
private final String port;
public SunNameService(String port) throws Exception {
this.port = port;
// create the orb
Properties properties = new Properties();
properties.put("org.omg.CORBA.ORBClass",
"com.sun.corba.se.internal.CosNaming.NSORB");
properties.put("com.sun.CORBA.POA.ORBPersistentServerPort",
this.port);
properties.put("org.omg.CORBA.ORBInitialPort", this.port);
orb = ORB.init(new String[0], properties);
}
public void doStart() throws Exception {
new Thread(new ORBRunner(orb), "ORBRunner").start();
log.info("Started transient CORBA name service on port " + port);
}
public void doStop() throws Exception {
orb.destroy();
log.info("Stopped transient CORBA name service on port " + port);
}
public void doFail() {
orb.destroy();
log.info("Failed transient CORBA name service on port " + port);
}
private static final class ORBRunner implements Runnable {
private final ORB orb;
public ORBRunner(ORB orb) {
this.orb = orb;
}
public void run() {
orb.run();
}
}
public static final GBeanInfo GBEAN_INFO;
static {
GBeanInfoBuilder infoFactory = new
GBeanInfoBuilder(SunNameService.class, NameFactory.CORBA_SERVICE);
infoFactory.addAttribute("port", String.class, true);
infoFactory.setConstructor(new String[]{"port"});
GBEAN_INFO = infoFactory.getBeanInfo();
}
public static GBeanInfo getGBeanInfo() {
return GBEAN_INFO;
}
}