Author: andygumbrecht
Date: Mon Jul 21 14:58:53 2014
New Revision: 1612301
URL: http://svn.apache.org/r1612301
Log:
Apply trunk changes that apply locally.
Added:
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/AdditionalLibsTest.java
- copied unchanged from r1611717,
tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/AdditionalLibsTest.java
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebBeansContextCreated.java
- copied unchanged from r1612083,
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebBeansContextCreated.java
Removed:
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/cdi/
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/resources/META-INF/services/
Modified:
tomee/tomee/branches/tomee-1.7.x/ (props changed)
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java
Propchange: tomee/tomee/branches/tomee-1.7.x/
------------------------------------------------------------------------------
Merged
/tomee/tomee/trunk:r1611717,1611720,1611927,1611955,1612083-1612084,1612087-1612088
Modified:
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
Mon Jul 21 14:58:53 2014
@@ -342,6 +342,27 @@ public class Setup {
Files.delete(destination);
}
+ public static void addTomEELibraries(final File tomeeHome, final String
additionalLibs) {
+ if (additionalLibs == null) {
+ return;
+ }
+ final String libs = additionalLibs.trim();
+ if (libs.isEmpty()) {
+ return;
+ }
+
+ final File libFolder = new File(tomeeHome, "lib");
+ for (final String lib : libs.split("\n")) {
+ final String location = ProvisioningUtil.realLocation(lib.trim());
+ final File from = new File(location);
+ try {
+ org.apache.openejb.loader.IO.copy(from, new File(libFolder,
from.getName()));
+ } catch (final IOException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ }
+
private static class DirectFileOnlyFilter implements FileFilter {
private final File accepted;
Modified:
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml
(original)
+++ tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml
Mon Jul 21 14:58:53 2014
@@ -163,6 +163,13 @@
<version>3.1</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.sirona</groupId>
+ <artifactId>sirona-web</artifactId>
+ <version>0.2-incubating</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
Modified:
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
Mon Jul 21 14:58:53 2014
@@ -39,6 +39,7 @@ public class RemoteTomEEConfiguration ex
private String conf;
private String bin;
private String lib;
+ private String additionalLibs;
private boolean cleanOnStartUp;
private boolean debug;
private int debugPort = 5005;
@@ -88,6 +89,15 @@ public class RemoteTomEEConfiguration ex
public void setType(final String type) {
this.type = type;
}
+
+ public String getAdditionalLibs() {
+ return additionalLibs;
+ }
+
+ @Multiline
+ public void setAdditionalLibs(final String additionalLibs) {
+ this.additionalLibs = additionalLibs;
+ }
public String getArtifactName() {
Modified:
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
Mon Jul 21 14:58:53 2014
@@ -202,6 +202,7 @@ public class RemoteTomEEContainer extend
Setup.synchronizeFolder(tomeeHome, configuration.getConf(), "conf");
Setup.synchronizeFolder(tomeeHome, configuration.getBin(), "bin");
Setup.synchronizeFolder(tomeeHome, configuration.getLib(), "lib");
+ Setup.addTomEELibraries(tomeeHome, configuration.getAdditionalLibs());
Setup.configureServerXml(tomeeHome, configuration);
Modified:
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
(original)
+++
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
Mon Jul 21 14:58:53 2014
@@ -26,6 +26,11 @@
<property name="stopPort">-1</property>
<property name="ajpPort">-1</property>
<property name="dir">target/apache-tomee-remote</property>
+ <property name="additionalLibs">
+ mvn:org.apache.sirona:sirona-core:0.2-incubating
+ mvn:org.apache.sirona:sirona-aop:0.2-incubating
+ mvn:org.apache.sirona:sirona-web:0.2-incubating
+ </property>
<property
name="appWorkingDir">target/arquillian-test-working-dir</property>
<property name="properties">
openejb.classloader.forced-load=org.apache.openejb
Modified:
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
Mon Jul 21 14:58:53 2014
@@ -147,6 +147,7 @@ public class ThreadSingletonServiceImpl
webBeansContext = new WebappWebBeansContext(services,
properties, appContext.getWebBeansContext());
startupObject.getWebContext().setWebbeansContext(webBeansContext);
}
+ SystemInstance.get().fireEvent(new
WebBeansContextCreated(webBeansContext));
OpenEJBTransactionService.class.cast(services.get(TransactionService.class)).setWebBeansContext(webBeansContext);
// do it only here to get the webbeanscontext
Modified:
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
Mon Jul 21 14:58:53 2014
@@ -19,19 +19,60 @@ package org.apache.openejb.server.cxf.rs
import org.apache.cxf.Bus;
import org.apache.cxf.binding.BindingFactoryManager;
import org.apache.cxf.jaxrs.JAXRSBindingFactory;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.WebAppInfo;
+import
org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
+import org.apache.openejb.cdi.WebBeansContextCreated;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
+import org.apache.openejb.rest.AbstractRestThreadLocalProxy;
import org.apache.openejb.rest.RESTResourceFinder;
+import org.apache.openejb.rest.ThreadLocalContextManager;
import org.apache.openejb.server.ServiceException;
import org.apache.openejb.server.cxf.transport.HttpTransportFactory;
import org.apache.openejb.server.cxf.transport.util.CxfUtil;
import org.apache.openejb.server.rest.RESTService;
import org.apache.openejb.server.rest.RsHttpListener;
-
+import org.apache.openejb.spi.ContainerSystem;
+import org.apache.webbeans.annotation.AnyLiteral;
+import org.apache.webbeans.annotation.EmptyAnnotationLiteral;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.BeanManagerImpl;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.util.AnnotationLiteral;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
+import javax.ws.rs.ext.ContextResolver;
+import javax.ws.rs.ext.Providers;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.Type;
import java.net.Socket;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.Properties;
+import java.util.Set;
+
+import static java.util.Arrays.asList;
public class CxfRSService extends RESTService {
@@ -53,6 +94,26 @@ public class CxfRSService extends RESTSe
return NAME;
}
+ public void integrateCDIAndJaxRsInjections(@Observes final
WebBeansContextCreated event) {
+ contextCDIIntegration(event.getContext());
+ }
+
+ private void contextCDIIntegration(final WebBeansContext wbc) {
+ final BeanManagerImpl beanManagerImpl = wbc.getBeanManagerImpl();
+ beanManagerImpl.addAdditionalQualifier(Context.class);
+ beanManagerImpl.addInternalBean(new
ContextBean<SecurityContext>(SecurityContext.class,
ThreadLocalContextManager.SECURITY_CONTEXT));
+ beanManagerImpl.addInternalBean(new
ContextBean<UriInfo>(UriInfo.class, ThreadLocalContextManager.URI_INFO));
+ beanManagerImpl.addInternalBean(new
ContextBean<HttpServletRequest>(HttpServletRequest.class,
ThreadLocalContextManager.HTTP_SERVLET_REQUEST));
+ beanManagerImpl.addInternalBean(new
ContextBean<HttpServletResponse>(HttpServletResponse.class,
ThreadLocalContextManager.HTTP_SERVLET_RESPONSE));
+ beanManagerImpl.addInternalBean(new
ContextBean<HttpHeaders>(HttpHeaders.class,
ThreadLocalContextManager.HTTP_HEADERS));
+ beanManagerImpl.addInternalBean(new
ContextBean<Request>(Request.class, ThreadLocalContextManager.REQUEST));
+ beanManagerImpl.addInternalBean(new
ContextBean<ServletRequest>(ServletRequest.class,
ThreadLocalContextManager.SERVLET_REQUEST));
+ beanManagerImpl.addInternalBean(new
ContextBean<ServletContext>(ServletContext.class,
ThreadLocalContextManager.SERVLET_CONTEXT));
+ beanManagerImpl.addInternalBean(new
ContextBean<ServletConfig>(ServletConfig.class,
ThreadLocalContextManager.SERVLET_CONFIG));
+ beanManagerImpl.addInternalBean(new
ContextBean<Providers>(Providers.class, ThreadLocalContextManager.PROVIDERS));
+ beanManagerImpl.addInternalBean(new
ContextBean<ContextResolver>(ContextResolver.class,
ThreadLocalContextManager.CONTEXT_RESOLVER));
+ }
+
@Override
public void init(final Properties properties) throws Exception {
super.init(properties);
@@ -105,4 +166,97 @@ public class CxfRSService extends RESTSe
protected RsHttpListener createHttpListener() {
return new CxfRsHttpListener(httpTransportFactory, getWildcard());
}
+
+ private static class ContextLiteral extends
EmptyAnnotationLiteral<Context> implements Context {
+ private static final long serialVersionUID = 1L;
+
+ public static final AnnotationLiteral<Context> INSTANCE = new
ContextLiteral();
+ }
+
+ private static class ContextBean<T> implements Bean<T> {
+ private final Class<T> type;
+ private final Set<Type> types;
+ private final Set<Annotation> qualifiers;
+ private final T proxy;
+
+ public ContextBean(final Class<T> type, final
AbstractRestThreadLocalProxy<T> proxy) {
+ this.type = type;
+ this.proxy =
+ (T)
Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new
Class<?>[]{type, Serializable.class}, new DelegateHandler(proxy));
+ this.types = new HashSet<Type>(asList(Object.class, type));
+ this.qualifiers = new
HashSet<Annotation>(asList(ContextLiteral.INSTANCE, AnyLiteral.INSTANCE));
+ }
+
+ @Override
+ public Set<Type> getTypes() {
+ return types;
+ }
+
+ @Override
+ public Set<Annotation> getQualifiers() {
+ return qualifiers;
+ }
+
+ @Override
+ public Class<? extends Annotation> getScope() {
+ return ApplicationScoped.class;
+ }
+
+ @Override
+ public String getName() {
+ return null;
+ }
+
+ @Override
+ public boolean isNullable() {
+ return false;
+ }
+
+ @Override
+ public Set<InjectionPoint> getInjectionPoints() {
+ return Collections.<InjectionPoint>emptySet();
+ }
+
+ @Override
+ public Class<?> getBeanClass() {
+ return type;
+ }
+
+ @Override
+ public Set<Class<? extends Annotation>> getStereotypes() {
+ return Collections.<Class<? extends Annotation>>emptySet();
+ }
+
+ @Override
+ public boolean isAlternative() {
+ return false;
+ }
+
+ @Override
+ public T create(final CreationalContext<T> tCreationalContext) {
+ return proxy;
+ }
+
+ @Override
+ public void destroy(final T t, final CreationalContext<T>
tCreationalContext) {
+ // no-op
+ }
+ }
+
+ private static class DelegateHandler<T> implements InvocationHandler {
+ private final AbstractRestThreadLocalProxy<T> proxy;
+
+ public DelegateHandler(final AbstractRestThreadLocalProxy<T> proxy) {
+ this.proxy = proxy;
+ }
+
+ @Override
+ public Object invoke(final Object ignored, final Method method, final
Object[] args) throws Throwable {
+ try {
+ return method.invoke(proxy.get(), args);
+ } catch (final InvocationTargetException ite) {
+ throw ite.getCause();
+ }
+ }
+ }
}
Modified:
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
Mon Jul 21 14:58:53 2014
@@ -39,6 +39,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
+import java.util.LinkedList;
public class LazyStopWebappClassLoader extends WebappClassLoader {
private static final Logger LOGGER =
Logger.getInstance(LogCategory.OPENEJB,
LazyStopWebappClassLoader.class.getName());
@@ -48,9 +49,10 @@ public class LazyStopWebappClassLoader e
public static final String TOMEE_WEBAPP_FIRST = "tomee.webapp-first";
private boolean restarting;
- private boolean forceStopPhase =
Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.webappclassloader.force-stop-phase",
"false"));
+ private final boolean forceStopPhase =
Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.webappclassloader.force-stop-phase",
"false"));
private ClassLoaderConfigurer configurer;
private final int hashCode;
+ private Collection<File> additionalRepos;
public LazyStopWebappClassLoader() {
j2seClassLoader = getSystemClassLoader();
@@ -77,13 +79,18 @@ public class LazyStopWebappClassLoader e
}
}
+ public Collection<File> getAdditionalRepos() {
+ initAdditionalRepos();
+ return additionalRepos;
+ }
+
@Override
public Class<?> loadClass(final String name) throws ClassNotFoundException
{
if ("org.apache.openejb.hibernate.OpenEJBJtaPlatform".equals(name)
- ||
"org.apache.openejb.jpa.integration.hibernate.PrefixNamingStrategy".equals(name)
- ||
"org.apache.openejb.jpa.integration.eclipselink.PrefixSessionCustomizer".equals(name)
- ||
"org.apache.openejb.eclipselink.JTATransactionController".equals(name)
- ||
"org.apache.tomee.mojarra.TomEEInjectionProvider".equals(name)) {
+ ||
"org.apache.openejb.jpa.integration.hibernate.PrefixNamingStrategy".equals(name)
+ ||
"org.apache.openejb.jpa.integration.eclipselink.PrefixSessionCustomizer".equals(name)
+ ||
"org.apache.openejb.eclipselink.JTATransactionController".equals(name)
+ || "org.apache.tomee.mojarra.TomEEInjectionProvider".equals(name))
{
// don't load them from system classloader (breaks all in embedded
mode and no sense in other cases)
synchronized (this) {
final ClassLoader old = j2seClassLoader;
@@ -158,17 +165,12 @@ public class LazyStopWebappClassLoader e
return restarting;
}
- // embeddeding implementation of sthg (JPA, JSF) can lead to classloading
issues if we don't enrich the webapp
- // with our integration jars
- // typically the class will try to be loaded by the common classloader
- // but the interface implemented or the parent class
- // will be in the webapp
- @Override
- public void start() throws LifecycleException {
- super.start(); // do it first otherwise we can't use this as
classloader
-
- // mainly for tomee-maven-plugin
+ public synchronized void initAdditionalRepos() {
+ if (additionalRepos != null) {
+ return;
+ }
if (CONTEXT.get() != null) {
+ additionalRepos = new LinkedList<File>();
final String root =
CONTEXT.get().getServletContext().getRealPath("/");
if (root != null) {
final String externalRepositories =
SystemInstance.get().getProperty("tomee." + new File(root).getName() +
".externalRepositories");
@@ -177,16 +179,35 @@ public class LazyStopWebappClassLoader e
for (final String additional :
externalRepositories.split(",")) {
final String trim = additional.trim();
if (!trim.isEmpty()) {
- try { // not addURL to look here first
- super.addRepository(new
File(trim).toURI().toURL().toExternalForm());
- } catch (final MalformedURLException e) {
- LOGGER.error(e.getMessage());
- }
+ final File file = new File(trim);
+ additionalRepos.add(file);
}
}
}
}
}
+ }
+
+ // embeddeding implementation of sthg (JPA, JSF) can lead to classloading
issues if we don't enrich the webapp
+ // with our integration jars
+ // typically the class will try to be loaded by the common classloader
+ // but the interface implemented or the parent class
+ // will be in the webapp
+ @Override
+ public void start() throws LifecycleException {
+ super.start(); // do it first otherwise we can't use this as
classloader
+
+ // mainly for tomee-maven-plugin
+ initAdditionalRepos();
+ if (additionalRepos != null) {
+ for (final File f : additionalRepos) {
+ try { // not addURL to look here first
+ super.addRepository(f.toURI().toURL().toExternalForm());
+ } catch (final MalformedURLException e) {
+ LOGGER.error(e.getMessage());
+ }
+ }
+ }
// add configurer enrichments
if (configurer != null) {
Modified:
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
Mon Jul 21 14:58:53 2014
@@ -18,7 +18,10 @@ package org.apache.tomee.catalina.naming
import org.apache.naming.resources.FileDirContext;
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
import java.io.File;
+import java.util.Date;
// a normal FileDirContext just unwrapping tomcat prefix
// to simulate a normal webapp dir and not a jar one
@@ -28,6 +31,7 @@ public class AdditionalDocBase extends F
private static final String PREFIX = "/META-INF/resources";
private static final int PREFIX_LENGTH = PREFIX.length();
private static final String WEB_INF_CLASSES = "/WEB-INF/classes";
+ private static final boolean RESPECT_HEADERS =
Boolean.getBoolean("tomee.AdditionalDocBase.respect-headers");
@Override
protected File file(final String name) {
@@ -39,4 +43,37 @@ public class AdditionalDocBase extends F
}
return super.file(name);
}
+
+ @Override
+ protected Attributes doGetAttributes(final String name, final String[]
attrIds) throws NamingException {
+ if (RESPECT_HEADERS) {
+ return super.doGetAttributes(name, attrIds);
+ }
+ final File file = file(name);
+ if (file == null) {
+ return null;
+ }
+ return new ForceRefeshAttributes(file);
+ }
+
+ private class ForceRefeshAttributes extends FileResourceAttributes {
+ public ForceRefeshAttributes(final File file) {
+ super(file);
+ }
+
+ @Override
+ public String getETag() {
+ return null;
+ }
+
+ @Override
+ public Date getLastModifiedDate() {
+ return new Date();
+ }
+
+ @Override
+ public long getLastModified() {
+ return System.currentTimeMillis();
+ }
+ }
}
Modified:
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
Mon Jul 21 14:58:53 2014
@@ -18,8 +18,10 @@ package org.apache.tomee.catalina.naming
import org.apache.catalina.core.StandardContext;
import org.apache.naming.resources.FileDirContext;
+import org.apache.tomee.catalina.LazyStopWebappClassLoader;
import java.io.File;
+import java.util.Collection;
// we need a FileDirContext (so doesn't work with not exploded wars) for boot
time
// note lifecycle is a quick one mainly used internally, other listeners are
not intended to be used
@@ -50,6 +52,14 @@ public class EmptyDirContext extends Fil
if (shouldLookup(name)) {
return super.file(name);
}
+ if ("/WEB-INF/classes".equals(name)) {
+ if (context.getLoader() != null &&
LazyStopWebappClassLoader.class.isInstance(context.getLoader().getClassLoader()))
{
+ final Collection<File> repos =
LazyStopWebappClassLoader.class.cast(context.getLoader().getClassLoader()).getAdditionalRepos();
+ if (repos != null && !repos.isEmpty()) {
+ return repos.iterator().next();
+ }
+ }
+ }
return null;
}
Modified:
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
Mon Jul 21 14:58:53 2014
@@ -41,15 +41,16 @@ public class Installer implements Instal
private static final boolean listenerInstalled;
private static final boolean agentInstalled;
+
static {
final Options opts = SystemInstance.get().getOptions();
// is the OpenEJB listener installed
listenerInstalled =
"OpenEJBListener".equals(opts.get("openejb.embedder.source", ""))
- || "ServerListener".equals(opts.get("openejb.embedder.source",
""));
+ || "ServerListener".equals(opts.get("openejb.embedder.source",
""));
// is the OpenEJB javaagent installed
agentInstalled = InstallerTools.invokeStaticNoArgMethod(
- "org.apache.openejb.javaagent.Agent", "getInstrumentation") !=
null;
+ "org.apache.openejb.javaagent.Agent", "getInstrumentation") !=
null;
}
public static boolean isListenerInstalled() {
@@ -152,21 +153,21 @@ public class Installer implements Instal
// add our listener
final String roleUserTags =
- " <role rolename=\"tomee-admin\" />\n" +
- " <user username=\"tomee\" password=\"tomee\"
roles=\"tomee-admin,manager-gui\" />\n";
+ " <role rolename=\"tomee-admin\" />\n" +
+ " <user username=\"tomee\" password=\"tomee\"
roles=\"tomee-admin,manager-gui\" />\n";
final String content;
if (!securityActivated) {
content =
- " <!-- Activate those lines to get access to TomEE GUI
-->\n" +
- " <!--\n" +
- roleUserTags +
- " -->\n" +
- "</tomcat-users>\n";
+ " <!-- Activate those lines to get access to TomEE GUI -->\n"
+
+ " <!--\n" +
+ roleUserTags +
+ " -->\n" +
+ "</tomcat-users>\n";
} else {
content =
- " <!-- Activate those lines to get access to TomEE GUI\n
-->" +
- roleUserTags +
- "</tomcat-users>\n";
+ " <!-- Activate those lines to get access to TomEE GUI\n -->"
+
+ roleUserTags +
+ "</tomcat-users>\n";
}
final String newTomcatUsers =
tomcatUsersXml.replace("</tomcat-users>", content);
@@ -197,22 +198,27 @@ public class Installer implements Instal
}
}
+ private void removeTomcatLibJar(final String name) {
+ final File jar = new File(paths.getCatalinaLibDir(), name);
+ removeJar(jar);
+ }
+
private void commentDeploymentDir() {
final File tomeeXml = new File(paths.getCatalinaConfDir(),
"tomee.xml");
if (!tomeeXml.exists()) {
Installers.writeAll(tomeeXml,
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
- "<tomee>\n" +
- " <!-- see
http://tomee.apache.org/containers-and-resources.html -->\n\n" +
- " <!-- activate next line to be able to deploy
applications in apps -->\n" +
- " <!-- <Deployments dir=\"apps\" /> -->\n" +
- "</tomee>\n", alerts);
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<tomee>\n" +
+ " <!-- see
http://tomee.apache.org/containers-and-resources.html -->\n\n" +
+ " <!-- activate next line to be able to deploy
applications in apps -->\n" +
+ " <!-- <Deployments dir=\"apps\" /> -->\n" +
+ "</tomee>\n", alerts);
}
}
private void addTomEELinkToTomcatHome() {
final File home = paths.getHome();
- if(!home.exists()) {
+ if (!home.exists()) {
return;
}
final String indeJsp = Installers.readAll(home, alerts);
@@ -226,10 +232,10 @@ public class Installer implements Instal
}
final String newIndeJsp = indeJsp.replaceFirst("<div id=\"actions\">",
- "<div id=\\\"actions\\\">\r\n" +
- " <div class=\"button\">\n" +
- " <a class=\"container shadow\"
href=\"/tomee\"><span>TomEE Gui</span></a>\n" +
- " </div>");
+ "<div id=\\\"actions\\\">\r\n" +
+ " <div class=\"button\">\n" +
+ " <a class=\"container shadow\"
href=\"/tomee\"><span>TomEE Gui</span></a>\n" +
+ " </div>");
Installers.writeAll(home, newIndeJsp, alerts);
}
@@ -253,7 +259,7 @@ public class Installer implements Instal
alerts.addInfo("Copy " + file.getName() + " to lib");
} catch (final IOException e) {
alerts.addError("Unable to " + file.getName() + " to
Tomcat lib directory. This will need to be " +
- "performed manually.", e);
+ "performed manually.", e);
}
}
}
@@ -269,7 +275,7 @@ public class Installer implements Instal
final File jaxbApi = paths.findOpenEJBJar("geronimo-jaxb_2.2_spec");
copyClasses(paths.getJavaEEAPIJar(), jaxbApi, new File(endorsed,
"jaxb-api.jar"), "javax/xml/bind/.*",
- Arrays.asList("javax/xml/bind/ContextFinder.class",
"javax/xml/bind/DatatypeConverter.class"));
+ Arrays.asList("javax/xml/bind/ContextFinder.class",
"javax/xml/bind/DatatypeConverter.class"));
removeJar(jaxbApi);
// don't put jaxb-impl in endorsed since it relies on the jvm itself
@@ -381,11 +387,6 @@ public class Installer implements Instal
}
}
- private void removeTomcatLibJar(final String name) {
- final File jar = new File(paths.getCatalinaLibDir(), name);
- removeJar(jar);
- }
-
public void installListener() {
installListener("org.apache.tomee.loader.OpenEJBListener");
}
@@ -436,12 +437,12 @@ public class Installer implements Instal
String newServerXml = null;
try {
newServerXml = Installers.replace(serverXmlOriginal,
- "<Server",
- "<Server",
- ">",
- ">\r\n" +
- " <!-- TomEE plugin for Tomcat -->\r\n" +
- " <Listener className=\"" + listener + "\" />");
+ "<Server",
+ "<Server",
+ ">",
+ ">\r\n" +
+ " <!-- TomEE plugin for Tomcat -->\r\n" +
+ " <Listener className=\"" + listener + "\" />");
} catch (final IOException e) {
alerts.addError("Error while adding listener to server.xml file",
e);
}
@@ -509,12 +510,12 @@ public class Installer implements Instal
// add our magic bits to the catalina sh file
String openejbJavaagentPath =
paths.getCatalinaHomeDir().toURI().relativize(javaagentJar.toURI()).getPath();
final String newCatalinaSh = catalinaShOriginal.replace("# -----
Execute The Requested Command",
- "# Add OpenEJB javaagent\n" +
- "if [ -r \"$CATALINA_HOME\"/" + openejbJavaagentPath +
" ]; then\n" +
- " JAVA_OPTS=\"\"-javaagent:$CATALINA_HOME/" +
openejbJavaagentPath + "\" $JAVA_OPTS\"\n" +
- "fi\n" +
- "\n" +
- "# ----- Execute The Requested Command");
+ "# Add OpenEJB javaagent\n" +
+ "if [ -r \"$CATALINA_HOME\"/" + openejbJavaagentPath + " ];
then\n" +
+ " JAVA_OPTS=\"\"-javaagent:$CATALINA_HOME/" +
openejbJavaagentPath + "\" $JAVA_OPTS\"\n" +
+ "fi\n" +
+ "\n" +
+ "# ----- Execute The Requested Command");
// overwrite the catalina.sh file
if (Installers.writeAll(paths.getCatalinaShFile(), newCatalinaSh,
alerts)) {
@@ -522,14 +523,14 @@ public class Installer implements Instal
}
boolean isCatalinaShExecutable =
paths.getCatalinaShFile().canExecute();
- if(!isCatalinaShExecutable) {
+ if (!isCatalinaShExecutable) {
try {
isCatalinaShExecutable =
paths.getCatalinaShFile().setExecutable(true);
} catch (final SecurityException e) {
alerts.addWarning("Cannot change CatalinaSh executable
attribute.");
}
}
- if(!isCatalinaShExecutable) {
+ if (!isCatalinaShExecutable) {
alerts.addWarning("CatalinaSh is not executable.");
}
@@ -559,12 +560,12 @@ public class Installer implements Instal
// add our magic bits to the catalina bat file
openejbJavaagentPath = openejbJavaagentPath.replace('/', '\\');
final String newCatalinaBat = catalinaBatOriginal.replace("rem -----
Execute The Requested Command",
- "rem Add OpenEJB javaagent\r\n" +
- "if not exist \"%CATALINA_HOME%\\" +
openejbJavaagentPath + "\" goto noOpenEJBJavaagent\r\n" +
- "set JAVA_OPTS=\"-javaagent:%CATALINA_HOME%\\" +
openejbJavaagentPath + "\" %JAVA_OPTS%\r\n" +
- ":noOpenEJBJavaagent\r\n" +
- "\r\n" +
- "rem ----- Execute The Requested Command");
+ "rem Add OpenEJB javaagent\r\n" +
+ "if not exist \"%CATALINA_HOME%\\" + openejbJavaagentPath +
"\" goto noOpenEJBJavaagent\r\n" +
+ "set JAVA_OPTS=\"-javaagent:%CATALINA_HOME%\\" +
openejbJavaagentPath + "\" %JAVA_OPTS%\r\n" +
+ ":noOpenEJBJavaagent\r\n" +
+ "\r\n" +
+ "rem ----- Execute The Requested Command");
// overwrite the catalina.bat file
if (Installers.writeAll(paths.getCatalinaBatFile(), newCatalinaBat,
alerts)) {
@@ -579,9 +580,9 @@ public class Installer implements Instal
* of tomcat. if there is already a conf/logging.properties file available
* then this method appends the contents of openejb logging.properties file
* to the exisiting properties file.
- *
+ * <p/>
* Replace web.xml to set jasper in production mode instead of dev mode.
- *
+ * <p/>
* NOTE:- If the existing conf/logging.properties file already has some
openejb specific
* configuration, then this method will just leave the logging.properties
file alone
*/
@@ -621,59 +622,59 @@ public class Installer implements Instal
// now we are using tomcat one of jdk one by default
//
final String openejbLoggingProps =
"################################\r\n" +
- "# OpenEJB/TomEE specific loggers\r\n" +
- "################################\r\n" +
- "#\r\n" +
- "# ACTIVATE LEVEL/HANDLERS YOU WANT\r\n" +
- "# IF YOU ACTIVATE 5tomee.org.apache.juli.FileHandler\r\n" +
- "# ADD IT TO handlers LINE LIKE:\r\n" +
- "#\r\n" +
- "# handlers = 1catalina.org.apache.juli.FileHandler,
2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler,
4host-manager.org.apache.juli.FileHandler, 5tomee.org.apache.juli.FileHandler,
java.util.logging.ConsoleHandler\r\n" +
- "#\r\n" +
- "# LEVELS:\r\n" +
- "# =======\r\n" +
- "#\r\n" +
- "# OpenEJB.level = WARNING\r\n" +
- "# OpenEJB.options.level = INFO\r\n" +
- "# OpenEJB.server.level = INFO\r\n" +
- "# OpenEJB.startup.level = INFO\r\n" +
- "# OpenEJB.startup.service.level = WARNING\r\n" +
- "# OpenEJB.startup.config.level = INFO\r\n" +
- "# OpenEJB.hsql.level = INFO\r\n" +
- "# CORBA-Adapter.level = WARNING\r\n" +
- "# Transaction.level = WARNING\r\n" +
- "# org.apache.activemq.level = SEVERE\r\n" +
- "# org.apache.geronimo.level = SEVERE\r\n" +
- "# openjpa.level = WARNING\r\n" +
- "# OpenEJB.cdi.level = INFO\r\n" +
- "# org.apache.webbeans.level = INFO\r\n" +
- "# org.apache.openejb.level = FINE\r\n" +
- "#\r\n" +
- "# HANDLERS:\r\n" +
- "# =========\r\n" +
- "#\r\n" +
- "# OpenEJB.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# OpenEJB.options.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# OpenEJB.server.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# OpenEJB.startup.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# OpenEJB.startup.service.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# OpenEJB.startup.config.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# OpenEJB.hsql.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# CORBA-Adapter.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# Transaction.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# org.apache.activemq.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# org.apache.geronimo.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# openjpa.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# OpenEJB.cdi.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# org.apache.webbeans.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "# org.apache.openejb.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
- "#\r\n" +
- "# TOMEE HANDLER SAMPLE:\r\n" +
- "# =====================\r\n" +
- "#\r\n" +
- "# 5tomee.org.apache.juli.FileHandler.level = FINEST\r\n" +
- "# 5tomee.org.apache.juli.FileHandler.directory =
${catalina.base}/logs\r\n" +
- "# 5tomee.org.apache.juli.FileHandler.prefix = tomee.\r\n";
+ "# OpenEJB/TomEE specific loggers\r\n" +
+ "################################\r\n" +
+ "#\r\n" +
+ "# ACTIVATE LEVEL/HANDLERS YOU WANT\r\n" +
+ "# IF YOU ACTIVATE 5tomee.org.apache.juli.FileHandler\r\n" +
+ "# ADD IT TO handlers LINE LIKE:\r\n" +
+ "#\r\n" +
+ "# handlers = 1catalina.org.apache.juli.FileHandler,
2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler,
4host-manager.org.apache.juli.FileHandler, 5tomee.org.apache.juli.FileHandler,
java.util.logging.ConsoleHandler\r\n" +
+ "#\r\n" +
+ "# LEVELS:\r\n" +
+ "# =======\r\n" +
+ "#\r\n" +
+ "# OpenEJB.level = WARNING\r\n" +
+ "# OpenEJB.options.level = INFO\r\n" +
+ "# OpenEJB.server.level = INFO\r\n" +
+ "# OpenEJB.startup.level = INFO\r\n" +
+ "# OpenEJB.startup.service.level = WARNING\r\n" +
+ "# OpenEJB.startup.config.level = INFO\r\n" +
+ "# OpenEJB.hsql.level = INFO\r\n" +
+ "# CORBA-Adapter.level = WARNING\r\n" +
+ "# Transaction.level = WARNING\r\n" +
+ "# org.apache.activemq.level = SEVERE\r\n" +
+ "# org.apache.geronimo.level = SEVERE\r\n" +
+ "# openjpa.level = WARNING\r\n" +
+ "# OpenEJB.cdi.level = INFO\r\n" +
+ "# org.apache.webbeans.level = INFO\r\n" +
+ "# org.apache.openejb.level = FINE\r\n" +
+ "#\r\n" +
+ "# HANDLERS:\r\n" +
+ "# =========\r\n" +
+ "#\r\n" +
+ "# OpenEJB.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# OpenEJB.options.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# OpenEJB.server.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# OpenEJB.startup.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# OpenEJB.startup.service.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# OpenEJB.startup.config.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# OpenEJB.hsql.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# CORBA-Adapter.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# Transaction.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# org.apache.activemq.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# org.apache.geronimo.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# openjpa.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# OpenEJB.cdi.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# org.apache.webbeans.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "# org.apache.openejb.handlers =
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+ "#\r\n" +
+ "# TOMEE HANDLER SAMPLE:\r\n" +
+ "# =====================\r\n" +
+ "#\r\n" +
+ "# 5tomee.org.apache.juli.FileHandler.level = FINEST\r\n" +
+ "# 5tomee.org.apache.juli.FileHandler.directory =
${catalina.base}/logs\r\n" +
+ "# 5tomee.org.apache.juli.FileHandler.prefix = tomee.\r\n";
final File loggingPropsFile = new File(confDir, "logging.properties");
String newLoggingProps = null;
if (!loggingPropsFile.exists()) {
@@ -683,8 +684,8 @@ public class Installer implements Instal
if (!loggingPropsOriginal.toLowerCase().contains("openejb")) {
// append our properties
newLoggingProps = loggingPropsOriginal +
- "\r\n\r\n" +
- openejbLoggingProps + "\r\n";
+ "\r\n\r\n" +
+ openejbLoggingProps + "\r\n";
}
}
if (newLoggingProps != null) {
Modified:
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
---
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java
(original)
+++
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java
Mon Jul 21 14:58:53 2014
@@ -40,7 +40,12 @@ public class SslTomEETest {
try {
keyToolClass = Class.forName("sun.security.tools.KeyTool");
} catch (final ClassNotFoundException e) {
- keyToolClass = Class.forName("com.ibm.crypto.tools.KeyTool");
+ try {
+ // in jdk8, the tool changed ...
+ keyToolClass =
Class.forName("sun.security.tools.keytool.Main");
+ } catch (final ClassNotFoundException cnfe) {
+ keyToolClass =
Class.forName("com.ibm.crypto.tools.KeyTool");
+ }
}
final String[] args = {