I've fixed the problem with the Ejb3Registrar, as verified by the following test:
/**
| * Tests that an object bound with state other than "INSTALLED" may still
be
| * unbound from MC via the Ejb3Registrar
| *
| * EJBTHREE-1472
| */
| @Test
| public void testUnbindFromControllerStateOtherThanInstalled() throws Throwable
| {
| // Create a new key/value pair for binding into MC
| String name = "MyObject";
| Object value = new Object();
|
| // Construct BMDB, adding an unmet dependency
| BeanMetaDataBuilder bmdb = BeanMetaDataBuilder.createBuilder(name,
value.getClass().getName());
| bmdb.addDependency("SomeDependencyThatDoesn'tExist");
|
| // Install into MC, though because of the unmet dependency will not reach
"INSTALLED" state
| try
| {
| getBootstrap().getKernel().getController().install(bmdb.getBeanMetaData(),
value);
| }
| catch (Throwable e)
| {
| throw new RuntimeException("Could not install at name \"" +
name + "\" value " + value, e);
| }
|
| // Ensure that the install didn't completely succeed
| ControllerContext context =
getBootstrap().getKernel().getController().getContext(name, null);
| TestCase.assertTrue("The test object should not be fully installed for this
test", !context.getState().equals(
| ControllerState.INSTALLED));
|
| // Unbind
| Ejb3RegistrarLocator.locateRegistrar().unbind(name);
|
| // Check that we've unbound
| boolean isUnbound = false;
| try
| {
| Ejb3RegistrarLocator.locateRegistrar().lookup(name);
| }
| catch (NotBoundException nbe)
| {
| isUnbound = true;
| }
| TestCase.assertTrue("The test object should be unbound", isUnbound);
|
| }
I guess I'll leave the checks that discovered this error in place in EJB3 Proxy
JndiSessionRegistrarBase.deregisterProxyFactory(); after all, they gave us a nice
fail-fast, right? ;)
S,
ALR
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4173064#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...