[jira] [Commented] (TOMEE-2458) Loading Beans causes ClassNotFoundException when using custom context classloader

2019-02-09 Thread Donald Kwakkel (JIRA)


[ 
https://issues.apache.org/jira/browse/TOMEE-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16764206#comment-16764206
 ] 

Donald Kwakkel commented on TOMEE-2458:
---

[~romain.manni-bucau]: Thanks, extension is working. 

> Loading Beans causes ClassNotFoundException when using custom context 
> classloader
> -
>
> Key: TOMEE-2458
> URL: https://issues.apache.org/jira/browse/TOMEE-2458
> Project: TomEE
>  Issue Type: Bug
>  Components: TomEE Core Server
>Affects Versions: 8.0.0-M1
>Reporter: Gerwin
>Priority: Major
> Attachments: myclassloader.jar, myclassloader.jar.withtccl, 
> myexception.jar, myexception.jar.withbean, repro.war
>
>
> h4. Steps to reproduce
> # Create a custom Exception and put it in {{CATALINA_HOME/myexception.jar}}
> {code:java}
> public class MyException extends Exception {
> }
> {code}
> # Create a custom ClassLoader and put it in 
> {{CATALINA_HOME/myclassloader.jar}}
> {code:java}
> public class MyClassLoader extends WebappClassLoader {
>   public MyClassLoader(ClassLoader parent)throws MalformedURLException {
>   super(parent);
>   addURL(Paths.get(System.getProperty("catalina.home"), 
> "myexception.jar").toUri().toURL());
>   }
> }
> {code}
> # Put the classloader on the classpath
> {code:none|title=CATALINA_HOME/conf/catalina.properties}
> common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/myclassloader.jar"
> {code}
> # Use the classloader in the context
> {code:xml|title=CATALINA_HOME/webapps/repro/META-INF/context.xml}
> 
> 
> 
> {code}
> # Create a bean with the {{MyException}} in the method signature
> {code:java|title=CATALINA_HOME/webapps/repro/WEB-INF/classes/MyBean.class}
> @Stateless(name = "MyBeanEJB")
> public class MyBean {
>   public String hello() throws MyException {
>   return "hello";
>   }
> }
> {code}
> # Use the bean
> {code:java|title=CATALINA_HOME/webapps/repro/index.jsp}
> <%@ page import="MyBean" %>
> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
> 
>   
>   <%
> MyBean myBean = new MyBean();
> out.println(myBean.hello());
>   %>
>   
> 
> {code}
> h4. Actual result
> {code:none|title=CATALINA_HOME/logs/catalina.0.log}
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/9.0.12 (8.0.0-SNAPSHOT)
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Deploying web application archive [C:\Program 
> Files\TomEE\webapps\repro.war]
> jan 23, 2019 4:37:17 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
> INFO: - localhost -> /repro
> jan 23, 2019 4:37:17 PM org.apache.openejb.config.ConfigurationFactory 
> configureApplication
> INFO: Configuring enterprise application: C:\Program Files\TomEE\webapps\repro
> jan 23, 2019 4:37:17 PM sun.reflect.NativeMethodAccessorImpl invoke
> SEVERE: ContainerBase.addChild: start: 
> org.apache.catalina.LifecycleException: Failed to start component 
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/repro]]
>   at 
> org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
>   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
>   at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
>   at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
>   at 
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858)
>   at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>   at 
> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
>   at 
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
>   at 
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
>   at 
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
>   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
>   at 
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
>   at 
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
>   at 
> org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
>   at 
> org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
>

[jira] [Commented] (TOMEE-2458) Loading Beans causes ClassNotFoundException when using custom context classloader

2019-01-24 Thread Romain Manni-Bucau (JIRA)


[ 
https://issues.apache.org/jira/browse/TOMEE-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16751105#comment-16751105
 ] 

Romain Manni-Bucau commented on TOMEE-2458:
---

[~dkwakkel] this extension 
https://github.com/apache/tomee/blob/master/container/openejb-core/src/main/java/org/apache/openejb/classloader/ClassLoaderConfigurer.java

