[jboss-cvs] JBossAS SVN: r86258 - in trunk: server/src/main/org/jboss/ejb/deployers and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 24 10:10:52 EDT 2009


Author: alex.loubyansky at jboss.com
Date: 2009-03-24 10:10:51 -0400 (Tue, 24 Mar 2009)
New Revision: 86258

Modified:
   trunk/server/src/etc/deployers/ejb-deployer-jboss-beans.xml
   trunk/server/src/main/org/jboss/ejb/deployers/EjbDeployer.java
   trunk/server/src/main/org/jboss/ejb/deployers/EjbDeployerMBean.java
   trunk/testsuite/imports/sections/cmp.xml
   trunk/testsuite/src/main/org/jboss/test/bootstrapdependencies/jbas5349/ejb2/SimpleEntity.java
   trunk/testsuite/src/main/org/jboss/test/bootstrapdependencies/jbas5349/ejb2/SimpleEntityHome.java
   trunk/testsuite/src/main/org/jboss/test/cmp2/lob/LOBHome.java
   trunk/testsuite/src/main/org/jboss/test/refs/ejbs2x/interfaces/Session.java
   trunk/testsuite/src/resources/cluster/ejb2/basic/META-INF/ejb-jar.xml
   trunk/testsuite/src/resources/jca/bank/META-INF/ejb-jar.xml
   trunk/testsuite/src/resources/testbean/META-INF/ejb-jar.xml
   trunk/testsuite/src/resources/testbyvalue/META-INF/ejb-jar.xml
Log:
JBAS-4666

Modified: trunk/server/src/etc/deployers/ejb-deployer-jboss-beans.xml
===================================================================
--- trunk/server/src/etc/deployers/ejb-deployer-jboss-beans.xml	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/server/src/etc/deployers/ejb-deployer-jboss-beans.xml	2009-03-24 14:10:51 UTC (rev 86258)
@@ -72,6 +72,19 @@
        <!-- Specify a SecurityDomain as fallback -->
        <property name="defaultSecurityDomain">jboss-ejb-policy</property>
 
+       <!-- A flag indicating if the deployer should validate the ejb-jar.xml/jboss.xml descriptors and components -->
+       <property name="verifyDeployments">true</property>
+
+       <!-- A flag indicating if the verifier should be verbose about its operation -->
+       <property name="verifierVerbose">true</property>
+
+       <!-- Setting this to 'true' will cause all deployments
+       to fail when the Verifier detected a problem with the contained
+       Beans. If false, warnings/errors will be logged but the deployment
+       will not fail.
+       -->
+       <property name="strictVerifier">true</property>
+
     </bean>
 
    <bean name="MergedJBossMetaDataDeployer" class="org.jboss.ejb.deployers.MergedJBossMetaDataDeployer">

Modified: trunk/server/src/main/org/jboss/ejb/deployers/EjbDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/ejb/deployers/EjbDeployer.java	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/server/src/main/org/jboss/ejb/deployers/EjbDeployer.java	2009-03-24 14:10:51 UTC (rev 86258)
@@ -32,13 +32,8 @@
 import javax.management.ObjectName;
 
 import org.jboss.aop.microcontainer.aspects.jmx.JMX;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractDemandMetaData;
-import org.jboss.beans.metadata.plugins.AbstractSupplyMetaData;
 import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
 import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
-import org.jboss.beans.metadata.spi.DemandMetaData;
 import org.jboss.beans.metadata.spi.SupplyMetaData;
 import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.deployers.spi.DeploymentException;
@@ -50,6 +45,7 @@
 import org.jboss.ejb.EjbModule;
 import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
 import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.logging.Logger;
 import org.jboss.metadata.ApplicationMetaData;
 import org.jboss.metadata.ejb.jboss.ContainerConfigurationMetaData;
 import org.jboss.metadata.ejb.jboss.InvokerProxyBindingMetaData;
@@ -62,6 +58,9 @@
 import org.jboss.system.metadata.ServiceDependencyValueMetaData;
 import org.jboss.system.metadata.ServiceInjectionValueMetaData;
 import org.jboss.system.metadata.ServiceMetaData;
