[jboss-svn-commits] JBL Code SVN: r23691 - in labs/jbossesb/workspace/mlittle/legstar/product: rosetta/src/org/jboss/soa/esb/listeners/config/mappers and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Nov 4 03:01:30 EST 2008
Author: jim.ma
Date: 2008-11-04 03:01:30 -0500 (Tue, 04 Nov 2008)
New Revision: 23691
Modified:
labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java
labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/TomcatListenerMapper.java
labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatDispatchServlet.java
labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatGatewayListener.java
labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatMessageComposer.java
labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/tomcat_listener/jboss-esb.xml
Log:
Added asyn and SSL support for tomcat listener; enable to configure more properties to tomcat listener
Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java 2008-11-04 06:58:31 UTC (rev 23690)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java 2008-11-04 08:01:30 UTC (rev 23691)
@@ -125,7 +125,6 @@
* @throws ConfigurationException Invalid listener configuration.
*/
private void addGatewayConfig(Element root, Listener gateway) throws ConfigurationException {
- System.out.println("---use new gateway geneartor ----");
Element listenerConfig;
// Of course we could do the following reflectively if we really want to - TODO perhaps!!
Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/TomcatListenerMapper.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/TomcatListenerMapper.java 2008-11-04 06:58:31 UTC (rev 23690)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/TomcatListenerMapper.java 2008-11-04 08:01:30 UTC (rev 23691)
@@ -23,6 +23,7 @@
import org.jboss.soa.esb.dom.YADOMUtil;
import org.jboss.soa.esb.listeners.ListenerTagNames;
import org.jboss.soa.esb.listeners.config.Generator.XMLBeansModel;
+import org.jboss.soa.esb.listeners.config.xbeanmodel.PropertyDocument.Property;
import org.jboss.soa.esb.listeners.config.xbeanmodel.TomcatBusDocument.TomcatBus;
import org.jboss.soa.esb.listeners.config.xbeanmodel.TomcatListenerDocument.TomcatListener;
import org.jboss.soa.esb.listeners.config.xbeanmodel.TomcatProviderDocument.TomcatProvider;
@@ -63,7 +64,16 @@
// Map the standard listener attributes - common across all listener types...
MapperUtil.mapDefaultAttributes(listener, listenerNode, model);
// Map the <property> elements targeted at the listener - from the listener itself.
- MapperUtil.mapProperties(provider.getPropertyList(), listenerNode);
+ //MapperUtil.mapProperties(provider.getPropertyList(), listenerNode);
+ for(Property property : provider.getPropertyList()) {
+ Element propertyElement = listenerNode.getOwnerDocument().createElement("property");
+ MapperUtil.serialize(property, propertyElement);
+ listenerNode.appendChild(propertyElement);
+ }
+
+
+
+
MapperUtil.mapProperties(bus.getPropertyList(), listenerNode);
MapperUtil.mapProperties(listener.getPropertyList(), listenerNode);
Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatDispatchServlet.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatDispatchServlet.java 2008-11-04 06:58:31 UTC (rev 23690)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatDispatchServlet.java 2008-11-04 08:01:30 UTC (rev 23691)
@@ -26,11 +26,13 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.jboss.internal.soa.esb.util.StreamUtils;
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.couriers.FaultMessageException;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.listeners.message.UncomposedMessageDeliveryAdapter;
import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.util.ClassUtil;
/**
* This class is for dispatching the http request to ESB action process pipe
@@ -44,8 +46,11 @@
/** If this a synchronous invocation * */
private boolean synchronous = true;
+
+ /** asyncResponse file location */
+ private String asyncResponse = null;
- private int serviceTimeout = 2000;
+ private int serviceTimeout = 20000;
/** ESB message delivery adapter */
public UncomposedMessageDeliveryAdapter messageDeliveryAdapter = null;
@@ -59,12 +64,12 @@
public void init() throws ServletException {
ConfigTree config = (ConfigTree) getServletContext().getAttribute(
"config");
- synchronous = !config.getAttribute("synchronous", "true")
- .equalsIgnoreCase("false");
+ synchronous = !config.getAttribute("synchronous", "true").equalsIgnoreCase("false");
- serviceTimeout = Integer.parseInt(config.getAttribute("serviceTimeout",
- "20000"));
+ serviceTimeout = Integer.parseInt(config.getAttribute("serviceTimeout", "20000"));
+ asyncResponse = config.getAttribute("asyncResponse");
+
try {
messageDeliveryAdapter = UncomposedMessageDeliveryAdapter
.getGatewayDeliveryAdapter(config,
@@ -89,14 +94,16 @@
*/
protected void serveRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- TomcatRequestWrapper wrapper = new TomcatRequestWrapper(request,
- response);
+ TomcatRequestWrapper wrapper = new TomcatRequestWrapper(request, response);
try {
if (synchronous) {
messageDeliveryAdapter.deliverSync(wrapper, serviceTimeout);
} else {
messageDeliveryAdapter.deliverAsync(wrapper);
+ if (asyncResponse != null) {
+ response.getOutputStream().write(StreamUtils.readStream(getClass().getResourceAsStream(asyncResponse)));
+ }
}
} catch (FaultMessageException fme) {
Message faultMessage = fme.getReturnedMessage();
Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatGatewayListener.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatGatewayListener.java 2008-11-04 06:58:31 UTC (rev 23690)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatGatewayListener.java 2008-11-04 08:01:30 UTC (rev 23691)
@@ -20,13 +20,17 @@
package org.jboss.soa.esb.listeners.gateway;
import java.net.URI;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
+import javax.management.MBeanException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
+import javax.management.ReflectionException;
import org.apache.catalina.Container;
import org.apache.catalina.LifecycleException;
@@ -36,16 +40,19 @@
import org.apache.catalina.core.StandardWrapper;
import org.apache.catalina.startup.ContextConfig;
import org.apache.log4j.Logger;
+import org.apache.tomcat.util.IntrospectionUtils;
import org.jboss.mx.util.MBeanServerLocator;
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.helpers.KeyValuePair;
import org.jboss.soa.esb.listeners.ListenerTagNames;
import org.jboss.soa.esb.listeners.lifecycle.AbstractManagedLifecycle;
import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException;
import org.jboss.soa.esb.listeners.message.UncomposedMessageDeliveryAdapter;
import org.jboss.soa.esb.services.registry.RegistryException;
import org.jboss.soa.esb.services.registry.RegistryFactory;
+import org.jboss.soa.esb.util.ClassUtil;
/**
* Tomcat Listener provids the functionality to pass the http request
@@ -128,6 +135,9 @@
/** The default servlet used to dispatch the http request to ESB service*/
private String dispatchServletClassName = TomcatDispatchServlet.class.getName();
+ /***Protocol value */
+ private Object protocol = "http";
+
/**Constuct the TomcatGatewyListner
* @param config The listener configuration
@@ -145,6 +155,18 @@
dispatchServletClassName = config.getAttribute(DISPATCH_SERVLET_CLASS);
}
+ boolean synchronous = !config.getAttribute("synchronous", "true").equalsIgnoreCase("false");
+ if (!synchronous) {
+ String asyncResponse = config.getAttribute("asyncResponse");
+ if (asyncResponse != null) {
+ if (ClassUtil.getResourceAsStream(asyncResponse, getClass()) == null) {
+ throw new ConfigurationException("Asynchronous response resource file '" + asyncResponse
+ + "' not found on classpath.");
+ }
+ }
+ }
+
+
mbeanServer = MBeanServerLocator.locateJBoss();
//Get the jboss web domain name
@@ -231,7 +253,7 @@
}
try {
- endpointReference = new EPR(new URI("http://"+ host + ":" + port + this.httpContext));
+ endpointReference = new EPR(new URI(protocol + "://"+ host + ":" + port + this.httpContext));
} catch (Exception e) {
throw new ManagedLifecycleException(
"Remoting Listener configuration failed.", e);
@@ -286,14 +308,35 @@
Connector connector = null;
connector = new Connector("org.apache.coyote.http11.Http11Protocol");
connector.setPort(Integer.parseInt(port));
+ String maxThreads = getConfig().getAttribute(ListenerTagNames.MAX_THREADS_TAG);
+ if (maxThreads != null) {
+ connector.setProperty("maxThreads", maxThreads);
+ }
+
+ //Set Property
+ List<KeyValuePair> properties = getConfig().childPropertyList();
+ for (KeyValuePair property : properties) {
+ boolean effected = IntrospectionUtils.setProperty(connector, property.getKey(), property.getValue());
+ if (!effected) {
+ connector.setProperty(property.getKey(), property.getValue());
+ }
+ }
mbeanServer.invoke(standardServiceName, "addConnector",
new Object[] { connector }, new String[] { Connector.class
- .getName() });
+ .getName() });
+ protocol = connector.getScheme();
synchronized (connectorReference) {
connectorReference.put(port, 1);
}
} else {
+ ObjectName obj = (ObjectName)connectors.iterator().next();
+ try {
+ protocol = mbeanServer.getAttribute(obj, "schema");
+ } catch (Exception e) {
+ //do nothing and use default http
+ protocol = "http";
+ }
updateReference(connectorReference, port, 1);
}
Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatMessageComposer.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatMessageComposer.java 2008-11-04 06:58:31 UTC (rev 23690)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/TomcatMessageComposer.java 2008-11-04 08:01:30 UTC (rev 23691)
@@ -19,9 +19,7 @@
*/
package org.jboss.soa.esb.listeners.gateway;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
@@ -30,6 +28,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.jboss.internal.soa.esb.util.StreamUtils;
import org.jboss.soa.esb.actions.ActionUtils;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.listeners.message.AbstractMessageComposer;
@@ -95,11 +94,10 @@
protected void populateMessage(Message message, T requestWrapper)
throws MessageDeliverException {
ServletRequest request = requestWrapper.getRequest();
- Map paraMap = request.getParameterMap();
+ Map paraMap = request.getParameterMap();;
byte[] bodyBytes = null;
try {
- InputStream ins = request.getInputStream();
- bodyBytes = getBytes(ins);
+ bodyBytes = StreamUtils.readStream(request.getInputStream());
} catch (IOException e) {
throw new MessageDeliverException(
"Failed to read body data from http request", e);
@@ -173,21 +171,4 @@
return headerMap;
}
- /**
- * Method for reading the servlet request inputstream
- * @param ins Servlet request InputStream
- * @return binary data
- * @throws IOException When error occured
- */
- public byte[] getBytes(final InputStream ins) throws IOException {
-
- byte[] bytes = new byte[2048];
- int s = 0;
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- while ((s = ins.read(bytes)) != -1) {
- bout.write(bytes, 0, s);
- }
- return bout.toByteArray();
-
- }
}
Modified: labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/tomcat_listener/jboss-esb.xml
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/tomcat_listener/jboss-esb.xml 2008-11-04 06:58:31 UTC (rev 23690)
+++ labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/tomcat_listener/jboss-esb.xml 2008-11-04 08:01:30 UTC (rev 23691)
@@ -9,10 +9,15 @@
dest-name="queue/quickstart_tomcatlistener_Request_esb"
/>
</jms-bus>
- </jms-provider>
+ </jms-provider>
-
- <tomcat-provider name="HTTP" host="localhost" port="8080">
+ <tomcat-provider name="HTTP" host="localhost" port="4443">
+ <!--property name="maxThreads" value="150"/>
+ <property name="scheme" value="https"/>
+ <property name="secure" value="true"/>
+ <property name="SSLEnabled" value="true"/>
+ <property name="Keystore" value="./key/.keystore"/>
+ <property name="Keypass" value="changeit"/-->
<tomcat-bus busid="HTTP-1" context="/jbossesb/tomcat/listener" />
</tomcat-provider>
</providers>
@@ -25,8 +30,12 @@
<listeners>
<tomcat-listener name="A1-HTTP"
busidref="HTTP-1"
- maxThreads="1"
- is-gateway="true"/>
+ maxThreads="100"
+ is-gateway="true">
+ <!--property name="synchronous" value="false"/>
+ <property name="asyncResponse" value="/response.txt"/-->
+
+ </tomcat-listener>
<jms-listener name="JMS-Gateway"
busidref="quickstartEsbChannel"
/>
More information about the jboss-svn-commits
mailing list