> Loading Beans causes ClassNotFoundException when using custom context 
> classloader
> -
>
> Key: TOMEE-2458
> URL: https://issues.apache.org/jira/browse/TOMEE-2458
> Project: TomEE
>  Issue Type: Bug
>  Components: TomEE Core Server
>Affects Versions: 8.0.0-M1
>Reporter: Gerwin
>Priority: Major
> Attachments: myclassloader.jar, myclassloader.jar.withtccl, 
> myexception.jar, myexception.jar.withbean, repro.war
>
>
> h4. Steps to reproduce
> # Create a custom Exception and put it in {{CATALINA_HOME/myexception.jar}}
> {code:java}
> public class MyException extends Exception {
> }
> {code}
> # Create a custom ClassLoader and put it in 
> {{CATALINA_HOME/myclassloader.jar}}
> {code:java}
> public class MyClassLoader extends WebappClassLoader {
>   public MyClassLoader(ClassLoader parent)throws MalformedURLException {
>   super(parent);
>   addURL(Paths.get(System.getProperty("catalina.home"), 
> "myexception.jar").toUri().toURL());
>   }
> }
> {code}
> # Put the classloader on the classpath
> {code:none|title=CATALINA_HOME/conf/catalina.properties}
> common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/myclassloader.jar"
> {code}
> # Use the classloader in the context
> {code:xml|title=CATALINA_HOME/webapps/repro/META-INF/context.xml}
> 
> 
> 
> {code}
> # Create a bean with the {{MyException}} in the method signature
> {code:java|title=CATALINA_HOME/webapps/repro/WEB-INF/classes/MyBean.class}
> @Stateless(name = "MyBeanEJB")
> public class MyBean {
>   public String hello() throws MyException {
>   return "hello";
>   }
> }
> {code}
> # Use the bean
> {code:java|title=CATALINA_HOME/webapps/repro/index.jsp}
> <%@ page import="MyBean" %>
> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
> 
>   
>   <%
> MyBean myBean = new MyBean();
> out.println(myBean.hello());
>   %>
>   
> 
> {code}
> h4. Actual result
> {code:none|title=CATALINA_HOME/logs/catalina.0.log}
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/9.0.12 (8.0.0-SNAPSHOT)
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Deploying web application archive [C:\Program 
> Files\TomEE\webapps\repro.war]
> jan 23, 2019 4:37:17 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
> INFO: - localhost -> /repro
> jan 23, 2019 4:37:17 PM org.apache.openejb.config.ConfigurationFactory 
> configureApplication
> INFO: Configuring enterprise application: C:\Program Files\TomEE\webapps\repro
> jan 23, 2019 4:37:17 PM sun.reflect.NativeMethodAccessorImpl invoke
> SEVERE: ContainerBase.addChild: start: 
> org.apache.catalina.LifecycleException: Failed to start component 
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/repro]]
>   at 
> org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
>   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
>   at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
>   at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
>   at 
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858)
>   at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>   at 
> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
>   at 
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
>   at 
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
>   at 
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
>   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
>   at 
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
>   at 
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
>   at 
> 

[jira] [Commented] (TOMEE-2458) Loading Beans causes ClassNotFoundException when using custom context classloader

2019-01-24 Thread Donald Kwakkel (JIRA)


[ 
https://issues.apache.org/jira/browse/TOMEE-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16751078#comment-16751078
 ] 

Donald Kwakkel commented on TOMEE-2458:
---

[~romain.manni-bucau]: What do you mean with ' openejb classloader customizer'?