+import org.jboss.verifier.BeanVerifier;
+import org.jboss.verifier.event.VerificationEvent;
+import org.jboss.verifier.event.VerificationListener;
 
 /**
  * A real deployer that translates JBossMetaData into ServiceMetaData for
@@ -94,7 +93,17 @@
     * Inject Policy Registration Bean Name 
     */
    private String policyRegistrationName;
-   
+
+   /** Verify EJB-jar contents on deployments */
+   private boolean verifyDeployments;
+
+   /** Enable verbose verification. */
+   private boolean verifierVerbose;
+
+   /** Enable strict verification: deploy JAR only if Verifier reports
+    * no problems */
+   private boolean strictVerifier;
+
    /**
     * Create a new EjbDeployer.
     */
@@ -214,12 +223,59 @@
    public void deploy(VFSDeploymentUnit unit, JBossMetaData deployment)
       throws DeploymentException
    {
-      // TODO: use BeanVerifier to validate the metadata in the DDs
-      
       // If it is a deployment with ejbVersion unknown or 3
       if (!deployment.isEJB2x() && !deployment.isEJB1x())
          return; // let EJB3 deployer handle this
 
+      ApplicationMetaData legacyMD = new ApplicationMetaData(deployment);
+
+      if( verifyDeployments )
+      {
+         // we have a positive attitude
+         boolean allOK = true;
+
+         // wrapping this into a try - catch block to prevent errors in
+         // verifier from stopping the deployment
+         try
+         {
+            BeanVerifier verifier = new BeanVerifier();
+
+            // add a listener so we can log the results
+            verifier.addVerificationListener(new VerificationListener()
+            {
+               Logger verifierLog = Logger.getLogger(EjbDeployer.class, "verifier");
+
+               public void beanChecked(VerificationEvent event)
+               {
+                  verifierLog.debug( "Bean checked: " + event.getMessage() );
+               }
+
+               public void specViolation(VerificationEvent event)
+               {
+                  verifierLog.warn( "EJB spec violation: " + (verifierVerbose ? event.getVerbose() : event.getMessage()));
+               }
+            });
+
+            log.debug("Verifying " + unit.getRoot().toURL());
+            verifier.verify(unit.getRoot().toURL(), legacyMD, unit.getClassLoader());
+
+            allOK = verifier.getSuccess();
+         }
+         catch (Throwable t)
+         {
+            log.warn("Verify failed; continuing", t );
+            allOK = false;
+         }
+
+         // If the verifier is in strict mode and an error/warning
+         // was found in the Verification process, throw a Deployment
+         // Exception
+         if( strictVerifier && !allOK )
+         {
+            throw new DeploymentException("Verification of Enterprise Beans failed, see above for error messages.");
+         }
+      }
+
       ServiceMetaData ejbModule = new ServiceMetaData();
       ejbModule.setCode(EjbModule.class.getName());
 
@@ -242,7 +298,6 @@
       ctor.setSignature(
          new String[]{VFSDeploymentUnit.class.getName(), ApplicationMetaData.class.getName()}
       );
-      ApplicationMetaData legacyMD = new ApplicationMetaData(deployment);
       ctor.setParameters(new Object[]{unit, legacyMD});
       ejbModule.setConstructor(ctor);
 
@@ -452,4 +507,34 @@
 
       return new ObjectName(name);
    }
+
+   public boolean getStrictVerifier()
+   {
+      return strictVerifier;
+   }
+
+   public boolean getVerifierVerbose()
+   {
+      return verifierVerbose;
+   }
+
+   public boolean getVerifyDeployments()
+   {
+      return verifyDeployments;
+   }
+
+   public void setStrictVerifier(boolean strictVerifier)
+   {
+      this.strictVerifier = strictVerifier;
+   }
+
+   public void setVerifierVerbose(boolean verbose)
+   {
+      this.verifierVerbose = verbose;
+   }
+
+   public void setVerifyDeployments(boolean verify)
+   {
+      this.verifyDeployments = verify;
+   }
 }

Modified: trunk/server/src/main/org/jboss/ejb/deployers/EjbDeployerMBean.java
===================================================================
--- trunk/server/src/main/org/jboss/ejb/deployers/EjbDeployerMBean.java	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/server/src/main/org/jboss/ejb/deployers/EjbDeployerMBean.java	2009-03-24 14:10:51 UTC (rev 86258)
@@ -44,21 +44,21 @@
 
    /**
     * Enables/disables the application bean verification upon deployment.
+    */
    void setVerifyDeployments(boolean verify);
    boolean getVerifyDeployments();
