La structure de la démonstration est la suivante :

annotationOverrideOverview

Le code provoquant le problème se situe dans la classe AbstractProcessor et ProcessorBean. Il se trouve en fait que les deux classes contiennent la même variable avec la même injection :

public class AbstractProcessor
{
   @EJB
   protected UsefulLocal usefulBean;
}
@Stateless
public class ProcessorBean extends AbstractProcessor implements ProcessorRemote
{
   @EJB
   protected UsefulLocal usefulBean; //overriding
 
   public void call()
   {
      usefulBean.doSomething();
   }
}

Une fois déployé, ce genre de chose fonctionne parfaitement sous Glassfish. Par contre cela se vautre misérablement sous Weblogic en balancant une exception de type NullPointerException...

Je ne suis pas sûr qu'il s'agisse d'un bug Weblogic, mais plutôt que celui-ci soit beaucoup moins tolérant que Glassfish (nous avons eu également quelques surprises du coté des requêtes EJBQL et des valeurs remontées).

En annexe du billet, j'ai mis un petit projet Java EE fait sous NetBeans qui démontre exactement le problème :)