[jboss-dev-forums] [Design of EJB 3.0] - Filtering non-EJB3 deployments in the EJB3 deployer

alex.loubyansky@jboss.com do-not-reply at jboss.com
Wed Jul 1 05:19:48 EDT 2009


Currently it's done like this
   public void deploy(VFSDeploymentUnit unit, JBossMetaData metaData) throws DeploymentException
  |    {
  |       try
  |       {
  |          // Pickup any deployment which doesn't have metaData or metaData with ejbVersion unknown or 3
  |          if(metaData != null && (metaData.isEJB2x() || metaData.isEJB1x()))
  |          {
  |             log.debug("Ignoring legacy EJB deployment " + unit);
  |             return;
  |          }
  | ...

The problem with this is that if an ejb-jar.xml does not include any namespace (i.e. based on DTD) isEJB2x(), isEJB1x(), isEJB3x() will all return false.
Actually, the absence of ejbVersion should mean EJB2/EJB1 deployment because only these are allowed to use DTD.
ejb-jar_2_1.xsd and ejb-jar_3_0.xsd both define *required* and *fixed* attribute version with values 2.1 and 3.0 respectively.
So, any EJB3 deployment will have a non-null ejbVersion and isEJB3x() will return true.
So, I am going to change the "if" above to
if(metaData != null && !metaData.isEJB3x())
  |          {
  |             log.debug("Ignoring legacy EJB deployment " + unit);
  |             return;
  |          }

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4241097#4241097

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4241097



More information about the jboss-dev-forums mailing list