-    */
    
    /**
     * Enables/disables the verbose mode on the verifier.
+    */
    void setVerifierVerbose(boolean verbose);
    boolean getVerifierVerbose();   
-    */
 
    /**
     * Enables/disables the strict mode on the verifier.
+    */
    void setStrictVerifier(boolean strictVerifier);
    boolean getStrictVerifier();
-    */
    
    /**
     * Enables/disables the metrics interceptor for containers.

Modified: trunk/testsuite/imports/sections/cmp.xml
===================================================================
--- trunk/testsuite/imports/sections/cmp.xml	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/testsuite/imports/sections/cmp.xml	2009-03-24 14:10:51 UTC (rev 86258)
@@ -133,6 +133,12 @@
          overwrite="true"/>
       
       <!-- build cmp2-jdbc2pm-ageout.jar -->
+      <copy file="${build.resources}/cmp2/ejbselect/META-INF/ejb-jar.xml"
+         tofile="${build.resources}/cmp2/ageout/META-INF/ejb-jar.xml"
+         overwrite="true"/>
+      <copy file="${build.resources}/cmp2/ejbselect/META-INF/jbosscmp-jdbc.xml"
+         tofile="${build.resources}/cmp2/ageout/META-INF/jbosscmp-jdbc.xml"
+         overwrite="true"/>
       <jar destfile="${build.lib}/cmp2-jdbc2pm-ageout.jar">
          <fileset dir="${build.classes}">
             <patternset refid="common.test.client.classes"/>

Modified: trunk/testsuite/src/main/org/jboss/test/bootstrapdependencies/jbas5349/ejb2/SimpleEntity.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/bootstrapdependencies/jbas5349/ejb2/SimpleEntity.java	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/testsuite/src/main/org/jboss/test/bootstrapdependencies/jbas5349/ejb2/SimpleEntity.java	2009-03-24 14:10:51 UTC (rev 86258)
@@ -22,8 +22,9 @@
 package org.jboss.test.bootstrapdependencies.jbas5349.ejb2;
 
 import javax.ejb.EJBObject;
+import java.rmi.RemoteException;
 
 public interface SimpleEntity extends EJBObject
 {
-	public Long getId();
+	public Long getId() throws RemoteException;
 }

Modified: trunk/testsuite/src/main/org/jboss/test/bootstrapdependencies/jbas5349/ejb2/SimpleEntityHome.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/bootstrapdependencies/jbas5349/ejb2/SimpleEntityHome.java	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/testsuite/src/main/org/jboss/test/bootstrapdependencies/jbas5349/ejb2/SimpleEntityHome.java	2009-03-24 14:10:51 UTC (rev 86258)
@@ -21,12 +21,13 @@
  */
 package org.jboss.test.bootstrapdependencies.jbas5349.ejb2;
 
+import java.rmi.RemoteException;
 import javax.ejb.EJBHome;
 import javax.ejb.FinderException;
 import javax.ejb.CreateException;
 
 public interface SimpleEntityHome extends EJBHome
 {
-	public SimpleEntity create(Long id) throws CreateException;
-	public SimpleEntity findByPrimaryKey(Long id) throws FinderException;
+	public SimpleEntity create(Long id) throws CreateException, RemoteException;
+	public SimpleEntity findByPrimaryKey(Long id) throws FinderException, RemoteException;
 }

Modified: trunk/testsuite/src/main/org/jboss/test/cmp2/lob/LOBHome.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cmp2/lob/LOBHome.java	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/testsuite/src/main/org/jboss/test/cmp2/lob/LOBHome.java	2009-03-24 14:10:51 UTC (rev 86258)
@@ -51,5 +51,5 @@
       throws FinderException, RemoteException;
 
    public java.util.Collection select(java.lang.String query , java.lang.Object[] params) 
-      throws javax.ejb.FinderException;
+      throws javax.ejb.FinderException, RemoteException;
 }

Modified: trunk/testsuite/src/main/org/jboss/test/refs/ejbs2x/interfaces/Session.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/refs/ejbs2x/interfaces/Session.java	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/testsuite/src/main/org/jboss/test/refs/ejbs2x/interfaces/Session.java	2009-03-24 14:10:51 UTC (rev 86258)
@@ -21,11 +21,13 @@
  */
 package org.jboss.test.refs.ejbs2x.interfaces;
 
