Proper ClassLoader with ClassShutter

Tony Zakula tonyzakula at gmail.com
Mon Mar 21 16:23:46 UTC 2016


Thanks Sundar.  I am not having any issues currently, all seems to be
working great.  We just added the ClassFilter so I had to change the
constructor from:

engine = new NashornScriptEngineFactory().getScriptEngine(new
String[]{"-ccs=1000", "-ot=true", "-pcc=true"});

TO

engine = new NashornScriptEngineFactory().getScriptEngine(new
String[]{"-ccs=1000", "-ot=true", "-pcc=true"},
ClassLoader.getSystemClassLoader(), nashornClassFilter);

I saw notes on the ClassFilter in the docs, but not an example with the
ClassLoader, so I just wanted to be sure I was not going to cause myself
any issues.

Tony

On Mon, Mar 21, 2016 at 10:12 AM, Sundararajan Athijegannathan <
sundararajan.athijegannathan at oracle.com> wrote:

> By default Nashorn uses the thread context loader - which is usually
> ClassLoader.getSystemClassLoader() [ which is the launcher loader ].
>
> So,  your API call looks fine. What is the specific issue, if any,
> you've in mind?
>
> Thanks
> -Sundar
>
> On 3/20/2016 10:45 PM, Tony Zakula wrote:
> > Hey All,
> >
> > I am using a ClassShutter to limit the Java classes scripts can use, but
> I
> > am wondering how to use the proper ClassLoader in the constructor.  The
> > following seems to work fine, but is there a better way?  Our
> > initialization code looks like the following:
> >
> >         // There is a bug on startup sometimes with persistent code cache
> > where you get a null pointer
> >         // https://bugs.openjdk.java.net/browse/JDK-8134304 - We can
> > swallow it because things run normally
> >         ScriptEngine engine = null;
> >
> >         // Custom ClassFilter
> >         NashornClassFilter nashornClassFilter = new NashornClassFilter();
> >
> >         try {
> >             engine = new NashornScriptEngineFactory().getScriptEngine(new
> > String[]{"-ccs=1000", "-ot=true", "-pcc=true"},
> > ClassLoader.getSystemClassLoader(), nashornClassFilter);
> >         }
> >         catch (Exception e) {}
> >
> > Thanks,
> >
> > Tony
>
>


More information about the nashorn-dev mailing list