Hi devs,
I met a NPE in
org.apache.openejb.assembler.classic.EjbJarBuilder.build(EjbJarInfo,
List<Injection>) {
...
Container container = (Container) props.get(ejbInfo.containerId); //
containerId is null here
...
}
I tried to find when containerId is set. and find it's here:
org.apache.openejb.config.AutoConfig.deploy(EjbModule, AppResources) {
...
if (ejbDeployment.getContainerId() == null && !skipMdb(bean)) {
String containerId = getUsableContainer(containerInfoType,
bean, appResources);
if (containerId == null){
containerId = createContainer(containerInfoType,
ejbDeployment, bean);
}
ejbDeployment.setContainerId(containerId);
}
...
}
The problem is that when using openejb in geronimo. skipMdb(bean) will
always return true if bean is a MDB. So that the containerId does not
have a chance to be set at all. The logic of skipMdb is:
private static boolean skipMdb(Object bean) {
return bean instanceof MessageDrivenBean &&
SystemInstance.get().hasProperty("openejb.geronimo");
}
Any thoughts why we don't set the containerId for MDB from openejb side when
working with geronimo ?
--
Shawn