[jboss-svn-commits] JBL Code SVN: r28495 - in labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss: soa/esb/listeners/config and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jul 27 09:50:28 EDT 2009
Author: tfennelly
Date: 2009-07-27 09:50:28 -0400 (Mon, 27 Jul 2009)
New Revision: 28495
Modified:
labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/HttpGatewayDeploymentFactory.java
labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/Servlet.java
labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebDeploymentArchive.java
labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebModel.java
labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/web.xml.ftl
labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/soa/esb/util/DeploymentArchive.java
Log:
changing EBWS to use WebModel
Modified: labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/HttpGatewayDeploymentFactory.java
===================================================================
--- labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/HttpGatewayDeploymentFactory.java 2009-07-27 13:49:49 UTC (rev 28494)
+++ labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/HttpGatewayDeploymentFactory.java 2009-07-27 13:50:28 UTC (rev 28495)
@@ -50,7 +50,7 @@
public void updateDeployment(ConfigTree webEndpointConfig, WebDeploymentArchive webDeployment) throws ConfigurationException {
String servletName = webEndpointConfig.getRequiredAttribute("name");
- Servlet servlet = new Servlet(servletName, HttpGatewayServlet.class);
+ Servlet servlet = new Servlet(servletName, HttpGatewayServlet.class.getName());
// Set the endpoint urlPattern so as to map requests from that namespace into
// this servlet instance...
Modified: labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/Servlet.java
===================================================================
--- labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/Servlet.java 2009-07-27 13:49:49 UTC (rev 28494)
+++ labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/Servlet.java 2009-07-27 13:50:28 UTC (rev 28495)
@@ -37,13 +37,13 @@
public class Servlet {
private String name;
- private Class<? extends HttpServlet> runtimeClass;
+ private String runtimeClass;
private List<KeyValuePair> params = new ArrayList<KeyValuePair>();
private List<String> urlMappings = new ArrayList<String>();
- public Servlet(String name, Class<? extends HttpServlet> runtimeClass) {
+ public Servlet(String name, String runtimeClass) {
AssertArgument.isNotNullAndNotEmpty(name, "name");
- AssertArgument.isNotNull(runtimeClass, "runtimeClass");
+ AssertArgument.isNotNullAndNotEmpty(runtimeClass, "runtimeClass");
this.name = name;
this.runtimeClass = runtimeClass;
}
@@ -52,7 +52,7 @@
return name;
}
- public Class<? extends HttpServlet> getRuntimeClass() {
+ public String getRuntimeClass() {
return runtimeClass;
}
Modified: labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebDeploymentArchive.java
===================================================================
--- labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebDeploymentArchive.java 2009-07-27 13:49:49 UTC (rev 28494)
+++ labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebDeploymentArchive.java 2009-07-27 13:50:28 UTC (rev 28495)
@@ -79,16 +79,21 @@
}
}
- public void addEntry(String path, InputStream data) {
+ public final void addEntry(String path, InputStream data) {
assertNotFinalized();
super.addEntry(path, data);
}
- public void addEntry(String path) {
+ public final void addEntry(String path, byte[] data) {
+ assertNotFinalized();
+ super.addEntry(path, data);
+ }
+
+ public final void addEntry(String path) {
super.addEntry(path);
}
- public void addEntry(String path, String resource) throws IOException {
+ public final void addEntry(String path, String resource) throws IOException {
super.addEntry(path, resource);
}
Modified: labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebModel.java
===================================================================
--- labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebModel.java 2009-07-27 13:49:49 UTC (rev 28494)
+++ labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebModel.java 2009-07-27 13:50:28 UTC (rev 28495)
@@ -31,8 +31,13 @@
*/
public class WebModel {
+ private List<Servlet> filters = new ArrayList<Servlet>();
private List<Servlet> servlets = new ArrayList<Servlet>();
+ public List<Servlet> getFilters() {
+ return filters;
+ }
+
public List<Servlet> getServlets() {
return servlets;
}
Modified: labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/web.xml.ftl
===================================================================
--- labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/web.xml.ftl 2009-07-27 13:49:49 UTC (rev 28494)
+++ labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/web.xml.ftl 2009-07-27 13:50:28 UTC (rev 28495)
@@ -4,12 +4,37 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
+ <#list webModel.filters as filter>
+
+ <!-- Filter '${filter.name}' configuration... -->
+ <filter>
+ <filter-name>${filter.name}</filter-name>
+ <filter-class>${filter.runtimeClass}</filter-class>
+
+ <#list filter.params as param>
+ <init-param>
+ <param-name>${param.key}</param-name>
+ <param-value>${param.value}</param-value>
+ </init-param>
+ </#list>
+
+ </filter>
+
+ <#list filter.urlMappings as urlMapping>
+ <filter-mapping>
+ <filter-name>${filter.name}</filter-name>
+ <url-pattern>${urlMapping}</url-pattern>
+ </filter-mapping>
+ </#list>
+ </#list>
+
+
<#list webModel.servlets as servlet>
<!-- Servlet '${servlet.name}' configuration... -->
<servlet>
<servlet-name>${servlet.name}</servlet-name>
- <servlet-class>${servlet.runtimeClass.name}</servlet-class>
+ <servlet-class>${servlet.runtimeClass}</servlet-class>
<#list servlet.params as param>
<init-param>
Modified: labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
===================================================================
--- labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java 2009-07-27 13:49:49 UTC (rev 28494)
+++ labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java 2009-07-27 13:50:28 UTC (rev 28495)
@@ -28,7 +28,6 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
-import java.util.zip.ZipOutputStream;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
@@ -49,6 +48,7 @@
import org.jboss.internal.soa.esb.assertion.AssertArgument;
import org.jboss.internal.soa.esb.listeners.war.WebDeploymentArchive;
import org.jboss.internal.soa.esb.listeners.war.WebGatewayDeploymentFactory;
+import org.jboss.internal.soa.esb.listeners.war.Servlet;
import org.jboss.logging.Logger;
import org.jboss.metadata.MetaData;
import org.jboss.metadata.XmlFileLoader;
@@ -58,6 +58,7 @@
import org.jboss.soa.esb.Service;
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.helpers.KeyValuePair;
import org.jboss.soa.esb.lifecycle.LifecycleResourceManager;
import org.jboss.soa.esb.listeners.config.model.ModelAdapter;
import org.jboss.soa.esb.listeners.ListenerTagNames;
@@ -92,7 +93,7 @@
/**
* The path the the directory that will be used to generate the war file
- * for EBWS deployments.
+ * for all web gateway deployments (EBWS and HTTP Gateways).
*/
private String warFilesDir;
@@ -267,28 +268,8 @@
// invoke super-class initialization
super.init(di);
- // create webservice WAR
- final ClassLoader origCL = Thread.currentThread().getContextClassLoader() ;
- final List<ContractReferencePublisher> publishers = new ArrayList<ContractReferencePublisher>() ;
- final File warFile ;
- try
- {
- Thread.currentThread().setContextClassLoader(di.localCl) ;
- warFile = createWebserviceWars(di, model, deploymentName, publishers);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(origCL) ;
- }
- if (warFile != null)
- {
- deployment.setPublishers(publishers) ;
- final URL warFileURL = warFile.toURL() ;
- deployUrl(di, warFileURL, warFile.getName()) ;
- }
-
- // Deploy web gateways...
- deployWebGateways(model, di);
+ // Deploy web gateways...
+ deployWebGateways(deployment, model, di);
}
catch (Exception e)
{
@@ -431,24 +412,15 @@
}
}
- private File createWebserviceWars(final DeploymentInfo di, final ModelAdapter model, final String deploymentName,
- final List<ContractReferencePublisher> publishers)
+ private void createWebserviceWars(final DeploymentInfo di, final ModelAdapter model, final String deploymentName,
+ final List<ContractReferencePublisher> publishers, WebDeploymentArchive webDeployment)
throws DeploymentException
{
- final String esbName = di.shortName;
final List<WebserviceInfo> endpointServices = model.getWebserviceServices() ;
if (endpointServices != null)
{
if (endpointServices.size() > 0)
{
- final StringWriter filterDefinitions = new StringWriter() ;
- final StringWriter filterMappings = new StringWriter() ;
- final StringWriter servletDefinitions = new StringWriter() ;
- final StringWriter servletMappings = new StringWriter() ;
-
- final ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
- final ZipOutputStream zos = new ZipOutputStream(baos) ;
- zos.setComment("ESB war file for exposing webservices: " + esbName) ;
try
{
final JAXWSProviderClassGenerator generator = new JAXWSProviderClassGenerator() ;
@@ -456,103 +428,54 @@
for(WebserviceInfo webserviceInfo: endpointServices)
{
final Service service = webserviceInfo.getService() ;
-
+
// Copy all schemas to the wsdl directory to support imports.
final File esbArchive = new File(di.watch.getFile());
final Map<String, String> schemasMap = JBoss4ESBDeployer.getSchemas(esbArchive);
final String wsdlDir = "WEB-INF/wsdl/" + service.getCategory().replace('/', '_') + "/";
for (Entry<String, String> schemaEntry : schemasMap.entrySet())
{
- try
- {
- addFile(zos, wsdlDir + schemaEntry.getKey(), schemaEntry.getValue()) ;
- log.debug("Added schema " + wsdlDir + schemaEntry.getKey());
- }
- catch (final ZipException e)
- {
- log.debug(e.getMessage(), e);
- }
+ webDeployment.addEntry(wsdlDir + schemaEntry.getKey(), schemaEntry.getValue().getBytes("UTF-8"));
+ log.debug("Added schema " + wsdlDir + schemaEntry.getKey());
}
final ESBServiceEndpointInfo serviceInfo = new ESBServiceEndpointInfo(webserviceInfo) ;
final String wsdl = ESBContractGenerator.generateWSDL(webserviceInfo, serviceInfo) ;
- addFile(zos, serviceInfo.getWSDLFileName(), wsdl) ;
-
+ webDeployment.addEntry(serviceInfo.getWSDLFileName(), wsdl.getBytes("UTF-8"));
+
final String handlers = JBossDeployerUtil.getHandlers(serviceInfo) ;
final boolean includeHandlers = (handlers != null) ;
if (includeHandlers)
{
final String wsHandlerName = "WEB-INF/classes/" + serviceInfo.getPackageName().replace('.', '/') + "/esb-jaxws-handlers.xml" ;
- addFile(zos, wsHandlerName, handlers) ;
+ webDeployment.addEntry(wsHandlerName, handlers.getBytes("UTF-8"));
}
final byte[] wsClass = generator.generate(service.getCategory(),
service.getName(), serviceInfo, includeHandlers) ;
final String wsClassName = serviceInfo.getClassName().replace('.', '/') + ".class" ;
- addFile(zos, "WEB-INF/classes/" + wsClassName, wsClass) ;
+ webDeployment.addEntry("WEB-INF/classes/" + wsClassName, wsClass);
// Filter...
// At the moment we only need the filter to overcome a bug in JBossWS re In-Only endpoints, so
// we only include for one way services...
if(serviceInfo.isOneWay()) {
String filterName = serviceInfo.getServletName() + "_Filter";
+ Servlet filter = new Servlet(filterName, ESBResponseFilter.class.getName());
- filterDefinitions.append("<filter><filter-name>") ;
- filterDefinitions.append(filterName) ;
- filterDefinitions.append("</filter-name><filter-class>") ;
- filterDefinitions.append(ESBResponseFilter.class.getName()) ;
- filterDefinitions.append("</filter-class>") ;
- filterDefinitions.append("<init-param><param-name>OneWay</param-name><param-value>true</param-value></init-param>") ;
- filterDefinitions.append("</filter>") ;
-
- filterMappings.append("<filter-mapping><filter-name>") ;
- filterMappings.append(filterName) ;
- filterMappings.append("</filter-name><servlet-name>") ;
- filterMappings.append(serviceInfo.getServletName()) ;
- filterMappings.append("</servlet-name></filter-mapping>") ;
+ filter.getParams().add(new KeyValuePair("OneWay", "true"));
+ filter.getUrlMappings().add(serviceInfo.getServletName());
+ webDeployment.getWebModel().getFilters().add(filter);
}
// Servlet....
- servletDefinitions.append("<servlet><servlet-name>") ;
- servletDefinitions.append(serviceInfo.getServletName()) ;
- servletDefinitions.append("</servlet-name><servlet-class>") ;
- servletDefinitions.append(serviceInfo.getClassName()) ;
- servletDefinitions.append("</servlet-class></servlet>") ;
+ final Servlet servlet = new Servlet(serviceInfo.getServletName(), serviceInfo.getClassName());
+ servlet.getUrlMappings().add(serviceInfo.getServletPath());
+ webDeployment.getWebModel().getServlets().add(servlet);
- servletMappings.append("<servlet-mapping><servlet-name>") ;
- servletMappings.append(serviceInfo.getServletName()) ;
- servletMappings.append("</servlet-name><url-pattern>") ;
- servletMappings.append(serviceInfo.getServletPath()) ;
- servletMappings.append("</url-pattern></servlet-mapping>") ;
-
final ContractReferencePublisher publisher = new ESBServiceContractPublisher(service, webserviceInfo.getDescription(), serviceInfo.getServletName()) ;
publishers.add(publisher) ;
}
-
- final StringWriter webXml = new StringWriter() ;
- webXml.append("<web-app xmlns=\"http://java.sun.com/xml/ns/j2ee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"") ;
- webXml.append(" xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\" version=\"2.4\">") ;
- webXml.append(filterDefinitions.getBuffer()) ;
- webXml.append(filterMappings.getBuffer()) ;
- webXml.append(servletDefinitions.getBuffer()) ;
- webXml.append(servletMappings.getBuffer()) ;
- webXml.append("</web-app>") ;
-
- addFile(zos, "WEB-INF/web.xml", webXml.toString()) ;
-
- final File warFile = getESBWarFile(deploymentName, esbName, true) ;
-
- zos.close() ;
-
- final FileOutputStream fos = new FileOutputStream(warFile) ;
- fos.write(baos.toByteArray()) ;
- fos.close() ;
-
- // Maintain a list of sub deployments so we can clean them
- // up on undeploy...
- getSubDeployments(di).add(warFile);
-
- return warFile ;
}
catch (final Exception ex)
{
@@ -560,16 +483,29 @@
}
}
}
- return null ;
}
- private void deployWebGateways(ModelAdapter model, DeploymentInfo di) throws ConfigurationException, DeploymentException, JMException {
+ private void deployWebGateways(JBoss4ESBDeployment deployment, ModelAdapter model, DeploymentInfo di) throws ConfigurationException, DeploymentException, JMException {
+ final String deploymentName = deployment.getDeploymentName() ;
+ final List<ContractReferencePublisher> publishers = new ArrayList<ContractReferencePublisher>() ;
Map<String, List<ConfigTree>> listenerGroups = getListenerGroups(model);
Set<Map.Entry<String, List<ConfigTree>>> listenerGroupEntries = listenerGroups.entrySet();
ClasspathDeploymentResourceLocator diResourceLocator = new ClasspathDeploymentResourceLocator(di.localCl);
- WebDeploymentArchive webDeployment = new WebDeploymentArchive(di.shortName + "-http.war"); // TODO: update after merging EBWS !!
+ WebDeploymentArchive webDeployment = new WebDeploymentArchive(getESBWarFileName(di));
- // Add everything to the webDeployment...
+ // Add the EBWS components...
+ final ClassLoader origCL = Thread.currentThread().getContextClassLoader() ;
+ try
+ {
+ Thread.currentThread().setContextClassLoader(di.localCl) ;
+ createWebserviceWars(di, model, deploymentName, publishers, webDeployment);
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(origCL) ;
+ }
+
+ // Add the webDeployment...
for(Map.Entry<String, List<ConfigTree>> listenerGroup : listenerGroupEntries) {
String busIdRef = listenerGroup.getKey();
List<ConfigTree> listeners = listenerGroup.getValue();
@@ -608,6 +544,8 @@
}
throw new ConfigurationException("Error deploying '" + file.getAbsolutePath() + "'.", throwable);
}
+
+ deployment.setPublishers(publishers) ;
}
}
@@ -690,39 +628,13 @@
return file;
}
- private File getESBWarFile(final String deploymentName, final String esbName, final boolean createDir)
+ private String getESBWarFileName(final DeploymentInfo di)
{
- final File esbDir = new File(esbWarFiles, deploymentName) ;
- if (!esbDir.exists())
- {
- if (!createDir)
- {
- return null ;
- }
- esbDir.mkdir() ;
- }
-
+ final String esbName = di.shortName;
final int lastSeparator = esbName.lastIndexOf('.') ;
- final String warFileName = ((lastSeparator >= 0) ? esbName.substring(0, lastSeparator) : esbName) + ".war" ;
-
- return new File(esbDir, warFileName) ;
+ return ((lastSeparator >= 0) ? esbName.substring(0, lastSeparator) : esbName) + ".war" ;
}
- private void addFile(final ZipOutputStream zos, final String filename, final String contents)
- throws IOException
- {
- addFile(zos, filename, contents.getBytes()) ;
- }
-
- private void addFile(final ZipOutputStream zos, final String filename, final byte[] contents)
- throws IOException
- {
- final ZipEntry entry = new ZipEntry(filename) ;
- zos.putNextEntry(entry) ;
- zos.write(contents) ;
- zos.closeEntry() ;
- }
-
public synchronized void start(DeploymentInfo di)
throws DeploymentException
{
Modified: labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/soa/esb/util/DeploymentArchive.java
===================================================================
--- labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/soa/esb/util/DeploymentArchive.java 2009-07-27 13:49:49 UTC (rev 28494)
+++ labs/jbossesb/workspace/tfennelly/httpg2/product/rosetta/src/org/jboss/soa/esb/util/DeploymentArchive.java 2009-07-27 13:50:28 UTC (rev 28495)
@@ -81,6 +81,19 @@
}
/**
+ * Add the supplied data as an entry in the deployment.
+ *
+ * @param path The target path of the entry when added to the archive.
+ * @param data The data.
+ */
+ public void addEntry(String path, byte[] data) {
+ AssertArgument.isNotNullAndNotEmpty(path, "path");
+ AssertArgument.isNotNull(data, "data");
+
+ entries.put(trimLeadingSlash(path.trim()), data);
+ }
+
+ /**
* Add an "empty" entry in the deployment.
* <p/>
* Equivalent to adding an empty folder.
More information about the jboss-svn-commits
mailing list