[jboss-cvs] JBossAS SVN: r86163 - in branches/Branch_5_x/server/src: main/org/jboss/ejb/deployers and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Mar 20 10:28:18 EDT 2009
Author: alex.loubyansky at jboss.com
Date: 2009-03-20 10:28:18 -0400 (Fri, 20 Mar 2009)
New Revision: 86163
Modified:
branches/Branch_5_x/server/src/etc/deployers/ejb-deployer-jboss-beans.xml
branches/Branch_5_x/server/src/main/org/jboss/ejb/deployers/EjbDeployer.java
branches/Branch_5_x/server/src/main/org/jboss/ejb/deployers/EjbDeployerMBean.java
Log:
JBAS-4666
Modified: branches/Branch_5_x/server/src/etc/deployers/ejb-deployer-jboss-beans.xml
===================================================================
--- branches/Branch_5_x/server/src/etc/deployers/ejb-deployer-jboss-beans.xml 2009-03-20 13:14:32 UTC (rev 86162)
+++ branches/Branch_5_x/server/src/etc/deployers/ejb-deployer-jboss-beans.xml 2009-03-20 14:28:18 UTC (rev 86163)
@@ -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: branches/Branch_5_x/server/src/main/org/jboss/ejb/deployers/EjbDeployer.java
===================================================================
--- branches/Branch_5_x/server/src/main/org/jboss/ejb/deployers/EjbDeployer.java 2009-03-20 13:14:32 UTC (rev 86162)
+++ branches/Branch_5_x/server/src/main/org/jboss/ejb/deployers/EjbDeployer.java 2009-03-20 14:28:18 UTC (rev 86163)
@@ -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
@@ -89,7 +88,17 @@
private String securityManagementName;
private String securityContextClassName;
private String defaultSecurityDomain;
-
+
+ /** 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;
+
/**
* Inject Policy Registration Bean Name
*/
@@ -213,13 +222,60 @@
@Override
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: branches/Branch_5_x/server/src/main/org/jboss/ejb/deployers/EjbDeployerMBean.java
===================================================================
--- branches/Branch_5_x/server/src/main/org/jboss/ejb/deployers/EjbDeployerMBean.java 2009-03-20 13:14:32 UTC (rev 86162)
+++ branches/Branch_5_x/server/src/main/org/jboss/ejb/deployers/EjbDeployerMBean.java 2009-03-20 14:28:18 UTC (rev 86163)
@@ -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.
More information about the jboss-cvs-commits
mailing list