> Loading Beans causes ClassNotFoundException when using custom context 
> classloader
> -
>
> Key: TOMEE-2458
> URL: https://issues.apache.org/jira/browse/TOMEE-2458
> Project: TomEE
>  Issue Type: Bug
>  Components: TomEE Core Server
>Affects Versions: 8.0.0-M1
>Reporter: Gerwin
>Priority: Major
> Attachments: myclassloader.jar, myclassloader.jar.withtccl, 
> myexception.jar, myexception.jar.withbean, repro.war
>
>
> h4. Steps to reproduce
> # Create a custom Exception and put it in {{CATALINA_HOME/myexception.jar}}
> {code:java}
> public class MyException extends Exception {
> }
> {code}
> # Create a custom ClassLoader and put it in 
> {{CATALINA_HOME/myclassloader.jar}}
> {code:java}
> public class MyClassLoader extends WebappClassLoader {
>   public MyClassLoader(ClassLoader parent)throws MalformedURLException {
>   super(parent);
>   addURL(Paths.get(System.getProperty("catalina.home"), 
> "myexception.jar").toUri().toURL());
>   }
> }
> {code}
> # Put the classloader on the classpath
> {code:none|title=CATALINA_HOME/conf/catalina.properties}
> common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/myclassloader.jar"
> {code}
> # Use the classloader in the context
> {code:xml|title=CATALINA_HOME/webapps/repro/META-INF/context.xml}
> 
> 
> 
> {code}
> # Create a bean with the {{MyException}} in the method signature
> {code:java|title=CATALINA_HOME/webapps/repro/WEB-INF/classes/MyBean.class}
> @Stateless(name = "MyBeanEJB")
> public class MyBean {
>   public String hello() throws MyException {
>   return "hello";
>   }
> }
> {code}
> # Use the bean
> {code:java|title=CATALINA_HOME/webapps/repro/index.jsp}
> <%@ page import="MyBean" %>
> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
> 
>   
>   <%
> MyBean myBean = new MyBean();
> out.println(myBean.hello());
>   %>
>   
> 
> {code}
> h4. Actual result
> {code:none|title=CATALINA_HOME/logs/catalina.0.log}
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/9.0.12 (8.0.0-SNAPSHOT)
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Deploying web application archive [C:\Program 
> Files\TomEE\webapps\repro.war]
> jan 23, 2019 4:37:17 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
> INFO: - localhost -> /repro
> jan 23, 2019 4:37:17 PM org.apache.openejb.config.ConfigurationFactory 
> configureApplication
> INFO: Configuring enterprise application: C:\Program Files\TomEE\webapps\repro
> jan 23, 2019 4:37:17 PM sun.reflect.NativeMethodAccessorImpl invoke
> SEVERE: ContainerBase.addChild: start: 
> org.apache.catalina.LifecycleException: Failed to start component 
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/repro]]
>   at 
> org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
>   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
>   at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
>   at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
>   at 
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858)
>   at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>   at 
> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
>   at 
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
>   at 
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
>   at 
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
>   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
>   at 
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
>   at 
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
>   at 
> org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
>   at 
> 

[jira] [Commented] (TOMEE-2458) Loading Beans causes ClassNotFoundException when using custom context classloader

2019-01-24 Thread Roberto Cortez (JIRA)


[ 
https://issues.apache.org/jira/browse/TOMEE-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16750973#comment-16750973
 ] 

Roberto Cortez commented on TOMEE-2458:
---

[~dkwakkel] I believe [~romain.manni-bucau] is right.

The problem here is that some of the MP libs require Bean injection on their 
Extensions. So, the Extension is loading, but their CDI beans are not, hence 
you get that weird NPE.

Most likely, the CDI Extensions are being loaded by one class loader and their 
beans scanning by another loader, or not even scanned at all.

Can you have a look here 
org.apache.openejb.config.DeploymentLoader#addBeansXmls(org.apache.openejb.config.WebModule).
 This is where the url list of jars is obtained to perform CDI scanning for 
beans. So, it needs to return all the MP libs in here.

