src/share/classes/com/sun/corba/se/spi/orb/ORB.java

Print this page

        

*** 1,7 **** /* ! * 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 --- 1,7 ---- /* ! * Copyright (c) 2002, 2012, 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
*** 169,179 **** // representing LogDomain and ExceptionGroup. private Map wrapperMap ; private static Map staticWrapperMap = new ConcurrentHashMap(); ! private MonitoringManager monitoringManager; // There is only one instance of the PresentationManager // that is shared between all ORBs. This is necessary // because RMI-IIOP requires the PresentationManager in // places where no ORB is available, so the PresentationManager --- 169,179 ---- // representing LogDomain and ExceptionGroup. private Map wrapperMap ; private static Map staticWrapperMap = new ConcurrentHashMap(); ! protected MonitoringManager monitoringManager; // There is only one instance of the PresentationManager // that is shared between all ORBs. This is necessary // because RMI-IIOP requires the PresentationManager in // places where no ORB is available, so the PresentationManager
*** 224,233 **** --- 224,241 ---- globalPM.setStubFactoryFactory( false, PresentationDefaults.getStaticStubFactoryFactory() ) ; globalPM.setStubFactoryFactory( true, dynamicStubFactoryFactory ) ; } + public void destroy() { + wrapper = null; + omgWrapper = null; + typeCodeMap = null; + primitiveTypeCodeConstants = null; + byteBufferPool = null; + } + /** Get the single instance of the PresentationManager */ public static PresentationManager getPresentationManager() { return globalPM ;
*** 300,327 **** --- 308,343 ---- } // Typecode support: needed in both ORBImpl and ORBSingleton public TypeCodeImpl get_primitive_tc(int kind) { + synchronized (this) { + checkShutdownState(); + } try { return primitiveTypeCodeConstants[kind] ; } catch (Throwable t) { throw wrapper.invalidTypecodeKind( t, new Integer(kind) ) ; } } public synchronized void setTypeCode(String id, TypeCodeImpl code) { + checkShutdownState(); typeCodeMap.put(id, code); } public synchronized TypeCodeImpl getTypeCode(String id) { + checkShutdownState(); return (TypeCodeImpl)typeCodeMap.get(id); } public MonitoringManager getMonitoringManager( ) { + synchronized (this) { + checkShutdownState(); + } return monitoringManager; } // Special non-standard set_parameters method for // creating a precisely controlled ORB instance.
*** 432,441 **** --- 448,460 ---- /** * Returns the logger based on the category. */ public Logger getLogger( String domain ) { + synchronized (this) { + checkShutdownState(); + } ORBData odata = getORBData() ; // Determine the correct ORBId. There are 3 cases: // 1. odata is null, which happens if we are getting a logger before // ORB initialization is complete. In this case we cannot determine
*** 508,517 **** --- 527,539 ---- // NOTE: ByteBuffer pool must be unique per ORB, not per process. // There can be more than one ORB per process. // This method must also be inherited by both ORB and ORBSingleton. public ByteBufferPool getByteBufferPool() { + synchronized (this) { + checkShutdownState(); + } if (byteBufferPool == null) byteBufferPool = new ByteBufferPoolImpl(this); return byteBufferPool; }