Package org.glassfish.admin.mbeanserver
Class PendingConfigBeans
java.lang.Object
org.glassfish.admin.mbeanserver.PendingConfigBeans
- All Implemented Interfaces:
org.glassfish.config.support.ConfigBeanListener,org.glassfish.hk2.api.PostConstruct,org.jvnet.hk2.config.TransactionListener
@Service(name="PendingConfigBeans")
public class PendingConfigBeans
extends Object
implements org.glassfish.config.support.ConfigBeanListener, org.glassfish.hk2.api.PostConstruct, org.jvnet.hk2.config.TransactionListener
Called when ConfigBeans come into the habitat (see GlassfishConfigBean); a job queue
is maintained for processing by the AMXConfigLoader, which is lazily loaded.
- Author:
- llc
-
Constructor Summary
ConstructorsConstructorDescription/** Singleton: there should be only one instance and hence a private constructor. -
Method Summary
Modifier and TypeMethodDescriptionadd(org.jvnet.hk2.config.ConfigBean cb, boolean useLatch) voidonEntered(org.glassfish.hk2.api.ActiveDescriptor<org.jvnet.hk2.config.ConfigBean> provider) peek()voidbooleanremove(org.jvnet.hk2.config.ConfigBean cb) Removing a ConfigBean must ensure that all its children are also removed.intsize()voidswapTransactionListener(org.jvnet.hk2.config.TransactionListener newListener) amx-impl has its own TransactionListener which takes over once AMX is loaded.take()voidtransactionCommited(List<PropertyChangeEvent> events) This is a workaround for the fact that the onEntered() is not being called in all cases, namely during deployment before AMX has loaded.voidunprocessedTransactedEvents(List<org.jvnet.hk2.config.UnprocessedChangeEvents> changes)
-
Constructor Details
-
PendingConfigBeans
public PendingConfigBeans()/** Singleton: there should be only one instance and hence a private constructor. But the framework using this wants to instantiate things with a public constructor.
-
-
Method Details
-
size
public int size() -
postConstruct
public void postConstruct()- Specified by:
postConstructin interfaceorg.glassfish.hk2.api.PostConstruct
-
take
- Throws:
InterruptedException
-
peek
- Throws:
InterruptedException
-
onEntered
public void onEntered(org.glassfish.hk2.api.ActiveDescriptor<org.jvnet.hk2.config.ConfigBean> provider) - Specified by:
onEnteredin interfaceorg.glassfish.config.support.ConfigBeanListener
-
add
-
remove
public boolean remove(org.jvnet.hk2.config.ConfigBean cb) Removing a ConfigBean must ensure that all its children are also removed. This will normally happen if AMX is loaded as a side effect of unregistering MBeans, but if AMX has not loaded we must ensure it directly. This is all caused by an HK2 asymmetry that does not issue REMOVE events for children of removed elements.TODO: remove all children of the ConfigBean.
-
swapTransactionListener
public void swapTransactionListener(org.jvnet.hk2.config.TransactionListener newListener) amx-impl has its own TransactionListener which takes over once AMX is loaded. Note that it is synchronized with transactionCommited() [sic] to avoid a race condition. -
transactionCommited
This is a workaround for the fact that the onEntered() is not being called in all cases, namely during deployment before AMX has loaded. See disableTransactionListener() above.- Specified by:
transactionCommitedin interfaceorg.jvnet.hk2.config.TransactionListener
-
unprocessedTransactedEvents
- Specified by:
unprocessedTransactedEventsin interfaceorg.jvnet.hk2.config.TransactionListener
-