| EMBDeployer.java |
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.media.emb;
import java.net.URL;
import org.dom4j.io.SAXReader;
import org.jboss.deployment.DeploymentException;
import org.jboss.deployment.DeploymentInfo;
import org.jboss.ejb.EJBDeployer;
import org.jboss.ejb.EJBDeployerMBean;
import org.jboss.media.engine.MediaXmlLoader;
/**
* @version <tt>$Revision: 1.3 $</tt>
* @author <a href="mailto:spyridon_samothrakis@yahoo.com">Spyridon Samothrakis</a>
* @jmx:mbean extends="org.jboss.ejb.EJBDeployerMBean"
*/
public class EMBDeployer
extends EJBDeployer
implements EMBDeployerMBean, EJBDeployerMBean
{
public boolean accepts(DeploymentInfo di)
{
// To be accepted the deployment's root name must end in jar
String urlStr = di.url.getFile();
if (!urlStr.endsWith("jar") && !urlStr.endsWith("jar/"))
{
return false;
}
// jar must contain ejb-jar.xml and jboss-media.xml
boolean accepts = false;
try
{
URL dd = di.localCl.findResource("META-INF/ejb-jar.xml");
if (dd == null)
{
return false;
}
URL dm = di.localCl.findResource("META-INF/jboss-media.xml");
if (dm == null)
{
return false;
}
// If the DD url is not a subset of the urlStr then this is coming
// from a jar referenced by the deployment jar manifest and the
// this deployment jar it should not be treated as an ejb-jar
if (di.localUrl != null)
{
urlStr = di.localUrl.toString();
}
String ddStr = dd.toString();
if (ddStr.indexOf(urlStr) >= 0)
{
accepts = true;
}
}
catch (Exception ignore)
{
}
return accepts;
}
/* (non-Javadoc)
* @see org.jboss.deployment.SubDeployer#create(org.jboss.deployment.DeploymentInfo)
*/
public synchronized void create(DeploymentInfo di)
throws DeploymentException
{
super.create(di);
try
{
// Spy: Have a look at this:
/*MediaXmlLoader.deployXML(
di.getW3CDocument(),
di.localUrl,
getServer());*/
}
catch (Exception e)
{
if (e instanceof DeploymentException)
throw (DeploymentException) e;
throw new DeploymentException("Failed to load metadata", e);
}
}
/* (non-Javadoc)
* @see org.jboss.deployment.SubDeployer#start(org.jboss.deployment.DeploymentInfo)
*/
public synchronized void start(DeploymentInfo di) throws DeploymentException
{
// TODO Auto-generated method stub
super.start(di);
}
protected void parseDocument(DeploymentInfo di) throws Exception
{
// Spy: Have a look at this:
/*if (di.getDocument() == null)
{
//DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
URL docURL = di.localUrl;
// Load jboss-service.xml from the jar or directory
if (di.isXML == false)
docURL = di.localCl.findResource("META-INF/jboss-media.xml");
// Validate that the descriptor was found
if (docURL == null)
throw new DeploymentException("Failed to find META-INF/jboss-media.xml");
SAXReader sr = new SAXReader();
di.setDocument(sr.read(docURL));
}
else
{
log.debug("Using existing deployment.document");
}*/
}
}| EMBDeployer.java |