+import java.rmi.RemoteException;
+
 /**
  * @author Scott.Stark at jboss.org
  * @version $Revision$
  */
 public interface Session extends javax.ejb.EJBObject
 {
-   public void checkRefs(String[] encNames) throws Exception;
+   public void checkRefs(String[] encNames) throws Exception, RemoteException;
 }

Modified: trunk/testsuite/src/resources/cluster/ejb2/basic/META-INF/ejb-jar.xml
===================================================================
--- trunk/testsuite/src/resources/cluster/ejb2/basic/META-INF/ejb-jar.xml	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/testsuite/src/resources/cluster/ejb2/basic/META-INF/ejb-jar.xml	2009-03-24 14:10:51 UTC (rev 86258)
@@ -94,7 +94,6 @@
          <persistence-type>Bean</persistence-type>
          <prim-key-class>java.lang.String</prim-key-class>
          <reentrant>False</reentrant>
-         <primkey-field>name</primkey-field>
          <ejb-ref>
             <description>An EJB ref for this bean to test</description>
             <ejb-ref-name>ejb/myEJBRef</ejb-ref-name>

Modified: trunk/testsuite/src/resources/jca/bank/META-INF/ejb-jar.xml
===================================================================
--- trunk/testsuite/src/resources/jca/bank/META-INF/ejb-jar.xml	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/testsuite/src/resources/jca/bank/META-INF/ejb-jar.xml	2009-03-24 14:10:51 UTC (rev 86258)
@@ -43,7 +43,6 @@
          <persistence-type>Bean</persistence-type>
          <prim-key-class>java.lang.Integer</prim-key-class>
          <reentrant>False</reentrant>
-         <primkey-field>id</primkey-field>
 
       </entity>
 
@@ -61,7 +60,6 @@
          <persistence-type>Bean</persistence-type>
          <prim-key-class>java.lang.Integer</prim-key-class>
          <reentrant>False</reentrant>
-         <primkey-field>id</primkey-field>
 
       </entity>
 

Modified: trunk/testsuite/src/resources/testbean/META-INF/ejb-jar.xml
===================================================================
--- trunk/testsuite/src/resources/testbean/META-INF/ejb-jar.xml	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/testsuite/src/resources/testbean/META-INF/ejb-jar.xml	2009-03-24 14:10:51 UTC (rev 86258)
@@ -93,11 +93,10 @@
             <persistence-type>Bean</persistence-type>
             <prim-key-class>java.lang.String</prim-key-class>
             <reentrant>False</reentrant>
-            <primkey-field>name</primkey-field>
             <ejb-ref>
                 <description>An EJB ref for this bean to test</description>
                 <ejb-ref-name>ejb/myEJBRef</ejb-ref-name>
-          <ejb-ref-type>Session</ejb-ref-type>
+                <ejb-ref-type>Session</ejb-ref-type>
                 <home>org.jboss.test.testbean.interfaces.StatelessSessionHome</home>
                 <remote>org.jboss.test.testbean.interfaces.StatelessSession</remote>
                 <ejb-link>nextgen.StatelessSession</ejb-link>

Modified: trunk/testsuite/src/resources/testbyvalue/META-INF/ejb-jar.xml
===================================================================
--- trunk/testsuite/src/resources/testbyvalue/META-INF/ejb-jar.xml	2009-03-24 14:00:57 UTC (rev 86257)
+++ trunk/testsuite/src/resources/testbyvalue/META-INF/ejb-jar.xml	2009-03-24 14:10:51 UTC (rev 86258)
@@ -68,7 +68,6 @@
              <persistence-type>Bean</persistence-type>
              <prim-key-class>java.lang.String</prim-key-class>
              <reentrant>False</reentrant>
-             <primkey-field>name</primkey-field>
          </entity>
         <entity>
              <description>TestByValue beans</description>
@@ -79,7 +78,6 @@
              <persistence-type>Bean</persistence-type>
              <prim-key-class>java.lang.String</prim-key-class>
              <reentrant>False</reentrant>
-             <primkey-field>name</primkey-field>
          </entity>
     </enterprise-beans>
     <assembly-descriptor>




More information about the jboss-cvs-commits mailing list