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;
}