[jboss-svn-commits] JBL Code SVN: r26033 - labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Apr 15 02:14:44 EDT 2009
Author: beve
Date: 2009-04-15 02:14:43 -0400 (Wed, 15 Apr 2009)
New Revision: 26033
Modified:
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java
Log:
For work. Still don't have the wsdl location working. Checking in so that Kev can take a look.
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java 2009-04-15 04:01:20 UTC (rev 26032)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java 2009-04-15 06:14:43 UTC (rev 26033)
@@ -92,7 +92,12 @@
/**
* Deployment prefix for esb deployments.
*/
- private String deploymentPrefix = "jboss.esb:deployment=";
+ private String esbDeploymentPrefix = "jboss.esb:deployment=";
+
+ /**
+ * Deployment prefix for war deployments.
+ */
+ private String warDeploymentPrefix = "jboss.web.deployment:war=";
/**
* Logger.
@@ -208,7 +213,7 @@
final String deployable = MetaData.getElementContent(depend);
if (deployable.endsWith(".war"))
{
- String objectName = "jboss.web.deployment:war=/" + deployable.substring(0, deployable.indexOf('.'));
+ String objectName = warDeploymentPrefix + "/" + deployable.substring(0, deployable.indexOf('.'));
dependencies.add(new ObjectName(objectName));
}
}
@@ -268,7 +273,7 @@
{
if (!deploymentName.equals(artifact))
{
- final String canonicalName = deploymentPrefix + artifact ;
+ final String canonicalName = esbDeploymentPrefix + artifact ;
try
{
ObjectName on = ObjectNameConverter.convert(canonicalName);
@@ -294,10 +299,15 @@
this.actionArtifactsFile = actionArtifactsFile;
}
- public void setDeploymentPrefix(String deploymentPrefix)
+ public void setEsbDeploymentPrefix(String deploymentPrefix)
{
- this.deploymentPrefix = deploymentPrefix;
+ this.esbDeploymentPrefix = deploymentPrefix;
}
+
+ public void setWarDeploymentPrefix(String deploymentPrefix)
+ {
+ this.warDeploymentPrefix = deploymentPrefix;
+ }
/**
* Filter for filtering out ESB configuration files.
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java 2009-04-15 04:01:20 UTC (rev 26032)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java 2009-04-15 06:14:43 UTC (rev 26033)
@@ -37,6 +37,8 @@
import org.jboss.internal.soa.esb.webservice.ESBServiceEndpointInfo;
import org.jboss.internal.soa.esb.webservice.JAXWSProviderClassGenerator;
import org.jboss.internal.soa.esb.webservice.WebServicePublishException;
+import org.jboss.metadata.common.jboss.WebserviceDescriptionMetaData;
+import org.jboss.metadata.common.jboss.WebserviceDescriptionsMetaData;
import org.jboss.metadata.javaee.spec.ParamValueMetaData;
import org.jboss.metadata.web.jboss.JBossServletMetaData;
import org.jboss.metadata.web.jboss.JBossServletsMetaData;
@@ -66,15 +68,12 @@
/**
* No-args constructor.
- *
- * Sets the deployment stage to CLASSLOADER and set the output of
- * this deployer to {@link JSEArchiveMetaData}.
*/
public EsbWebServiceDeployer()
{
super(EsbMetaData.class);
setStage(DeploymentStages.POST_PARSE);
- setOutput(JSEArchiveMetaData.class);
+ setOutput(JBossWebMetaData.class);
setOutput(EsbMetaData.class);
}
@@ -89,13 +88,14 @@
final List<WebserviceInfo> endpointServices = esbMetaData.getModel().getWebserviceServices();
if (endpointServices != null && endpointServices.size() > 0)
{
- log.info("Deploying webservices for : " + esbMetaData.getDeploymentName() + ", " + deploymentUnit.hashCode());
+ log.info("Deploying webservices for : " + esbMetaData.getDeploymentName());
final JBossWebMetaData webMetaData = new JBossWebMetaData();
final JBossServletsMetaData servlets = new JBossServletsMetaData();
final List<ServletMappingMetaData> servletMappings = new ArrayList<ServletMappingMetaData>();
final FiltersMetaData filters = new FiltersMetaData();
- final List<ContractReferencePublisher> publishers = new ArrayList<ContractReferencePublisher>() ;
+ final List<ContractReferencePublisher> publishers = new ArrayList<ContractReferencePublisher>() ;
+ WebserviceDescriptionsMetaData descriptions = new WebserviceDescriptionsMetaData();
try
{
@@ -109,12 +109,10 @@
URL webInfUrl = new URL(dynamicClassRoot.toExternalForm() + "/WEB-INF");
//VirtualFile webInfDir = MemoryFileFactory.createDirectory(webInfUrl);
- // Add WEB-INF to the classpath
//deploymentUnit.addClassPath(webInfDir);
URL classesUrl = new URL(webInfUrl + "/classes");
VirtualFile classesDir = MemoryFileFactory.createDirectory(classesUrl);
- // Add WEB-INF/classes to the classpath
deploymentUnit.addClassPath(classesDir);
final JAXWSProviderClassGenerator generator = new JAXWSProviderClassGenerator();
@@ -142,37 +140,52 @@
String servletClassName = serviceInfo.getClassName().replace('.', '/') + ".class";
URL servletClassUrl = new URL(classesUrl + "/" + servletClassName);
MemoryFileFactory.putFile(servletClassUrl, servletClass);
- log.info("Generated servlet" + servletClassUrl);
+ log.info("Generated ws impl: " + servletClassUrl);
servlets.add(createServlets(service, serviceInfo, generator, includeHandlers));
servletMappings.add(createServletMapping(serviceInfo));
-
- /*
- final String wsdl = ESBContractGenerator.generateWSDL(webserviceInfo, serviceInfo);
- URL wsdlUrl = new URL(dynamicClassRoot + "/" + serviceInfo.getWSDLFileName());
- log.info("WDSL : " + wsdlUrl);
- MemoryFileFactory.putFile(wsdlUrl, wsdl.getBytes());
- */
-
+
+ WebserviceDescriptionMetaData description = new WebserviceDescriptionMetaData();
+ description.setName(esbMetaData.getDeploymentName());
+ description.setWebserviceDescriptionName(esbMetaData.getDeploymentName());
+ description.setWsdlPublishLocation(serviceInfo.getWSDLFileName());
+ descriptions.add(description);
+
final ContractReferencePublisher publisher = new ESBServiceContractPublisher(service, webserviceInfo.getDescription(), serviceInfo.getServletName());
publishers.add(publisher);
}
}
catch (final Exception e)
{
- throw new DeploymentException("Failed to create webservice artifact", e);
+ throw new DeploymentException("Failed to create webservice artifact", e);
}
webMetaData.setContextRoot(esbMetaData.getDeploymentName());
webMetaData.setServlets(servlets);
webMetaData.setServletMappings(servletMappings);
webMetaData.setFilters(filters);
+ webMetaData.setWebserviceDescriptions(descriptions);
esbMetaData.setPublishers(publishers);
deploymentUnit.addAttachment(JBossWebMetaData.class, webMetaData);
}
}
+ public void undeploy(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData)
+ {
+ /*
+ try
+ {
+ final VirtualFile dynamicClassRoot = VFS.getRoot(new URL("vfsmemory", esbMetaData.getDeploymentName(), ""));
+ deploymentUnit.removeClassPath(dynamicClassRoot);
+ }
+ catch (Exception e)
+ {
+ log.warn("Exception while removing dynamic vfs.", e);
+ }
+ */
+ }
+
private ServletMappingMetaData createServletMapping(ESBServiceEndpointInfo serviceInfo)
{
ServletMappingMetaData servletMapping = new ServletMappingMetaData();
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java 2009-04-15 04:01:20 UTC (rev 26032)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java 2009-04-15 06:14:43 UTC (rev 26033)
@@ -30,16 +30,21 @@
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.internal.soa.esb.webservice.ESBContractGenerator;
import org.jboss.internal.soa.esb.webservice.ESBServiceEndpointInfo;
-import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.soa.esb.listeners.config.WebserviceInfo;
import org.jboss.virtual.MemoryFileFactory;
import org.jboss.virtual.VirtualFile;
-import org.jboss.wsf.spi.metadata.j2ee.JSEArchiveMetaData;
+import org.jboss.ws.metadata.umdm.UnifiedMetaData;
/**
* MC deployer that generates a wsdl and then adds this wsdl to
* a virtual memory file system.
* <p/>
+ * It accepts an EsbMetaData instance and looks for the existence of any WebService (WS)
+ * information.If WS information is found a wsdl will be generated and it will be added
+ * to the deployment unit as a metadata location. The wsdl file is added as a VirtualFile
+ * to an in-memory virtual file system.
+ * <p/>
+ *
* This deployer is set at the POST_CLASSLOADER deployment stage as it requries
* access to classloaders for generating the wsdl.
*
@@ -57,8 +62,7 @@
{
super(EsbMetaData.class);
setStage(DeploymentStages.POST_CLASSLOADER);
- setOutput(JSEArchiveMetaData.class);
- setOutput(EsbMetaData.class);
+ setOutput(UnifiedMetaData.class);
}
public void create()
@@ -72,11 +76,11 @@
final List<WebserviceInfo> endpointServices = esbMetaData.getModel().getWebserviceServices();
if (endpointServices != null && endpointServices.size() > 0)
{
- log.info("Deploying webservices for : " + esbMetaData.getDeploymentName() + ", " + deploymentUnit.getClassPath());
-
+ log.info("Deploying webservices for : " + esbMetaData.getDeploymentName());
try
{
- URL dynamicClassRoot = new URL("vfsmemory", esbMetaData.getDeploymentName(), "");
+ URL dynamicClassRoot = new URL("vfsmemory", esbMetaData.getDeploymentName() + "_WSDL", "");
+ MemoryFileFactory.createRoot(dynamicClassRoot);
for (WebserviceInfo webserviceInfo : endpointServices)
{
@@ -85,11 +89,11 @@
URL wsdlUrl = new URL(dynamicClassRoot + "/" + serviceInfo.getWSDLFileName());
VirtualFile wsdlFile = MemoryFileFactory.putFile(wsdlUrl, wsdl.getBytes());
- deploymentUnit.addClassPath(wsdlFile);
- URL resource = deploymentUnit.getClassLoader().getResource(serviceInfo.getWSDLFileName());
- log.info("WDSL loaded with classloader: " + resource);
- log.info("WDSL deploymentUnit: " + deploymentUnit.getClassPath());
- log.info("WDSL : " + wsdlUrl);
+ log.info("Added wsdl to deployment metadata location: " + wsdlFile.getParent());
+ // As far as I can tell it Does not matter what location is used. The WS deployer will not use the
+ // metadata location when searching for the wsdl file.
+ // We might need to set the wsdlLocation to a different one when generating the WS impl.
+ deploymentUnit.appendMetaDataLocation(wsdlFile.getParent());
}
}
catch (final Exception e)
@@ -98,4 +102,19 @@
}
}
}
+
+ public void undeploy(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData)
+ {
+ /*
+ try
+ {
+ final VirtualFile integration = VFS.getRoot(new URL("vfsmemory", esbMetaData.getDeploymentName(), ""));
+ deploymentUnit.removeClassPath(integration);
+ }
+ catch (Exception e)
+ {
+ log.warn("Exception while removing dynamic vfs.", e);
+ }
+ */
+ }
}
More information about the jboss-svn-commits
mailing list