Author: rmannibucau
Date: Thu Oct 11 09:36:26 2012
New Revision: 1396961
URL: http://svn.apache.org/viewvc?rev=1396961&view=rev
Log:
fixing WEB-INF/exclusions.list + adding reload to deployer/tomee-mvn-plugin -
jira to open
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java
Thu Oct 11 09:36:26 2012
@@ -39,4 +39,6 @@ public interface Deployer {
AppInfo deploy(String location, Properties properties) throws
OpenEJBException;
void undeploy(String moduleId) throws UndeployException,
NoSuchApplicationException;
+
+ void reload(String moduleId);
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
Thu Oct 11 09:36:26 2012
@@ -301,4 +301,26 @@ public class DeployerEjb implements Depl
private static String contextRoot(final Properties properties, final
String jarPath) {
return properties.getProperty("webapp." + jarPath + ".context-root");
}
+
+ public void reload(final String moduleId) {
+ for (AppInfo info : assembler.getDeployedApplications()) {
+ if (info.path.equals(moduleId)) {
+ reload(info);
+ break;
+ }
+ }
+ }
+
+ private void reload(final AppInfo info) {
+ if (info.webAppAlone) {
+
SystemInstance.get().getComponent(WebAppDeployer.class).reload(info.path);
+ } else {
+ try {
+ assembler.destroyApplication(info);
+ assembler.createApplication(info);
+ } catch (Exception e) {
+ throw new OpenEJBRuntimeException(e);
+ }
+ }
+ }
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java
Thu Oct 11 09:36:26 2012
@@ -23,6 +23,7 @@ import java.io.File;
public interface WebAppDeployer {
AppInfo deploy(String contextRoot, File file);
+ void reload(String appId);
public static final class Helper {
private Helper() {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
Thu Oct 11 09:36:26 2012
@@ -171,10 +171,12 @@ public class NewLoaderLogic {
final File file = URLs.toFile(url);
final String name = filter(file).getName();
- if (filter.accept(name)
- && (includeFilter == null || !includeFilter.accept(name))
- && (excludeFilter == null || excludeFilter.accept(name))) {
- iterator.remove();
+ if (includeFilter == null || !includeFilter.accept(name)) {
+ if (filter != null && filter.accept(name)) {
+ iterator.remove();
+ } else if (excludeFilter != null &&
excludeFilter.accept(name)) {
+ iterator.remove();
+ }
}
}
Modified:
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
---
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
(original)
+++
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
Thu Oct 11 09:36:26 2012
@@ -273,6 +273,8 @@ public abstract class AbstractTomEEMojo
*/
protected Settings settings;
+ protected File deployedFile = null;
+
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
unzip(resolve(), catalinaBase);
@@ -476,6 +478,8 @@ public abstract class AbstractTomEEMojo
} else {
getLog().warn("'" + warFile + "' doesn't exist, ignoring (maybe
run mvn package before this plugin)");
}
+
+ deployedFile = out;
}
private void overrideAddresses() {
Modified:
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
---
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
(original)
+++
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
Thu Oct 11 09:36:26 2012
@@ -16,16 +16,23 @@
*/
package org.apache.openejb.maven.plugin;
+import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.assembler.Deployer;
+import org.apache.openejb.client.RemoteInitialContextFactory;
import org.apache.openejb.config.RemoteServer;
import org.apache.openejb.loader.Files;
import org.codehaus.plexus.util.FileUtils;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
+import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
@@ -59,6 +66,12 @@ public abstract class UpdatableTomEEMojo
*/
private String finalName;
+ /**
+ * @parameter expression="${tomee-plugin.reload-on-update}"
default-value="false"
+ * @required
+ */
+ private boolean reloadOnUpdate;
+
private Timer timer;
@Override
@@ -130,12 +143,18 @@ public abstract class UpdatableTomEEMojo
}
private void updateFiles(final File source, final File output, final
long ts) {
+ if (!source.exists()) {
+ getLog().debug(source.getAbsolutePath() + " does'tn exist");
+ return;
+ }
+
if (!source.isDirectory()) {
getLog().warn(source.getAbsolutePath() + " is not a directory,
skipping");
return;
}
final Collection<File> files = Files.collect(source, fileFilter);
+ int updated = 0;
for (File file : files) {
if (file.isDirectory()
|| file.lastModified() < lastUpdate) {
@@ -143,6 +162,18 @@ public abstract class UpdatableTomEEMojo
}
updateFile(source, output, file, ts);
+ updated++;
+ }
+
+ if (updated > 0 && reloadOnUpdate) {
+ if (deployedFile != null && deployedFile.exists()) {
+ String path = deployedFile.getAbsolutePath();
+ if (path.endsWith(".war")) {
+ path = path.substring(0, path.length() -
".war".length());
+ }
+ getLog().info("Reloading " + path);
+ deployer().reload(path);
+ }
}
}
@@ -170,6 +201,22 @@ public abstract class UpdatableTomEEMojo
}
}
+ private Deployer deployer() {
+ if (removeTomeeWebapp) {
+ throw new OpenEJBRuntimeException("Can't use reload feature
without TomEE Webapp, please set removeTomeeWebapp to false");
+ }
+
+ final Properties properties = new Properties();
+ properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
RemoteInitialContextFactory.class.getName());
+ properties.setProperty(Context.PROVIDER_URL, "http://" + tomeeHost +
":" + tomeeHttpPort + "/tomee/ejb");
+ try {
+ final Context context = new InitialContext(properties);
+ return (Deployer) context.lookup("openejb/DeployerBusinessRemote");
+ } catch (NamingException e) {
+ throw new OpenEJBRuntimeException("Can't lookup Deployer", e);
+ }
+ }
+
private static class SuffixesFileFilter implements FileFilter {
private final String[] suffixes;
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
Thu Oct 11 09:36:26 2012
@@ -41,7 +41,7 @@ public class TomcatWebappDeployer implem
throw new OpenEJBRuntimeException(e);
}
- final TomcatWebAppBuilder.ContextInfo info =
tomcatWebAppBuilder.standaAloneWebAppInfo(file);
+ final TomcatWebAppBuilder.ContextInfo info = contextInfo(file);
if (info == null || info.appInfo == null) {
LOGGER.error("Can't find of appInfo for " + (file != null ?
file.getAbsolutePath() : null) + ", availables: " +
tomcatWebAppBuilder.availableApps());
}
@@ -52,6 +52,22 @@ public class TomcatWebappDeployer implem
return info.appInfo;
}
+ @Override
+ public void reload(final String path) {
+ final File file = new File(path);
+ final TomcatWebAppBuilder.ContextInfo info = contextInfo(file);
+ if (info == null || info.standardContext == null) { // error
+ LOGGER.warning("Can't find " + path);
+ } else {
+ info.standardContext.reload();
+ }
+ }
+
+ private TomcatWebAppBuilder.ContextInfo contextInfo(final File file) {
+ final TomcatWebAppBuilder tomcatWebAppBuilder = (TomcatWebAppBuilder)
SystemInstance.get().getComponent(WebAppBuilder.class);
+ return tomcatWebAppBuilder.standaAloneWebAppInfo(file);
+ }
+
// simply create a fake AppInfo to be able to deploy reusing the logic we
already have
private static AppInfo fakeInfo(final File file, final String context) {
final AppInfo info = new AppInfo();
Modified:
openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
---
openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java
(original)
+++
openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java
Thu Oct 11 09:36:26 2012
@@ -215,7 +215,12 @@ public class WebappDeployer implements D
}
}
- private void delete(final File f) {
+ @Override
+ public void reload(final String s) {
+ throw new UnsupportedOperationException();
+ }
+
+ private void delete(final File f) {
if (f == null || (!f.exists())) {
return;
}