> Loading Beans causes ClassNotFoundException when using custom context 
> classloader
> -
>
> Key: TOMEE-2458
> URL: https://issues.apache.org/jira/browse/TOMEE-2458
> Project: TomEE
>  Issue Type: Bug
>  Components: TomEE Core Server
>Affects Versions: 8.0.0-M1
>Reporter: Gerwin
>Priority: Major
> Attachments: myclassloader.jar, myclassloader.jar.withtccl, 
> myexception.jar, myexception.jar.withbean, repro.war
>
>
> h4. Steps to reproduce
> # Create a custom Exception and put it in {{CATALINA_HOME/myexception.jar}}
> {code:java}
> public class MyException extends Exception {
> }
> {code}
> # Create a custom ClassLoader and put it in 
> {{CATALINA_HOME/myclassloader.jar}}
> {code:java}
> public class MyClassLoader extends WebappClassLoader {
>   public MyClassLoader(ClassLoader parent)throws MalformedURLException {
>   super(parent);
>   addURL(Paths.get(System.getProperty("catalina.home"), 
> "myexception.jar").toUri().toURL());
>   }
> }
> {code}
> # Put the classloader on the classpath
> {code:none|title=CATALINA_HOME/conf/catalina.properties}
> common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/myclassloader.jar"
> {code}
> # Use the classloader in the context
> {code:xml|title=CATALINA_HOME/webapps/repro/META-INF/context.xml}
> 
> 
> 
> {code}
> # Create a bean with the {{MyException}} in the method signature
> {code:java|title=CATALINA_HOME/webapps/repro/WEB-INF/classes/MyBean.class}
> @Stateless(name = "MyBeanEJB")
> public class MyBean {
>   public String hello() throws MyException {
>   return "hello";
>   }
> }
> {code}
> # Use the bean
> {code:java|title=CATALINA_HOME/webapps/repro/index.jsp}
> <%@ page import="MyBean" %>
> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
> 
>   
>   <%
> MyBean myBean = new MyBean();
> out.println(myBean.hello());
>   %>
>   
> 
> {code}
> h4. Actual result
> {code:none|title=CATALINA_HOME/logs/catalina.0.log}
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/9.0.12 (8.0.0-SNAPSHOT)
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Deploying web application archive [C:\Program 
> Files\TomEE\webapps\repro.war]
> jan 23, 2019 4:37:17 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
> INFO: - localhost -> /repro
> jan 23, 2019 4:37:17 PM org.apache.openejb.config.ConfigurationFactory 
> configureApplication
> INFO: Configuring enterprise application: C:\Program Files\TomEE\webapps\repro
> jan 23, 2019 4:37:17 PM sun.reflect.NativeMethodAccessorImpl invoke
> SEVERE: ContainerBase.addChild: start: 
> org.apache.catalina.LifecycleException: Failed to start component 
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/repro]]
>   at 
> org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
>   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
>   at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
>   at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
>   at 
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858)
>   at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>   at 
> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
>   at 
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
>   at 
> 

[jira] [Commented] (TOMEE-2458) Loading Beans causes ClassNotFoundException when using custom context classloader

2019-01-24 Thread Romain Manni-Bucau (JIRA)


[ 
https://issues.apache.org/jira/browse/TOMEE-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16750877#comment-16750877
 ] 

Romain Manni-Bucau commented on TOMEE-2458:
---

[~dkwakkel] nop, this does not look the same issue like that. ParentClassLoader 
must be openejb classloader and never the TCCL of an app (it must not be able 
to load any app class to be concrete but only server libs except when all are 
in the same flat classloader). Here the issue is that the scanned loader does 
not match your custom loader strategy since we just respect webapp strategies. 
Using WEB-INF/jars.txt or openejb classloader customizer would work since the 
scanning and runtime will them use the same list of jars.

