[jboss-svn-commits] JBL Code SVN: r34470 - in labs/jbossesb/trunk/product/rosetta: src/org/jboss/internal/soa/esb/webservice and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Aug 2 15:05:45 EDT 2010
Author: kevin.conner at jboss.com
Date: 2010-08-02 15:05:44 -0400 (Mon, 02 Aug 2010)
New Revision: 34470
Modified:
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/HttpGatewayDeploymentFactory.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebGatewayDeploymentFactory.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayWebService.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseWebService.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/lifecycle/LifecycleResourceManager.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/ModelUtil.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/WebGatewayBuilder.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/http/HttpGatewayServlet.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java
Log:
Set esb TCCL before invoking servlets: JBESB-3412
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/HttpGatewayDeploymentFactory.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/HttpGatewayDeploymentFactory.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/HttpGatewayDeploymentFactory.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -40,7 +40,7 @@
public static final String AUTH_METHOD = "authMethod";
public static final String AUTH_DOMAIN = "authDomain";
- public void updateWebModel(ConfigTree webEndpointConfig, WebModel webModel) throws ConfigurationException {
+ public void updateWebModel(final String deploymentName, ConfigTree webEndpointConfig, WebModel webModel) throws ConfigurationException {
String servletName = webEndpointConfig.getRequiredAttribute("name");
Servlet servlet = new Servlet(servletName, HttpGatewayServlet.class.getName(), webModel);
@@ -79,6 +79,7 @@
// Map all config tree attributes as servlet parameters...
servlet.getParams().addAll(webEndpointConfig.attributesAsList());
+ servlet.getParams().add(new KeyValuePair(ListenerTagNames.DEPLOYMENT_NAME_TAG, deploymentName)) ;
}
private void addEndpointAddress(ConfigTree webEndpointConfig, Servlet servlet, String urlMapping) {
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebGatewayDeploymentFactory.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebGatewayDeploymentFactory.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/listeners/war/WebGatewayDeploymentFactory.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -32,12 +32,13 @@
/**
* Update the {@link WebModel} based on the supplied web endpoint configuration.
+ * @param deploymentName The ESB deployment name.
* @param webEndpointConfig The web endpoint configuration.
* @param webModel The Web Model to be updated.
* @return The deployment archives.
* @throws ConfigurationException Failed to create the Deployment Archives.
*/
- public void updateWebModel(ConfigTree webEndpointConfig, WebModel webModel) throws ConfigurationException;
+ public void updateWebModel(final String deploymentName, ConfigTree webEndpointConfig, WebModel webModel) throws ConfigurationException;
/**
* Factory builder.
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -60,6 +60,7 @@
import org.jboss.soa.esb.common.Environment;
import org.jboss.soa.esb.common.ModulePropertyManager;
import org.jboss.soa.esb.couriers.FaultMessageException;
+import org.jboss.soa.esb.lifecycle.LifecycleResourceManager;
import org.jboss.soa.esb.listeners.message.MessageDeliverException;
import org.jboss.soa.esb.message.Body;
import org.jboss.soa.esb.message.Fault;
@@ -103,14 +104,16 @@
extractors.add(new SamlSoapAssertionExtractor());
}
+ private final String deployment ;
protected final ServiceInvoker serviceInvoker ;
protected final MessagePayloadProxy requestProxy ;
protected final MessagePayloadProxy responseProxy ;
protected final String action ;
- protected BaseWebService(final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
+ protected BaseWebService(final String deployment, final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
throws MessageDeliverException
{
+ this.deployment = deployment ;
this.serviceInvoker = serviceInvoker ;
requestProxy = new MessagePayloadProxy(null, requestLocation) ;
responseProxy = new MessagePayloadProxy(responseLocation, null) ;
@@ -127,6 +130,12 @@
final MAP soapIncomingProps = AddressingContext.getAddressingProperties() ;
final Message esbReq = MessageFactory.getInstance().getMessage() ;
+ final ClassLoader origClassLoader = Thread.currentThread().getContextClassLoader() ;
+ final ClassLoader deploymentClassLoader = LifecycleResourceManager.getSingleton().getClassLoaderForDeployment(deployment) ;
+ if (deploymentClassLoader != null)
+ {
+ Thread.currentThread().setContextClassLoader(deploymentClassLoader) ;
+ }
try
{
final SOAPBody soapBody = request.getSOAPBody() ;
@@ -259,6 +268,10 @@
throw new WebServiceException("Unexpected exception generating fault response", soape) ;
}
}
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(origClassLoader) ;
+ }
}
private static Document parseAsDom(String soapRes) throws ParserConfigurationException, XMLStreamException
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -50,7 +50,7 @@
pool.appendClassPath(new LoaderClassPath(JAXWSProviderClassGenerator.class.getClassLoader())) ;
}
- public byte[] generate(final String category, final String service, final ESBServiceEndpointInfo epInfo, final boolean includeHandlers)
+ public byte[] generate(final String deployment, final String category, final String service, final ESBServiceEndpointInfo epInfo, final boolean includeHandlers)
throws WebServicePublishException {
try {
pool.get(epInfo.getClassName());
@@ -134,7 +134,7 @@
seiClass.removeConstructor(constructors[i]) ;
}
- final String constructorStr = "super(" + siFieldName + "," +
+ final String constructorStr = "super(" + getParamValue(deployment) + "," + siFieldName + "," +
getParamValue(epInfo.getRequestLocation()) + "," + getParamValue(epInfo.getResponseLocation()) + ", \"" +
epInfo.getResponseAction() + "\");" ;
CtConstructor defaultConstructor = new CtConstructor(null, seiClass) ;
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -31,10 +31,10 @@
*/
public class OneWayBaseWebService extends BaseWebService
{
- protected OneWayBaseWebService(final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
+ protected OneWayBaseWebService(final String deployment, final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
throws MessageDeliverException
{
- super(serviceInvoker, requestLocation, responseLocation, action) ;
+ super(deployment, serviceInvoker, requestLocation, responseLocation, action) ;
}
@Override
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayWebService.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayWebService.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayWebService.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -39,9 +39,9 @@
*/
public class OneWayWebService extends OneWayBaseWebService implements Provider<SOAPMessage>
{
- protected OneWayWebService(final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
+ protected OneWayWebService(final String deployment, final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
throws MessageDeliverException
{
- super(serviceInvoker, requestLocation, responseLocation, action);
+ super(deployment, serviceInvoker, requestLocation, responseLocation, action);
}
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -42,10 +42,10 @@
private static final long TIMEOUT ;
private static final Logger LOGGER = Logger.getLogger(RequestResponseBaseWebService.class) ;
- protected RequestResponseBaseWebService(final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
+ protected RequestResponseBaseWebService(final String deployment, final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
throws MessageDeliverException
{
- super(serviceInvoker, requestLocation, responseLocation, action) ;
+ super(deployment, serviceInvoker, requestLocation, responseLocation, action) ;
}
@Override
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseWebService.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseWebService.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseWebService.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -39,9 +39,9 @@
*/
public class RequestResponseWebService extends RequestResponseBaseWebService implements Provider<SOAPMessage>
{
- protected RequestResponseWebService(final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
+ protected RequestResponseWebService(final String deployment, final ServiceInvoker serviceInvoker, final String requestLocation, final String responseLocation, final String action)
throws MessageDeliverException
{
- super(serviceInvoker, requestLocation, responseLocation, action);
+ super(deployment, serviceInvoker, requestLocation, responseLocation, action);
}
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/lifecycle/LifecycleResourceManager.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/lifecycle/LifecycleResourceManager.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/lifecycle/LifecycleResourceManager.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -84,6 +84,10 @@
*/
private final Map<ClassLoader, String> identities = new HashMap<ClassLoader, String>() ;
/**
+ * The deployment to classloader mapping.
+ */
+ private final Map<String, ClassLoader> deployments = new HashMap<String, ClassLoader>() ;
+ /**
* The deployment lock.
*/
private ReadWriteLock deploymentLock = new ReentrantReadWriteLock() ;
@@ -124,12 +128,14 @@
{
final Set<String> currentAssociations = associatedDeployments.get(classLoader) ;
currentAssociations.add(deploymentName) ;
+ deployments.put(deploymentName, classLoader) ;
}
else
{
final Set<String> associations = new HashSet<String>() ;
associations.add(deploymentName) ;
associatedDeployments.put(classLoader, associations) ;
+ deployments.put(deploymentName, classLoader) ;
identity = "ID-" + Long.toString(identityCounter++) ;
identities.put(classLoader, identity) ;
@@ -191,6 +197,7 @@
if (currentAssociations != null)
{
currentAssociations.remove(deploymentName) ;
+ deployments.remove(deploymentName) ;
cleanContext = (currentAssociations.size() == 0) ;
if (cleanContext)
{
@@ -249,6 +256,25 @@
}
return (null == identity ? DEFAULT_IDENTITY : identity) ;
}
+
+ /**
+ * Return the ClassLoader associated with a registered deployment.
+ * @param deploymentName The deployment name.
+ * @return The ClassLoader instance or null if not registered.
+ */
+ public ClassLoader getClassLoaderForDeployment(final String deploymentName)
+ {
+ final Lock readLock = deploymentLock.readLock() ;
+ readLock.lock() ;
+ try
+ {
+ return deployments.get(deploymentName) ;
+ }
+ finally
+ {
+ readLock.unlock() ;
+ }
+ }
/**
* Register a lifecycle resource with the manager.
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/ModelUtil.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/ModelUtil.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/ModelUtil.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -82,7 +82,7 @@
* @throws org.jboss.soa.esb.ConfigurationException A Configuration exception occured mapping data onto
* the WebModel.
*/
- public static void updateWebModel(Map<String, List<ConfigTree>> listenerGroups, WebModel webModel) throws ConfigurationException {
+ public static void updateWebModel(String deploymentName, Map<String, List<ConfigTree>> listenerGroups, WebModel webModel) throws ConfigurationException {
Set<Map.Entry<String, List<ConfigTree>>> listenerGroupEntries = listenerGroups.entrySet();
for(Map.Entry<String, List<ConfigTree>> listenerGroup : listenerGroupEntries) {
List<ConfigTree> listeners = listenerGroup.getValue();
@@ -94,7 +94,7 @@
if(deploymentFactory != null) {
// For each listener...
for(ConfigTree listenerConfig : listeners) {
- deploymentFactory.updateWebModel(listenerConfig, webModel);
+ deploymentFactory.updateWebModel(deploymentName, listenerConfig, webModel);
}
}
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/WebGatewayBuilder.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/WebGatewayBuilder.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/WebGatewayBuilder.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -112,7 +112,7 @@
createWebserviceWars(webDeployment);
// Add the web deployments info to the WebModel...
- ModelUtil.updateWebModel(ModelUtil.getListenerGroups(model), webModel);
+ ModelUtil.updateWebModel(deploymentName, ModelUtil.getListenerGroups(model), webModel);
// Add a sub-deloyment for the web model...
this.servlets = webModel.getServlets();
@@ -165,7 +165,7 @@
webDeployment.addEntry(wsHandlerName, handlers.getBytes("UTF-8"));
}
- final byte[] wsClass = generator.generate(service.getCategory(),
+ final byte[] wsClass = generator.generate(deploymentName, service.getCategory(),
service.getName(), serviceInfo, includeHandlers);
final String wsClassName = serviceInfo.getClassName().replace('.', '/') + ".class";
webDeployment.addEntry("WEB-INF/classes/" + wsClassName, wsClass);
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/http/HttpGatewayServlet.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/http/HttpGatewayServlet.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/http/HttpGatewayServlet.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -46,6 +46,7 @@
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.http.HttpServletSecUtil;
import org.jboss.soa.esb.lifecycle.LifecycleResourceException;
+import org.jboss.soa.esb.lifecycle.LifecycleResourceManager;
import org.jboss.soa.esb.listeners.ListenerTagNames;
import org.jboss.soa.esb.listeners.config.mappers120.HttpGatewayMapper;
import org.jboss.soa.esb.listeners.message.MessageComposer;
@@ -89,93 +90,114 @@
private long blockingTimeout = 30000L;
private Map<String, Integer> exceptionMappings;
private int[] allowedPorts = new int[0];
+ private String deployment ;
public void init(ServletConfig config) throws ServletException {
- service = new Service(
- config.getInitParameter(ListenerTagNames.TARGET_SERVICE_CATEGORY_TAG),
- config.getInitParameter(ListenerTagNames.TARGET_SERVICE_NAME_TAG)
- );
- try {
- serviceInvoker = new ServiceInvoker(service);
- } catch (MessageDeliverException e) {
- throw new ServletException("Unable to create ServiceInvoker for Service '" + service + "'.", e);
+ deployment = config.getInitParameter(ListenerTagNames.DEPLOYMENT_NAME_TAG) ;
+
+ final ClassLoader origClassLoader = Thread.currentThread().getContextClassLoader() ;
+ final ClassLoader deploymentClassLoader = LifecycleResourceManager.getSingleton().getClassLoaderForDeployment(deployment) ;
+ if (deploymentClassLoader != null) {
+ Thread.currentThread().setContextClassLoader(deploymentClassLoader) ;
}
- endpointAddress = config.getInitParameter(Servlet.ENDPOINT_ADDRESS);
-
- String allow = config.getInitParameter(Servlet.ALLOWED_PORTS);
- if (allow != null) {
- StringTokenizer tokens = new StringTokenizer(allow, ",");
- int noOfItems = tokens.countTokens();
- this.allowedPorts = new int[noOfItems];
- for (int i = 0; i < noOfItems; i++) {
- this.allowedPorts[i] = Integer.parseInt(tokens.nextToken());
- }
- }
-
- ConfigTree configTree = toConfigTree(config);
-
try {
- messageComposer = MessageComposer.Factory.getInstance(configTree.getAttribute(ListenerTagNames.GATEWAY_COMPOSER_CLASS_TAG, HttpMessageComposer.class.getName()), configTree);
- } catch (ConfigurationException e) {
- throw new ServletException("Failed to create message composer.", e);
- } catch (MessageDeliverException e) {
- throw new ServletException("Failed to create message composer.", e);
- }
-
- asyncInvoke = configTree.getBooleanAttribute(ASYNC_SERVICE_INVOKE, false);
- if(asyncInvoke) {
- String asyncSCConfig = configTree.getAttribute(ASYNC_STATUS_CODE);
+ service = new Service(
+ config.getInitParameter(ListenerTagNames.TARGET_SERVICE_CATEGORY_TAG),
+ config.getInitParameter(ListenerTagNames.TARGET_SERVICE_NAME_TAG)
+ );
try {
- asyncStatusCode = Integer.parseInt(asyncSCConfig);
- } catch (NumberFormatException e) {
- throw new ServletException("Invalid static asynchronous response code configuration '" + asyncSCConfig + "'.", e);
+ serviceInvoker = new ServiceInvoker(service);
+ } catch (MessageDeliverException e) {
+ throw new ServletException("Unable to create ServiceInvoker for Service '" + service + "'.", e);
}
-
- String payloadPath = configTree.getAttribute(ASYNC_PAYLOAD);
- if(payloadPath != null) {
+ endpointAddress = config.getInitParameter(Servlet.ENDPOINT_ADDRESS);
+
+ String allow = config.getInitParameter(Servlet.ALLOWED_PORTS);
+ if (allow != null) {
+ StringTokenizer tokens = new StringTokenizer(allow, ",");
+ int noOfItems = tokens.countTokens();
+ this.allowedPorts = new int[noOfItems];
+ for (int i = 0; i < noOfItems; i++) {
+ this.allowedPorts[i] = Integer.parseInt(tokens.nextToken());
+ }
+ }
+
+ ConfigTree configTree = toConfigTree(config);
+
+ try {
+ messageComposer = MessageComposer.Factory.getInstance(configTree.getAttribute(ListenerTagNames.GATEWAY_COMPOSER_CLASS_TAG, HttpMessageComposer.class.getName()), configTree);
+ } catch (ConfigurationException e) {
+ throw new ServletException("Failed to create message composer.", e);
+ } catch (MessageDeliverException e) {
+ throw new ServletException("Failed to create message composer.", e);
+ }
+
+ asyncInvoke = configTree.getBooleanAttribute(ASYNC_SERVICE_INVOKE, false);
+ if(asyncInvoke) {
+ String asyncSCConfig = configTree.getAttribute(ASYNC_STATUS_CODE);
try {
- asyncPayload = readStaticAsyncResponse(payloadPath);
+ asyncStatusCode = Integer.parseInt(asyncSCConfig);
+ } catch (NumberFormatException e) {
+ throw new ServletException("Invalid static asynchronous response code configuration '" + asyncSCConfig + "'.", e);
+ }
+
+ String payloadPath = configTree.getAttribute(ASYNC_PAYLOAD);
+ if(payloadPath != null) {
+ try {
+ asyncPayload = readStaticAsyncResponse(payloadPath);
+ } catch (ConfigurationException e) {
+ throw new ServletException("Invalid Exception to HTTP Status mapping configuration.", e);
+ }
+ asyncContentType = configTree.getAttribute(ASYNC_PAYLOAD_CONTENT_TYPE);
+ asyncCharacterEncoding = configTree.getAttribute(ASYNC_PAYLOAD_CHARACTER_ENCODING);
+ }
+ } else {
+ blockingTimeout = configTree.getLongAttribute("synchronousTimeout", 30000L);
+ }
+
+ String exceptionMappingsCSV = configTree.getAttribute(EXCEPTION_MAPPINGS);
+ if(exceptionMappingsCSV != null) {
+ try {
+ exceptionMappings = HttpGatewayMapper.decodeExceptionMappingsCSV(exceptionMappingsCSV);
} catch (ConfigurationException e) {
throw new ServletException("Invalid Exception to HTTP Status mapping configuration.", e);
}
- asyncContentType = configTree.getAttribute(ASYNC_PAYLOAD_CONTENT_TYPE);
- asyncCharacterEncoding = configTree.getAttribute(ASYNC_PAYLOAD_CHARACTER_ENCODING);
}
- } else {
- blockingTimeout = configTree.getLongAttribute("synchronousTimeout", 30000L);
+ } finally {
+ Thread.currentThread().setContextClassLoader(origClassLoader) ;
}
-
- String exceptionMappingsCSV = configTree.getAttribute(EXCEPTION_MAPPINGS);
- if(exceptionMappingsCSV != null) {
- try {
- exceptionMappings = HttpGatewayMapper.decodeExceptionMappingsCSV(exceptionMappingsCSV);
- } catch (ConfigurationException e) {
- throw new ServletException("Invalid Exception to HTTP Status mapping configuration.", e);
- }
- }
}
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- int noOfItems = this.allowedPorts.length;
- int port = req.getServerPort();
- boolean allow = false;
- if (noOfItems == 0) {
- allow = true;
+ final ClassLoader origClassLoader = Thread.currentThread().getContextClassLoader() ;
+ final ClassLoader deploymentClassLoader = LifecycleResourceManager.getSingleton().getClassLoaderForDeployment(deployment) ;
+ if (deploymentClassLoader != null) {
+ Thread.currentThread().setContextClassLoader(deploymentClassLoader) ;
}
- else {
- for (int i = 0; i < noOfItems; i++) {
- if (allowedPorts[i] == port) {
- allow = true;
- break;
+ try {
+ int noOfItems = this.allowedPorts.length;
+ int port = req.getServerPort();
+ boolean allow = false;
+ if (noOfItems == 0) {
+ allow = true;
+ }
+ else {
+ for (int i = 0; i < noOfItems; i++) {
+ if (allowedPorts[i] == port) {
+ allow = true;
+ break;
+ }
}
}
+
+ if (allow) {
+ processServiceRequest(req, resp);
+ } else {
+ resp.sendError(HttpServletResponse.SC_NOT_FOUND);
+ }
+ } finally {
+ Thread.currentThread().setContextClassLoader(origClassLoader) ;
}
-
- if (allow) {
- processServiceRequest(req, resp);
- } else {
- resp.sendError(HttpServletResponse.SC_NOT_FOUND);
- }
}
private void processServiceRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java 2010-08-02 19:01:26 UTC (rev 34469)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java 2010-08-02 19:05:44 UTC (rev 34470)
@@ -86,7 +86,7 @@
final JAXWSProviderClassGenerator classGenerator = new JAXWSProviderClassGenerator() ;
- final byte[] bytes = classGenerator.generate(category, name, endpointInfo, false) ;
+ final byte[] bytes = classGenerator.generate("deploymentName", category, name, endpointInfo, false) ;
final ClassLoader classLoader = new ClassLoader() {
public java.lang.Class<?> loadClass(final String name) throws ClassNotFoundException {
if (endpointInfo.getClassName().equals(name)) {
More information about the jboss-svn-commits
mailing list