use of org.apache.openejb.server.cxf.rs.CxfRSService in project tomee by apache.
the class ReloadingLoaderTest method tomcatClassLoaderParentShouldntBeNulAfterAStopStartOtherwiseReloadIsBroken.
@Test
public void tomcatClassLoaderParentShouldntBeNulAfterAStopStartOtherwiseReloadIsBroken() throws Exception {
final CxfRSService server = new CxfRSService();
try {
server.init(new Properties());
server.start();
server.afterApplicationCreated(new AssemblerAfterApplicationCreated(info, context, Collections.<BeanContext>emptyList()));
{
final ClassLoader beforeLoader = SystemInstance.get().getComponent(ContainerSystem.class).getWebContext("test").getClassLoader();
assertSame(loader, beforeLoader);
assertNotNull(beforeLoader);
assertNotNull(Reflections.get(beforeLoader, "parent"));
}
loader.internalStop();
server.undeploy(new AssemblerBeforeApplicationDestroyed(info, context));
{
final URLClassLoader afterLoader = URLClassLoader.class.cast(SystemInstance.get().getComponent(ContainerSystem.class).getWebContext("test").getClassLoader());
assertSame(loader, afterLoader);
assertNotNull(afterLoader);
assertEquals(0, afterLoader.getURLs().length);
assertEquals(LifecycleState.STOPPED, loader.getState());
}
final StandardRoot resources = new StandardRoot();
loader.setResources(resources);
resources.setContext(new StandardContext() {
@Override
public String getDocBase() {
final File file = new File("target/foo");
file.mkdirs();
return file.getAbsolutePath();
}
@Override
public String getMBeanKeyProperties() {
return "foo";
}
{
}
});
resources.start();
loader.start();
// TomcatWebAppBuilder ill catch start event from StandardContext and force a classloader
// Reflections.set(loader, "parent", ParentClassLoaderFinder.Helper.get());
parentInstance.set(ParentClassLoaderFinder.Helper.get());
server.afterApplicationCreated(new AssemblerAfterApplicationCreated(info, context, Collections.<BeanContext>emptyList()));
{
final ClassLoader afterLoader = SystemInstance.get().getComponent(ContainerSystem.class).getWebContext("test").getClassLoader();
assertSame(loader, afterLoader);
assertNotNull(afterLoader);
assertNotNull(Reflections.get(afterLoader, "parent"));
}
server.undeploy(new AssemblerBeforeApplicationDestroyed(info, context));
} finally {
server.stop();
}
}
Aggregations