Hi Ken,
I've ran into the following issue. I'm looking at how to fix it, but I
just like to make sure why are POA's destroyed when starting a server
instance? Is it really necessary?
I have a cluster with multiple instances. When another instance is
started IiopFolbGmsClient#addMember is invoked, which leads to a call to
ReferenceFactoryManagerImpl#suspend. In this method, the state is
changed to RFMState.SUSPENDED.
After that, when the EJB application is being started,
ReferenceFactoryManagerImpl#create fails because of the SUSPENDED state.
(see following exception)
Caused by: org.omg.CORBA.TRANSIENT: vmcid: SUN minor code: 1003
completed: No
at
com.sun.corba.ee.impl.logging.POASystemException.rfmMightDeadlock(POASystemException.java:2341)
at
com.sun.corba.ee.impl.logging.POASystemException.rfmMightDeadlock(POASystemException.java:2363)
at
com.sun.corba.ee.impl.oa.rfm.ReferenceFactoryManagerImpl.create(ReferenceFactoryManagerImpl.java:244)
at
com.sun.enterprise.iiop.POARemoteReferenceFactory.createReferenceFactory(POARemoteReferenceFactory.java:345)
at
com.sun.enterprise.iiop.POARemoteReferenceFactory.setRepositoryIds(POARemoteReferenceFactory.java:229)
... 18 more
ReferenceFactoryManagerImpl#suspend was called from
ServerGroupManager#restartFactories with the purpose of destroying the
POA's.
Why do the POA's need to be destroyed? Would it be okay here to not
invoke ServerGroupManager#restartFactories?
Thanks,
Dies Koper