Hi Romain, We tried the 1.7.2 snapshot. When setting openejb.cxf.CxfContainerClassLoader = false, it does fix the issue! Thank you When will 1.7.2 be GA? Couldn't find the info on the site.
Alexandre ---------------------------------------- > Date: Thu, 27 Nov 2014 12:50:48 +0100 > Subject: RE: TomEE+ 1.7.1 Classloader gets replaced by > CxfContainerClassLoader which causes ClassNotFoundException in Rhino/Nashorn > ScriptEngine > From: [email protected] > To: [email protected] > > It is on our heads so you can test 1.7.2 snapshot > > Le 27 nov. 2014 12:46, "Alex A" <[email protected]> a écrit : >> >> Hello Romain, >> >> Unfortunately openejb.cxf.CxfContainerClassLoader=false does not change > anything (still the same class loader, still the same issue) >> >> 1) and 2) do work but are not affordable in our app. >> Threads are required for a/ lengthy scripts, b/ controlling the executor > pool size (number of scripts run in parallel), c/ having less DB privileges > than the main WS thread. >> EJB is just not our current design. >> >> Please tell me when the flag is added so that the 1.5.2 behavior is back. > In the meantime we stick to 1.5.2. >> >> Many thanks >> >> >> >> >>> From: [email protected] >>> To: [email protected] >>> Subject: RE: TomEE+ 1.7.1 Classloader gets replaced by > CxfContainerClassLoader which causes ClassNotFoundException in > Rhino/Nashorn ScriptEngine >>> Date: Wed, 26 Nov 2014 23:24:28 +0100 >>> >>> Thank you RomainWe will consider 1) and 2) however we need the > additional thread mainly to prevent WS timeout for lengthy scripts but out > of curiosity we will try to reproduce on the sample without the threadBut > first time in the morning we will try > openejb.cxf.CxfContainerClassLoader=false which sounds great >>> Will let you knowRegards >>> >>>> From: [email protected] >>>> Date: Wed, 26 Nov 2014 19:48:18 +0100 >>>> Subject: Re: TomEE+ 1.7.1 Classloader gets replaced by > CxfContainerClassLoader which causes ClassNotFoundException in > Rhino/Nashorn ScriptEngine >>>> To: [email protected] >>>> >>>> PS: did you try openejb.cxf.CxfContainerClassLoader=false in >>>> conf/system.properties? >>>> >>>> >>>> Romain Manni-Bucau >>>> @rmannibucau >>>> http://www.tomitribe.com >>>> http://rmannibucau.wordpress.com >>>> https://github.com/rmannibucau >>>> >>>> >>>> 2014-11-26 17:45 GMT+01:00 Romain Manni-Bucau : >>>>> we'll add a flag to switch it off but there is no issue on our side. >>>>> You can solve it: >>>>> 1) not using a new thread >>>>> 2) using an EJB to execute the js >>>>> >>>>> >>>>> Romain Manni-Bucau >>>>> @rmannibucau >>>>> http://www.tomitribe.com >>>>> http://rmannibucau.wordpress.com >>>>> https://github.com/rmannibucau >>>>> >>>>> >>>>> 2014-11-26 17:34 GMT+01:00 Alex A : >>>>>> So? it worked in 1.5.2 and does not work anymore in 1.7.1.Even > before starting the new thread the classloader is already this new > CxfContainerClassLoader (see server trace) which seems unable to load > CloudUtils from same webapp. >>>>>> thank you >>>>>> >>>>>> >>>>>> >>>>>>> From: [email protected] >>>>>>> Date: Wed, 26 Nov 2014 14:23:00 +0100 >>>>>>> Subject: Re: TomEE+ 1.7.1 Classloader gets replaced by > CxfContainerClassLoader which causes ClassNotFoundException in > Rhino/Nashorn ScriptEngine >>>>>>> To: [email protected] >>>>>>> >>>>>>> Hi >>>>>>> >>>>>>> com.mycompany.bl.MyInstance#executeJavaScript starts a new thread > and >>>>>>> then look the classloader which is bound to the request thread >>>>>>> >>>>>>> >>>>>>> Romain Manni-Bucau >>>>>>> @rmannibucau >>>>>>> http://www.tomitribe.com >>>>>>> http://rmannibucau.wordpress.com >>>>>>> https://github.com/rmannibucau >>>>>>> >>>>>>> >>>>>>> 2014-11-26 13:27 GMT+01:00 Alex A : >>>>>>>> Bonjour Romain, >>>>>>>> >>>>>>>> Many thanks for your reply. >>>>>>>> We have been able to shrink down our app into the attached > sample.zip and it >>>>>>>> does reproduce the issue! >>>>>>>> The sample comprises a JAX-WS client and a webapp implementing the > WS and >>>>>>>> evaluating the input script. >>>>>>>> >>>>>>>> >>>>>>>> TomEE+ 1.7.1: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- >>>>>>>> >>>>>>>> *-*-*- ExecuteJavaScript Issue *-*-* >>>>>>>> >>>>>>>> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- >>>>>>>> >>>>>>>> Connecting to WebServices at >>>>>>>> http://localhost:8080/WebServiceProject/MyWebServiceWS >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *- Main menu -* >>>>>>>> >>>>>>>> 1. ExecuteJavaScript >>>>>>>> >>>>>>>> 2. Exit >>>>>>>> >>>>>>>> Your choice [Exit]? 1 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> ExecuteJavaScript: >>>>>>>> >>>>>>>>> Entering console mode. Type in your script, then "run" to finish > typing. >>>>>>>> >>>>>>>> com.mycompany.cloudutils.CloudUtils.nowStr() >>>>>>>> >>>>>>>> run >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> ScriptException around line [ > com.mycompany.cloudutils.CloudUtils.nowStr() ] >>>>>>>> >>>>>>>>>>> sun.org.mozilla.javascript.internal.EcmaError: TypeError: > Cannot call >>>>>>>>>>> property nowStr in object [JavaPackage > com.mycompany.cloudutils.CloudUtils]. >>>>>>>>>>> It is not a function, it is "object". (#1) in>>>>>>>> source> > at line number 1 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> SERVER TRACE (showing the classloader is indeed > CxfContainerClassLoader as >>>>>>>> soon as we enter the @WebMethod): >>>>>>>> >>>>>>>> CLASSLOADER_FROMSTART: >>>>>>>> > org.apache.openejb.server.cxf.transport.util.CxfContainerClassLoader@7bb42c30 >>>>>>>> // when WS is called >>>>>>>> >>>>>>>> CLASSLOADER_EXECUTION: >>>>>>>> > org.apache.openejb.server.cxf.transport.util.CxfContainerClassLoader@7bb42c30 >>>>>>>> // at javascript execution >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> TomEE+ 1.5.2: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- >>>>>>>> >>>>>>>> *-*-*- ExecuteJavaScript Issue *-*-* >>>>>>>> >>>>>>>> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- >>>>>>>> >>>>>>>> Connecting to WebServices at >>>>>>>> http://localhost:8080/WebServiceProject/MyWebServiceWS >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *- Main menu -* >>>>>>>> >>>>>>>> 1. ExecuteJavaScript >>>>>>>> >>>>>>>> 2. Exit >>>>>>>> >>>>>>>> Your choice [Exit]? 1 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> ExecuteJavaScript: >>>>>>>> >>>>>>>>> Entering console mode. Type in your script, then "run" to finish > typing. >>>>>>>> >>>>>>>> com.mycompany.cloudutils.CloudUtils.nowStr() >>>>>>>> >>>>>>>> run >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> 2014/11/26 12:24:48.332 +0100 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> SERVER TRACE (showing we keep the StandardClassLoader all along): >>>>>>>> >>>>>>>> CLASSLOADER_FROMSTART: LazyStopWebappClassLoader >>>>>>>> >>>>>>>> context: /WebServiceProject >>>>>>>> >>>>>>>> delegate: false >>>>>>>> >>>>>>>> repositories: >>>>>>>> >>>>>>>> /WEB-INF/classes/ >>>>>>>> >>>>>>>> ----------> Parent Classloader: >>>>>>>> >>>>>>>> org.apache.catalina.loader.StandardClassLoader@771c7eb2 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> CLASSLOADER_EXECUTION: LazyStopWebappClassLoader >>>>>>>> >>>>>>>> context: /WebServiceProject >>>>>>>> >>>>>>>> delegate: false >>>>>>>> >>>>>>>> repositories: >>>>>>>> >>>>>>>> /WEB-INF/classes/ >>>>>>>> >>>>>>>> ----------> Parent Classloader: >>>>>>>> >>>>>>>> org.apache.catalina.loader.StandardClassLoader@771c7eb2 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Thank you for your precious help >>>>>>>> >>>>>>>> Alexandre >>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>> >>
