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

Reply via email to