You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by xu...@apache.org on 2011/01/13 06:58:15 UTC
svn commit: r1058412 - in
/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config:
DeploymentLoader.java DeploymentsResolver.java
Author: xuhaihong
Date: Thu Jan 13 05:58:15 2011
New Revision: 1058412
URL: http://svn.apache.org/viewvc?rev=1058412&view=rev
Log:
OPENEJB-1231 Webapp context.xml setting allows app to be ignored entirely by OpenEJB (Patch from Shawn Jiang)
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1058412&r1=1058411&r2=1058412&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Thu Jan 13 05:58:15 2011
@@ -611,9 +611,11 @@ public class DeploymentLoader implements
ClassLoader webClassLoader = webModule.getClassLoader();
// get include/exclude properties from context-param
- Options contextParams = new Options(getContextParams(webModule.getWebApp().getContextParam()));
+ List<ParamValue> webAppContextParam = webModule.getWebApp() != null ? webModule.getWebApp().getContextParam() : Collections.<ParamValue> emptyList();
+ Options contextParams = new Options(getContextParams(webAppContextParam));
+
String include = contextParams.get(CLASSPATH_INCLUDE, "");
- String exclude = contextParams.get(CLASSPATH_EXCLUDE, ".*");
+ String exclude = contextParams.get(CLASSPATH_EXCLUDE, "");
Set<RequireDescriptors> requireDescriptors = contextParams.getAll(CLASSPATH_REQUIRE_DESCRIPTOR, RequireDescriptors.CLIENT);
boolean filterDescriptors = contextParams.get(CLASSPATH_FILTER_DESCRIPTORS, false);
boolean filterSystemApps = contextParams.get(CLASSPATH_FILTER_SYSTEMAPPS, true);
@@ -654,6 +656,12 @@ public class DeploymentLoader implements
if (EjbModule.class.isAssignableFrom(moduleType) && loadingRequiredModuleTypes.contains(EjbModule.class)) {
logger.info("Found ejb module " + moduleType.getSimpleName() + " in war " + contextRoot);
+ if (url.getProtocol().equals("file") && url.toString().endsWith("WEB-INF/classes/")) {
+ //EJB found in /WEB-INF/classes, define the war as EJB module
+ absolutePath = warPath;
+ url = warUrl;
+ }
+
EjbModule ejbModule = createEjbModule(url, absolutePath, webClassLoader, getModuleName());
appModule.getEjbModules().add(ejbModule);
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1058412&r1=1058411&r2=1058412&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java Thu Jan 13 05:58:15 2011
@@ -96,8 +96,8 @@ public class DeploymentsResolver impleme
}
return;
}
-
- File raXml = new File(dir, "META-INF" + File.separator + "ra.xml");
+
+ File raXml = new File(dir, "META-INF" + File.separator + "ra.xml");
if (raXml.exists()) {
try {
if (!jarList.contains(dir.getAbsolutePath())) {
@@ -106,7 +106,7 @@ public class DeploymentsResolver impleme
} catch (MalformedURLException ignore) {
}
return;
- }
+ }
////////////////////////////////
//
@@ -222,7 +222,7 @@ public class DeploymentsResolver impleme
} else if (size < 20) {
logger.debug("Inspecting classpath for applications: " + urls.size() + " urls.");
} else {
- // Has the user allowed some module types to be discoverable via scraping?
+ // Has the user allowed some module types to be discoverable via scraping?
boolean willScrape = requireDescriptors.size() < RequireDescriptors.values().length;
if (size < 50 && willScrape) {
@@ -290,7 +290,7 @@ public class DeploymentsResolver impleme
* The regular expressions involved in filtering can be costly
* In the normal case we will not scan anyway, so if not
* no point in optimizing the list of urls in the classpath
- *
+ *
* @param include
* @param exclude
* @param requireDescriptors
@@ -380,24 +380,30 @@ public class DeploymentsResolver impleme
private static void processUrls(List<URL> urls, ClassLoader classLoader, Set<RequireDescriptors> requireDescriptors, FileUtils base, List<URL> jarList) {
for (URL url : urls) {
+
+ String urlProtocol = url.getProtocol();
+ //Currently, we only support jar and file protocol
+ boolean isValidURL = urlProtocol.equals("jar") || urlProtocol.equals("file");
+ if (!isValidURL) {
+ logger.warning("Unknown protocol " + urlProtocol);
+ continue;
+ }
+
Deployments deployment;
- String path;
+ String path = "";
try {
Class<? extends DeploymentModule> moduleType = new DeploymentLoader().discoverModuleType(url, classLoader, requireDescriptors);
if (AppModule.class.isAssignableFrom(moduleType) || EjbModule.class.isAssignableFrom(moduleType) || PersistenceModule.class.isAssignableFrom(moduleType) || ConnectorModule.class.isAssignableFrom(moduleType) || ClientModule.class.isAssignableFrom(moduleType)) {
deployment = JaxbOpenejb.createDeployments();
- if (url.getProtocol().equals("jar")) {
+ if (urlProtocol.equals("jar")) {
url = new URL(url.getFile().replaceFirst("!.*$", ""));
File file = toFile(url);
path = file.getAbsolutePath();
deployment.setJar(path);
- } else if (url.getProtocol().equals("file")) {
+ } else if (urlProtocol.equals("file")) {
File file = toFile(url);
path = file.getAbsolutePath();
deployment.setDir(path);
- } else {
- logger.warning("Not loading " + moduleType.getSimpleName() + ". Unknown protocol " + url.getProtocol());
- continue;
}
logger.info("Found " + moduleType.getSimpleName() + " in classpath: " + path);