> Loading Beans causes ClassNotFoundException when using custom context 
> classloader
> -
>
> Key: TOMEE-2458
> URL: https://issues.apache.org/jira/browse/TOMEE-2458
> Project: TomEE
>  Issue Type: Bug
>  Components: TomEE Core Server
>Affects Versions: 8.0.0-M1
>Reporter: Gerwin
>Priority: Major
> Attachments: myclassloader.jar, myclassloader.jar.withtccl, 
> myexception.jar, myexception.jar.withbean, repro.war
>
>
> h4. Steps to reproduce
> # Create a custom Exception and put it in {{CATALINA_HOME/myexception.jar}}
> {code:java}
> public class MyException extends Exception {
> }
> {code}
> # Create a custom ClassLoader and put it in 
> {{CATALINA_HOME/myclassloader.jar}}
> {code:java}
> public class MyClassLoader extends WebappClassLoader {
>   public MyClassLoader(ClassLoader parent)throws MalformedURLException {
>   super(parent);
>   addURL(Paths.get(System.getProperty("catalina.home"), 
> "myexception.jar").toUri().toURL());
>   }
> }
> {code}
> # Put the classloader on the classpath
> {code:none|title=CATALINA_HOME/conf/catalina.properties}
> common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/myclassloader.jar"
> {code}
> # Use the classloader in the context
> {code:xml|title=CATALINA_HOME/webapps/repro/META-INF/context.xml}
> 
> 
> 
> {code}
> # Create a bean with the {{MyException}} in the method signature
> {code:java|title=CATALINA_HOME/webapps/repro/WEB-INF/classes/MyBean.class}
> @Stateless(name = "MyBeanEJB")
> public class MyBean {
>   public String hello() throws MyException {
>   return "hello";
>   }
> }
> {code}
> # Use the bean
> {code:java|title=CATALINA_HOME/webapps/repro/index.jsp}
> <%@ page import="MyBean" %>
> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
> 
>   
>   <%
> MyBean myBean = new MyBean();
> out.println(myBean.hello());
>   %>
>   
> 
> {code}
> h4. Actual result
> {code:none|title=CATALINA_HOME/logs/catalina.0.log}
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/9.0.12 (8.0.0-SNAPSHOT)
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Deploying web application archive [C:\Program 
> Files\TomEE\webapps\repro.war]
> jan 23, 2019 4:37:17 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
> INFO: - localhost -> /repro
> jan 23, 2019 4:37:17 PM org.apache.openejb.config.ConfigurationFactory 
> configureApplication
> INFO: Configuring enterprise application: C:\Program Files\TomEE\webapps\repro
> jan 23, 2019 4:37:17 PM sun.reflect.NativeMethodAccessorImpl invoke
> SEVERE: ContainerBase.addChild: start: 
> org.apache.catalina.LifecycleException: Failed to start component 
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/repro]]
>   at 
> org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
>   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
>   at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
>   at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
>   at 
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858)
>   at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>   at 
> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
>   at 
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
>   at 
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
>   at 
> 

[jira] [Commented] (TOMEE-2458) Loading Beans causes ClassNotFoundException when using custom context classloader

2019-01-23 Thread Donald Kwakkel (JIRA)


[ 
https://issues.apache.org/jira/browse/TOMEE-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16750833#comment-16750833
 ] 

Donald Kwakkel commented on TOMEE-2458:
---

I found a similair issue about tccl not used here: TOMEE-877. 
[~romain.manni-bucau] is this the same issue?

