| /* |
| * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| package com.sun.corba.se.impl.orb ; |
| |
| import java.lang.reflect.InvocationTargetException; |
| import java.lang.reflect.Method; |
| import java.net.InetAddress ; |
| import java.security.PrivilegedAction ; |
| import java.security.PrivilegedExceptionAction ; |
| import java.security.AccessController ; |
| import java.util.Collection ; |
| import java.util.Iterator ; |
| |
| import org.omg.CORBA.CompletionStatus ; |
| import org.omg.CORBA.portable.ValueFactory ; |
| |
| import com.sun.corba.se.pept.protocol.ClientRequestDispatcher ; |
| import com.sun.corba.se.pept.transport.Acceptor; |
| |
| import com.sun.corba.se.spi.activation.Locator ; |
| import com.sun.corba.se.spi.activation.Activator ; |
| import com.sun.corba.se.spi.activation.LocatorHelper ; |
| import com.sun.corba.se.spi.activation.ActivatorHelper ; |
| import com.sun.corba.se.spi.activation.EndPointInfo ; |
| |
| import com.sun.corba.se.spi.copyobject.ObjectCopierFactory ; |
| import com.sun.corba.se.spi.copyobject.CopyobjectDefaults ; |
| import com.sun.corba.se.spi.copyobject.CopierManager ; |
| |
| import com.sun.corba.se.spi.ior.IdentifiableFactoryFinder ; |
| import com.sun.corba.se.spi.ior.IOR; |
| import com.sun.corba.se.spi.ior.IORFactories ; |
| |
| import com.sun.corba.se.spi.ior.iiop.IIOPFactories ; |
| |
| import com.sun.corba.se.spi.legacy.connection.ORBSocketFactory; |
| |
| import com.sun.corba.se.spi.logging.CORBALogDomains ; |
| |
| import com.sun.corba.se.spi.oa.OADefault ; |
| import com.sun.corba.se.spi.oa.ObjectAdapter ; |
| import com.sun.corba.se.spi.oa.ObjectAdapterFactory ; |
| |
| import com.sun.corba.se.spi.orb.Operation ; |
| import com.sun.corba.se.spi.orb.OperationFactory ; |
| import com.sun.corba.se.spi.orb.ORBData ; |
| import com.sun.corba.se.spi.orb.DataCollector ; |
| import com.sun.corba.se.spi.orb.ORBConfigurator ; |
| import com.sun.corba.se.spi.orb.ParserImplBase ; |
| import com.sun.corba.se.spi.orb.PropertyParser ; |
| import com.sun.corba.se.spi.orb.ORB ; |
| |
| import com.sun.corba.se.spi.orbutil.closure.Closure ; |
| import com.sun.corba.se.spi.orbutil.closure.ClosureFactory ; |
| |
| import com.sun.corba.se.spi.protocol.RequestDispatcherRegistry ; |
| import com.sun.corba.se.spi.protocol.CorbaServerRequestDispatcher ; |
| import com.sun.corba.se.spi.protocol.RequestDispatcherDefault ; |
| import com.sun.corba.se.spi.protocol.LocalClientRequestDispatcherFactory ; |
| |
| import com.sun.corba.se.spi.resolver.LocalResolver ; |
| import com.sun.corba.se.spi.resolver.Resolver ; |
| import com.sun.corba.se.spi.resolver.ResolverDefault ; |
| |
| import com.sun.corba.se.spi.transport.CorbaContactInfoList; |
| import com.sun.corba.se.spi.transport.CorbaContactInfoListFactory; |
| import com.sun.corba.se.spi.transport.SocketInfo; |
| import com.sun.corba.se.spi.transport.TransportDefault ; |
| |
| import com.sun.corba.se.spi.presentation.rmi.PresentationManager ; |
| import com.sun.corba.se.spi.presentation.rmi.PresentationDefaults ; |
| |
| import com.sun.corba.se.spi.servicecontext.ServiceContext ; |
| import com.sun.corba.se.spi.servicecontext.ServiceContextRegistry ; |
| import com.sun.corba.se.spi.servicecontext.UEInfoServiceContext ; |
| import com.sun.corba.se.spi.servicecontext.CodeSetServiceContext ; |
| import com.sun.corba.se.spi.servicecontext.SendingContextServiceContext ; |
| import com.sun.corba.se.spi.servicecontext.ORBVersionServiceContext ; |
| import com.sun.corba.se.spi.servicecontext.MaxStreamFormatVersionServiceContext ; |
| import com.sun.corba.se.impl.logging.ORBUtilSystemException ; |
| import com.sun.corba.se.impl.transport.SocketOrChannelAcceptorImpl; |
| |
| // XXX This should go away once we get rid of the port exchange for ORBD |
| import com.sun.corba.se.spi.legacy.connection.LegacyServerSocketEndPointInfo; |
| import com.sun.corba.se.impl.legacy.connection.SocketFactoryAcceptorImpl; |
| import com.sun.corba.se.impl.legacy.connection.SocketFactoryContactInfoListImpl; |
| import com.sun.corba.se.impl.legacy.connection.USLPort; |
| |
| // XXX These should move to SPI |
| import com.sun.corba.se.impl.orbutil.ORBConstants ; |
| |
| // XXX This needs an SPI |
| import com.sun.corba.se.impl.dynamicany.DynAnyFactoryImpl ; |
| |
| public class ORBConfiguratorImpl implements ORBConfigurator { |
| private ORBUtilSystemException wrapper ; |
| |
| public static class ConfigParser extends ParserImplBase { |
| public Class[] userConfigurators = null ; |
| |
| public PropertyParser makeParser() |
| { |
| PropertyParser parser = new PropertyParser() ; |
| Operation action = OperationFactory.compose( |
| OperationFactory.suffixAction(), |
| OperationFactory.classAction() |
| ) ; |
| parser.addPrefix( ORBConstants.SUN_PREFIX + "ORBUserConfigurators", |
| action, "userConfigurators", Class.class ) ; |
| return parser ; |
| } |
| } |
| |
| public void configure( DataCollector collector, ORB orb ) |
| { |
| ORB theOrb = orb ; |
| wrapper = ORBUtilSystemException.get( orb, CORBALogDomains.ORB_LIFECYCLE ) ; |
| |
| initObjectCopiers( theOrb ) ; |
| initIORFinders( theOrb ) ; |
| |
| theOrb.setClientDelegateFactory( |
| // REVISIT: this should be ProtocolDefault. |
| TransportDefault.makeClientDelegateFactory( theOrb )) ; |
| |
| initializeTransport(theOrb) ; |
| |
| initializeNaming( theOrb ) ; |
| initServiceContextRegistry( theOrb ) ; |
| initRequestDispatcherRegistry( theOrb ) ; |
| registerInitialReferences( theOrb ) ; |
| |
| persistentServerInitialization( theOrb ) ; |
| |
| runUserConfigurators( collector, theOrb ) ; |
| } |
| |
| private void runUserConfigurators( DataCollector collector, ORB orb ) |
| { |
| // Run any pluggable configurators. This is a lot like |
| // ORBInitializers, only it uses the internal ORB and has |
| // access to all data for parsing. |
| ConfigParser parser = new ConfigParser() ; |
| parser.init( collector ) ; |
| if (parser.userConfigurators != null) { |
| for (int ctr=0; ctr<parser.userConfigurators.length; ctr++) { |
| Class cls = parser.userConfigurators[ctr] ; |
| try { |
| ORBConfigurator config = (ORBConfigurator)(cls.newInstance()) ; |
| config.configure( collector, orb ) ; |
| } catch (Exception exc) { |
| // XXX Log this exception |
| // ignore this for now: a bad user configurator does nothing |
| } |
| } |
| } |
| } |
| |
| private void persistentServerInitialization( ORB orb ) |
| { |
| ORBData data = orb.getORBData() ; |
| |
| // determine the ORBD port so that persistent objrefs can be |
| // created. |
| if (data.getServerIsORBActivated()) { |
| try { |
| Locator locator = LocatorHelper.narrow( |
| orb.resolve_initial_references( |
| ORBConstants.SERVER_LOCATOR_NAME )) ; |
| Activator activator = ActivatorHelper.narrow( |
| orb.resolve_initial_references( |
| ORBConstants.SERVER_ACTIVATOR_NAME )) ; |
| Collection serverEndpoints = |
| orb.getCorbaTransportManager().getAcceptors(null, null); |
| EndPointInfo[] endpointList = |
| new EndPointInfo[serverEndpoints.size()]; |
| Iterator iterator = serverEndpoints.iterator(); |
| int i = 0 ; |
| while (iterator.hasNext()) { |
| Object n = iterator.next(); |
| if (! (n instanceof LegacyServerSocketEndPointInfo)) { |
| continue; |
| } |
| LegacyServerSocketEndPointInfo ep = |
| (LegacyServerSocketEndPointInfo) n; |
| // REVISIT - use exception instead of -1. |
| int port = locator.getEndpoint(ep.getType()); |
| if (port == -1) { |
| port = locator.getEndpoint(SocketInfo.IIOP_CLEAR_TEXT); |
| if (port == -1) { |
| throw new Exception( |
| "ORBD must support IIOP_CLEAR_TEXT"); |
| } |
| } |
| |
| ep.setLocatorPort(port); |
| |
| endpointList[i++] = |
| new EndPointInfo(ep.getType(), ep.getPort()); |
| } |
| |
| activator.registerEndpoints( |
| data.getPersistentServerId(), data.getORBId(), |
| endpointList); |
| } catch (Exception ex) { |
| throw wrapper.persistentServerInitError( |
| CompletionStatus.COMPLETED_MAYBE, ex ) ; |
| } |
| } |
| } |
| |
| /** |
| * This is made somewhat complex because we are currently supporting |
| * the ContactInfoList/Acceptor *AND* the legacy SocketFactory |
| * transport architecture. |
| */ |
| private void initializeTransport(final ORB orb) |
| { |
| ORBData od = orb.getORBData(); |
| |
| CorbaContactInfoListFactory contactInfoListFactory = |
| od.getCorbaContactInfoListFactory(); |
| Acceptor[] acceptors = od.getAcceptors(); |
| |
| // BEGIN Legacy |
| ORBSocketFactory legacySocketFactory = od.getLegacySocketFactory(); |
| USLPort[] uslPorts = od.getUserSpecifiedListenPorts() ; |
| setLegacySocketFactoryORB(orb, legacySocketFactory); |
| // END Legacy |
| |
| // |
| // Check for incorrect configuration. |
| // |
| |
| if (legacySocketFactory != null && contactInfoListFactory != null) { |
| throw wrapper.socketFactoryAndContactInfoListAtSameTime(); |
| } |
| |
| if (acceptors.length != 0 && legacySocketFactory != null) { |
| throw wrapper.acceptorsAndLegacySocketFactoryAtSameTime(); |
| } |
| |
| |
| // |
| // Client and Server side setup. |
| // |
| |
| od.getSocketFactory().setORB(orb); |
| |
| // |
| // Set up client side. |
| // |
| |
| if (legacySocketFactory != null) { |
| // BEGIN Legacy |
| // Since the user specified a legacy socket factory we need to |
| // use a ContactInfoList that will use the legacy socket factory. |
| contactInfoListFactory = |
| new CorbaContactInfoListFactory() { |
| public void setORB(ORB orb) { } |
| public CorbaContactInfoList create( IOR ior ) { |
| return new SocketFactoryContactInfoListImpl( |
| orb, ior); |
| } |
| }; |
| // END Legacy |
| } else if (contactInfoListFactory != null) { |
| // The user specified an explicit ContactInfoListFactory. |
| contactInfoListFactory.setORB(orb); |
| } else { |
| // Use the default. |
| contactInfoListFactory = |
| TransportDefault.makeCorbaContactInfoListFactory(orb); |
| } |
| orb.setCorbaContactInfoListFactory(contactInfoListFactory); |
| |
| // |
| // Set up server side. |
| // |
| |
| // |
| // Maybe allocate the Legacy default listener. |
| // |
| // If old legacy properties set, or there are no explicit |
| // acceptors then register a default listener. Type of |
| // default listener depends on presence of legacy socket factory. |
| // |
| // Note: this must happen *BEFORE* registering explicit acceptors. |
| // |
| |
| // BEGIN Legacy |
| int port = -1; |
| if (od.getORBServerPort() != 0) { |
| port = od.getORBServerPort(); |
| } else if (od.getPersistentPortInitialized()) { |
| port = od.getPersistentServerPort(); |
| } else if (acceptors.length == 0) { |
| port = 0; |
| } |
| if (port != -1) { |
| createAndRegisterAcceptor(orb, legacySocketFactory, port, |
| LegacyServerSocketEndPointInfo.DEFAULT_ENDPOINT, |
| SocketInfo.IIOP_CLEAR_TEXT); |
| } |
| // END Legacy |
| |
| for (int i = 0; i < acceptors.length; i++) { |
| orb.getCorbaTransportManager().registerAcceptor(acceptors[i]); |
| } |
| |
| // BEGIN Legacy |
| // Allocate user listeners. |
| USLPort[] ports = od.getUserSpecifiedListenPorts() ; |
| if (ports != null) { |
| for (int i = 0; i < ports.length; i++) { |
| createAndRegisterAcceptor( |
| orb, legacySocketFactory, ports[i].getPort(), |
| LegacyServerSocketEndPointInfo.NO_NAME, |
| ports[i].getType()); |
| } |
| } |
| // END Legacy |
| } |
| |
| /* |
| * Legacy: name. |
| */ |
| // REVISIT: see ORBD. make factory in TransportDefault. |
| private void createAndRegisterAcceptor(ORB orb, |
| ORBSocketFactory legacySocketFactory, |
| int port, String name, String type) |
| { |
| Acceptor acceptor; |
| if (legacySocketFactory == null) { |
| acceptor = |
| new SocketOrChannelAcceptorImpl(orb, port, name, type); |
| } else { |
| acceptor = |
| new SocketFactoryAcceptorImpl(orb, port, name, type); |
| } |
| orb.getTransportManager().registerAcceptor(acceptor); |
| } |
| |
| private void setLegacySocketFactoryORB( |
| final ORB orb, final ORBSocketFactory legacySocketFactory) |
| { |
| if (legacySocketFactory == null) { |
| return; |
| } |
| |
| // Note: the createServerSocket and createSocket methods on the |
| // DefaultSocketFactory need to get data from the ORB but |
| // we cannot change the interface. So set the ORB (if it's ours) |
| // by reflection. |
| |
| try { |
| AccessController.doPrivileged( |
| new PrivilegedExceptionAction() { |
| public Object run() |
| throws InstantiationException, IllegalAccessException |
| { |
| try { |
| Class[] params = { ORB.class }; |
| Method method = |
| legacySocketFactory.getClass().getMethod( |
| "setORB", params); |
| Object[] args = { orb }; |
| method.invoke(legacySocketFactory, args); |
| } catch (NoSuchMethodException e) { |
| // NOTE: If there is no method then it |
| // is not ours - so ignore it. |
| ; |
| } catch (IllegalAccessException e) { |
| RuntimeException rte = new RuntimeException(); |
| rte.initCause(e); |
| throw rte; |
| } catch (InvocationTargetException e) { |
| RuntimeException rte = new RuntimeException(); |
| rte.initCause(e); |
| throw rte; |
| } |
| return null; |
| } |
| } |
| ); |
| } catch (Throwable t) { |
| throw wrapper.unableToSetSocketFactoryOrb(t); |
| } |
| } |
| |
| private void initializeNaming( ORB orb ) |
| { |
| LocalResolver localResolver = ResolverDefault.makeLocalResolver() ; |
| orb.setLocalResolver( localResolver ) ; |
| |
| Resolver bootResolver = ResolverDefault.makeBootstrapResolver( orb, |
| orb.getORBData().getORBInitialHost(), |
| orb.getORBData().getORBInitialPort() ) ; |
| |
| Operation urlOperation = ResolverDefault.makeINSURLOperation( orb, |
| bootResolver ) ; |
| orb.setURLOperation( urlOperation ) ; |
| |
| Resolver irResolver = ResolverDefault.makeORBInitRefResolver( urlOperation, |
| orb.getORBData().getORBInitialReferences() ) ; |
| |
| Resolver dirResolver = ResolverDefault.makeORBDefaultInitRefResolver( |
| urlOperation, orb.getORBData().getORBDefaultInitialReference() ) ; |
| |
| Resolver resolver = |
| ResolverDefault.makeCompositeResolver( localResolver, |
| ResolverDefault.makeCompositeResolver( irResolver, |
| ResolverDefault.makeCompositeResolver( dirResolver, |
| bootResolver ) ) ) ; |
| orb.setResolver( resolver ) ; |
| } |
| |
| private void initServiceContextRegistry( ORB orb ) |
| { |
| ServiceContextRegistry scr = orb.getServiceContextRegistry() ; |
| |
| scr.register( UEInfoServiceContext.class ) ; |
| scr.register( CodeSetServiceContext.class ) ; |
| scr.register( SendingContextServiceContext.class ) ; |
| scr.register( ORBVersionServiceContext.class ) ; |
| scr.register( MaxStreamFormatVersionServiceContext.class ) ; |
| } |
| |
| private void registerInitialReferences( final ORB orb ) |
| { |
| // Register the Dynamic Any factory |
| Closure closure = new Closure() { |
| public java.lang.Object evaluate() { |
| return new DynAnyFactoryImpl( orb ) ; |
| } |
| } ; |
| |
| Closure future = ClosureFactory.makeFuture( closure ) ; |
| orb.getLocalResolver().register( ORBConstants.DYN_ANY_FACTORY_NAME, |
| future ) ; |
| } |
| |
| private static final int ORB_STREAM = 0 ; |
| |
| private void initObjectCopiers( ORB orb ) |
| { |
| // No optimization or policy selection here. |
| ObjectCopierFactory orbStream = |
| CopyobjectDefaults.makeORBStreamObjectCopierFactory( orb ) ; |
| |
| CopierManager cm = orb.getCopierManager() ; |
| cm.setDefaultId( ORB_STREAM ) ; |
| |
| cm.registerObjectCopierFactory( orbStream, ORB_STREAM ) ; |
| } |
| |
| private void initIORFinders( ORB orb ) |
| { |
| IdentifiableFactoryFinder profFinder = |
| orb.getTaggedProfileFactoryFinder() ; |
| profFinder.registerFactory( IIOPFactories.makeIIOPProfileFactory() ) ; |
| |
| IdentifiableFactoryFinder profTempFinder = |
| orb.getTaggedProfileTemplateFactoryFinder() ; |
| profTempFinder.registerFactory( |
| IIOPFactories.makeIIOPProfileTemplateFactory() ) ; |
| |
| IdentifiableFactoryFinder compFinder = |
| orb.getTaggedComponentFactoryFinder() ; |
| compFinder.registerFactory( |
| IIOPFactories.makeCodeSetsComponentFactory() ) ; |
| compFinder.registerFactory( |
| IIOPFactories.makeJavaCodebaseComponentFactory() ) ; |
| compFinder.registerFactory( |
| IIOPFactories.makeORBTypeComponentFactory() ) ; |
| compFinder.registerFactory( |
| IIOPFactories.makeMaxStreamFormatVersionComponentFactory() ) ; |
| compFinder.registerFactory( |
| IIOPFactories.makeAlternateIIOPAddressComponentFactory() ) ; |
| compFinder.registerFactory( |
| IIOPFactories.makeRequestPartitioningComponentFactory() ) ; |
| compFinder.registerFactory( |
| IIOPFactories.makeJavaSerializationComponentFactory()); |
| |
| // Register the ValueFactory instances for ORT |
| IORFactories.registerValueFactories( orb ) ; |
| |
| // Register an ObjectKeyFactory |
| orb.setObjectKeyFactory( IORFactories.makeObjectKeyFactory(orb) ) ; |
| } |
| |
| private void initRequestDispatcherRegistry( ORB orb ) |
| { |
| RequestDispatcherRegistry scr = orb.getRequestDispatcherRegistry() ; |
| |
| // register client subcontracts |
| ClientRequestDispatcher csub = |
| RequestDispatcherDefault.makeClientRequestDispatcher() ; |
| scr.registerClientRequestDispatcher( csub, |
| ORBConstants.TOA_SCID ) ; |
| scr.registerClientRequestDispatcher( csub, |
| ORBConstants.TRANSIENT_SCID ) ; |
| scr.registerClientRequestDispatcher( csub, |
| ORBConstants.PERSISTENT_SCID ) ; |
| scr.registerClientRequestDispatcher( csub, |
| ORBConstants.SC_TRANSIENT_SCID ) ; |
| scr.registerClientRequestDispatcher( csub, |
| ORBConstants.SC_PERSISTENT_SCID ) ; |
| scr.registerClientRequestDispatcher( csub, |
| ORBConstants.IISC_TRANSIENT_SCID ) ; |
| scr.registerClientRequestDispatcher( csub, |
| ORBConstants.IISC_PERSISTENT_SCID ) ; |
| scr.registerClientRequestDispatcher( csub, |
| ORBConstants.MINSC_TRANSIENT_SCID ) ; |
| scr.registerClientRequestDispatcher( csub, |
| ORBConstants.MINSC_PERSISTENT_SCID ) ; |
| |
| // register server delegates |
| CorbaServerRequestDispatcher sd = |
| RequestDispatcherDefault.makeServerRequestDispatcher( orb ); |
| scr.registerServerRequestDispatcher( sd, |
| ORBConstants.TOA_SCID ) ; |
| scr.registerServerRequestDispatcher( sd, |
| ORBConstants.TRANSIENT_SCID ) ; |
| scr.registerServerRequestDispatcher( sd, |
| ORBConstants.PERSISTENT_SCID ) ; |
| scr.registerServerRequestDispatcher( sd, |
| ORBConstants.SC_TRANSIENT_SCID ) ; |
| scr.registerServerRequestDispatcher( sd, |
| ORBConstants.SC_PERSISTENT_SCID ) ; |
| scr.registerServerRequestDispatcher( sd, |
| ORBConstants.IISC_TRANSIENT_SCID ) ; |
| scr.registerServerRequestDispatcher( sd, |
| ORBConstants.IISC_PERSISTENT_SCID ) ; |
| scr.registerServerRequestDispatcher( sd, |
| ORBConstants.MINSC_TRANSIENT_SCID ) ; |
| scr.registerServerRequestDispatcher( sd, |
| ORBConstants.MINSC_PERSISTENT_SCID ) ; |
| |
| orb.setINSDelegate( |
| RequestDispatcherDefault.makeINSServerRequestDispatcher( orb ) ) ; |
| |
| // register local client subcontracts |
| LocalClientRequestDispatcherFactory lcsf = |
| RequestDispatcherDefault.makeJIDLLocalClientRequestDispatcherFactory( |
| orb ) ; |
| scr.registerLocalClientRequestDispatcherFactory( lcsf, |
| ORBConstants.TOA_SCID ) ; |
| |
| lcsf = |
| RequestDispatcherDefault.makePOALocalClientRequestDispatcherFactory( |
| orb ) ; |
| scr.registerLocalClientRequestDispatcherFactory( lcsf, |
| ORBConstants.TRANSIENT_SCID ) ; |
| scr.registerLocalClientRequestDispatcherFactory( lcsf, |
| ORBConstants.PERSISTENT_SCID ) ; |
| |
| lcsf = RequestDispatcherDefault. |
| makeFullServantCacheLocalClientRequestDispatcherFactory( orb ) ; |
| scr.registerLocalClientRequestDispatcherFactory( lcsf, |
| ORBConstants.SC_TRANSIENT_SCID ) ; |
| scr.registerLocalClientRequestDispatcherFactory( lcsf, |
| ORBConstants.SC_PERSISTENT_SCID ) ; |
| |
| lcsf = RequestDispatcherDefault. |
| makeInfoOnlyServantCacheLocalClientRequestDispatcherFactory( orb ) ; |
| scr.registerLocalClientRequestDispatcherFactory( lcsf, |
| ORBConstants.IISC_TRANSIENT_SCID ) ; |
| scr.registerLocalClientRequestDispatcherFactory( lcsf, |
| ORBConstants.IISC_PERSISTENT_SCID ) ; |
| |
| lcsf = RequestDispatcherDefault. |
| makeMinimalServantCacheLocalClientRequestDispatcherFactory( orb ) ; |
| scr.registerLocalClientRequestDispatcherFactory( lcsf, |
| ORBConstants.MINSC_TRANSIENT_SCID ) ; |
| scr.registerLocalClientRequestDispatcherFactory( lcsf, |
| ORBConstants.MINSC_PERSISTENT_SCID ) ; |
| |
| /* Register the server delegate that implements the ancient bootstrap |
| * naming protocol. This takes an object key of either "INIT" or |
| * "TINI" to allow for big or little endian implementations. |
| */ |
| CorbaServerRequestDispatcher bootsd = |
| RequestDispatcherDefault.makeBootstrapServerRequestDispatcher( |
| orb ) ; |
| scr.registerServerRequestDispatcher( bootsd, "INIT" ) ; |
| scr.registerServerRequestDispatcher( bootsd, "TINI" ) ; |
| |
| // Register object adapter factories |
| ObjectAdapterFactory oaf = OADefault.makeTOAFactory( orb ) ; |
| scr.registerObjectAdapterFactory( oaf, ORBConstants.TOA_SCID ) ; |
| |
| oaf = OADefault.makePOAFactory( orb ) ; |
| scr.registerObjectAdapterFactory( oaf, ORBConstants.TRANSIENT_SCID ) ; |
| scr.registerObjectAdapterFactory( oaf, ORBConstants.PERSISTENT_SCID ) ; |
| scr.registerObjectAdapterFactory( oaf, ORBConstants.SC_TRANSIENT_SCID ) ; |
| scr.registerObjectAdapterFactory( oaf, ORBConstants.SC_PERSISTENT_SCID ) ; |
| scr.registerObjectAdapterFactory( oaf, ORBConstants.IISC_TRANSIENT_SCID ) ; |
| scr.registerObjectAdapterFactory( oaf, ORBConstants.IISC_PERSISTENT_SCID ) ; |
| scr.registerObjectAdapterFactory( oaf, ORBConstants.MINSC_TRANSIENT_SCID ) ; |
| scr.registerObjectAdapterFactory( oaf, ORBConstants.MINSC_PERSISTENT_SCID ) ; |
| } |
| } |
| |
| // End of file. |