users@grizzly.java.net

hot class reloading

From: Andrew Munn <andrew_at_nmedia.net>
Date: Tue, 18 Mar 2014 13:26:44 -0700 (PDT)

What is the best way to reload some part of the web facing portion of an
app running in production without taking the Grizzly/Jersey server down?

I'm doing this:

Set<Class<?>> classes = new HashSet<>();
classes.add(myapp.MyClass.class);
classes.add(myapp.MyOtherClass.class);
ResourceConfig rc = new ResourceConfig(classes);
        
HttpServer httpServer =
GrizzlyHttpServerFactory.createHttpServer(BASE_URI, rc);
System.out.println(String.format("Jersey app started with WADL available
at " + "%sapplication.wadl", BASE_URI, BASE_URI));

and tried to reload like this after replacing the running jar:

GrizzlyHttpContainer c = (GrizzlyHttpContainer)httpServer.getHttpHandler();
c.reload();

but no luck, just a ClassCastException. Will that method do what I want
and what's the preferred way to get a reference to it?

Thanks!