> Loading Beans causes ClassNotFoundException when using custom context 
> classloader
> -
>
> Key: TOMEE-2458
> URL: https://issues.apache.org/jira/browse/TOMEE-2458
> Project: TomEE
>  Issue Type: Bug
>  Components: TomEE Core Server
>Affects Versions: 8.0.0-M1
>Reporter: Gerwin
>Priority: Major
> Attachments: myclassloader.jar, myclassloader.jar.withtccl, 
> myexception.jar, myexception.jar.withbean, repro.war
>
>
> h4. Steps to reproduce
> # Create a custom Exception and put it in {{CATALINA_HOME/myexception.jar}}
> {code:java}
> public class MyException extends Exception {
> }
> {code}
> # Create a custom ClassLoader and put it in 
> {{CATALINA_HOME/myclassloader.jar}}
> {code:java}
> public class MyClassLoader extends WebappClassLoader {
>   public MyClassLoader(ClassLoader parent)throws MalformedURLException {
>   super(parent);
>   addURL(Paths.get(System.getProperty("catalina.home"), 
> "myexception.jar").toUri().toURL());
>   }
> }
> {code}
> # Put the classloader on the classpath
> {code:none|title=CATALINA_HOME/conf/catalina.properties}
> common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/myclassloader.jar"
> {code}
> # Use the classloader in the context
> {code:xml|title=CATALINA_HOME/webapps/repro/META-INF/context.xml}
> 
> 
> 
> {code}
> # Create a bean with the {{MyException}} in the method signature
> {code:java|title=CATALINA_HOME/webapps/repro/WEB-INF/classes/MyBean.class}
> @Stateless(name = "MyBeanEJB")
> public class MyBean {
>   public String hello() throws MyException {
>   return "hello";
>   }
> }
> {code}
> # Use the bean
> {code:java|title=CATALINA_HOME/webapps/repro/index.jsp}
> <%@ page import="MyBean" %>
> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
> 
>   
>   <%
> MyBean myBean = new MyBean();
> out.println(myBean.hello());
>   %>
>   
> 
> {code}
> h4. Actual result
> {code:none|title=CATALINA_HOME/logs/catalina.0.log}
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/9.0.12 (8.0.0-SNAPSHOT)
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Deploying web application archive [C:\Program 
> Files\TomEE\webapps\repro.war]
> jan 23, 2019 4:37:17 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
> INFO: - localhost -> /repro
> jan 23, 2019 4:37:17 PM org.apache.openejb.config.ConfigurationFactory 
> configureApplication
> INFO: Configuring enterprise application: C:\Program Files\TomEE\webapps\repro
> jan 23, 2019 4:37:17 PM sun.reflect.NativeMethodAccessorImpl invoke
> SEVERE: ContainerBase.addChild: start: 
> org.apache.catalina.LifecycleException: Failed to start component 
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/repro]]
>   at 
> org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
>   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
>   at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
>   at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
>   at 
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858)
>   at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>   at 
> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
>   at 
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
>   at 
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
>   at 
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
>   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
>   at 
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
>   at 
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
>   at 
> org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
>   at 
> 

[jira] [Commented] (TOMEE-2458) Loading Beans causes ClassNotFoundException when using custom context classloader

2019-01-23 Thread Donald Kwakkel (JIRA)


[ 
https://issues.apache.org/jira/browse/TOMEE-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16750449#comment-16750449
 ] 

Donald Kwakkel commented on TOMEE-2458:
---

When adding above line to MyClassLoader  [^myclassloader.jar.withtccl] :
{code}
package test;

import java.net.URL;
import java.net.URLClassLoader;
import org.apache.catalina.loader.WebappClassLoader;

public class MyClassLoader extends WebappClassLoader {

public MyClassLoader(ClassLoader parent) throws 
java.net.MalformedURLException {
super(parent);


addURL(java.nio.file.Paths.get(System.getProperty("catalina.home"), 
"myexception.jar").toUri().toURL());

org.apache.openejb.loader.SystemInstance.get().setComponent(org.apache.openejb.core.ParentClassLoaderFinder.class,
 fallback -> java.lang.Thread.currentThread().getContextClassLoader());
}

private static URL[] getURLss(){
try {
return new URL[]{new 
URL("file:///C:/Program%20Files/TomEE/myexception.jar")};
}
catch(Exception e) { throw new RuntimeException(e); }
}
}
{code}
and adding a bean to the myexception.jar which is loaded through this 
classloader  [^myexception.jar.withbean]:
{code}
package test;

import static javax.ejb.TransactionAttributeType.SUPPORTS;

import java.util.function.Supplier;

import javax.ejb.LocalBean;
import javax.ejb.Singleton;
import javax.ejb.TransactionAttribute;
import javax.xml.ws.Provider;

@Singleton(name = "PlatformContextBean")
@LocalBean
public class PlatformContextBean> implements Provider
{
@SuppressWarnings("unchecked")
@Override
@TransactionAttribute(SUPPORTS)
public T invoke(T request) {
Object result = request.get();
return (T) (Supplier) () -> result;
}
}
{code}
I get the following exception from Micro Profile:
{code}
at 
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at 
org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
at 
org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
at 
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:969)
at 
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429)
at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at 
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at 
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at 
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at 
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at 
org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at 
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at 
org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:241)
Caused by: org.apache.webbeans.exception.WebBeansException: 
java.lang.NullPointerException: bean parameter may not be null
at 
org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:371)
at 
org.apache.webbeans.event.NotificationManager.invokeObserverMethod(NotificationManager.java:818)
at 

[jira] [Commented] (TOMEE-2458) Loading Beans causes ClassNotFoundException when using custom context classloader

2019-01-23 Thread Donald Kwakkel (JIRA)


[ 
https://issues.apache.org/jira/browse/TOMEE-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16750313#comment-16750313
 ] 

Donald Kwakkel commented on TOMEE-2458:
---

When adding following in MyClassLoader it is working:
{code:java}
        SystemInstance.get().setComponent(ParentClassLoaderFinder.class, 
fallback -> Thread.currentThread().getContextClassLoader());
{code}
I would expect ParentClassLoaderFinder returns tccl by default.


> Loading Beans causes ClassNotFoundException when using custom context 
> classloader
> -
>
> Key: TOMEE-2458
> URL: https://issues.apache.org/jira/browse/TOMEE-2458
> Project: TomEE
>  Issue Type: Bug
>  Components: TomEE Core Server
>Affects Versions: 8.0.0-M1
>Reporter: Gerwin
>Priority: Major
> Attachments: myclassloader.jar, myexception.jar, repro.war
>
>
> h4. Steps to reproduce
> # Create a custom Exception and put it in {{CATALINA_HOME/myexception.jar}}
> {code:java}
> public class MyException extends Exception {
> }
> {code}
> # Create a custom ClassLoader and put it in 
> {{CATALINA_HOME/myclassloader.jar}}
> {code:java}
> public class MyClassLoader extends WebappClassLoader {
>   public MyClassLoader(ClassLoader parent)throws MalformedURLException {
>   super(parent);
>   addURL(Paths.get(System.getProperty("catalina.home"), 
> "myexception.jar").toUri().toURL());
>   }
> }
> {code}
> # Put the classloader on the classpath
> {code:none|title=CATALINA_HOME/conf/catalina.properties}
> common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/myclassloader.jar"
> {code}
> # Use the classloader in the context
> {code:xml|title=CATALINA_HOME/webapps/repro/META-INF/context.xml}
> 
> 
> 
> {code}
> # Create a bean with the {{MyException}} in the method signature
> {code:java|title=CATALINA_HOME/webapps/repro/WEB-INF/classes/MyBean.class}
> @Stateless(name = "MyBeanEJB")
> public class MyBean {
>   public String hello() throws MyException {
>   return "hello";
>   }
> }
> {code}
> # Use the bean
> {code:java|title=CATALINA_HOME/webapps/repro/index.jsp}
> <%@ page import="MyBean" %>
> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
> 
>   
>   <%
> MyBean myBean = new MyBean();
> out.println(myBean.hello());
>   %>
>   
> 
> {code}
> h4. Actual result
> {code:none|title=CATALINA_HOME/logs/catalina.0.log}
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/9.0.12 (8.0.0-SNAPSHOT)
> jan 23, 2019 4:37:17 PM sun.reflect.DelegatingMethodAccessorImpl invoke
> INFO: Deploying web application archive [C:\Program 
> Files\TomEE\webapps\repro.war]
> jan 23, 2019 4:37:17 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
> INFO: - localhost -> /repro
> jan 23, 2019 4:37:17 PM org.apache.openejb.config.ConfigurationFactory 
> configureApplication
> INFO: Configuring enterprise application: C:\Program Files\TomEE\webapps\repro
> jan 23, 2019 4:37:17 PM sun.reflect.NativeMethodAccessorImpl invoke
> SEVERE: ContainerBase.addChild: start: 
> org.apache.catalina.LifecycleException: Failed to start component 
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/repro]]
>   at 
> org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
>   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
>   at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
>   at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
>   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
>   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
>   at 
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858)
>   at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>   at 
> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
>   at 
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
>   at 
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
>   at 
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
>   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
>   at 
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
>   at 
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
>   at 
>