Java Code Examples for org.apache.catalina.Context#addLifecycleListener()
The following examples show how to use
org.apache.catalina.Context#addLifecycleListener() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Tomcat.java From Tomcat8-Source-Read with MIT License | 6 votes |
/** * @param host The host in which the context will be deployed * @param contextPath The context mapping to use, "" for root context. * @param contextName The context name * @param dir Base directory for the context, for static files. * Must exist, relative to the server home * @return the deployed context * @see #addContext(String, String) */ public Context addContext(Host host, String contextPath, String contextName, String dir) { silence(host, contextName); Context ctx = createContext(host, contextPath); ctx.setName(contextName); ctx.setPath(contextPath); ctx.setDocBase(dir); ctx.addLifecycleListener(new FixContextListener()); if (host == null) { getHost().addChild(ctx); } else { host.addChild(ctx); } return ctx; }
Example 2
Source File: HostConfig.java From Tomcat8-Source-Read with MIT License | 6 votes |
private void reload(DeployedApplication app, File fileToRemove, String newDocBase) { if(log.isInfoEnabled()) log.info(sm.getString("hostConfig.reload", app.name)); Context context = (Context) host.findChild(app.name); if (context.getState().isAvailable()) { if (fileToRemove != null && newDocBase != null) { context.addLifecycleListener( new ExpandedDirectoryRemovalListener(fileToRemove, newDocBase)); } // Reload catches and logs exceptions context.reload(); } else { // If the context was not started (for example an error // in web.xml) we'll still get to try to start if (fileToRemove != null && newDocBase != null) { ExpandWar.delete(fileToRemove); context.setDocBase(newDocBase); } try { context.start(); } catch (Exception e) { log.error(sm.getString("hostConfig.context.restart", app.name), e); } } }
Example 3
Source File: Tomcat.java From tomcatsrc with Apache License 2.0 | 6 votes |
/** * @see #addWebapp(String, String) * * @param name Ignored. The contextPath will be used * * @deprecated Use {@link #addWebapp(Host, String, String)} */ @Deprecated public Context addWebapp(Host host, String contextPath, String name, String docBase) { silence(host, contextPath); Context ctx = createContext(host, contextPath); ctx.setPath(contextPath); ctx.setDocBase(docBase); ctx.addLifecycleListener(new DefaultWebXmlListener()); ctx.setConfigFile(getWebappConfigFile(docBase, contextPath)); ContextConfig ctxCfg = new ContextConfig(); ctx.addLifecycleListener(ctxCfg); // prevent it from looking ( if it finds one - it'll have dup error ) ctxCfg.setDefaultWebXml(noDefaultWebXmlPath()); if (host == null) { getHost().addChild(ctx); } else { host.addChild(ctx); } return ctx; }
Example 4
Source File: Tomcat.java From tomcatsrc with Apache License 2.0 | 6 votes |
public Context addContext(Host host, String contextPath, String contextName, String dir) { silence(host, contextName); Context ctx = createContext(host, contextPath); ctx.setName(contextName); ctx.setPath(contextPath); ctx.setDocBase(dir); ctx.addLifecycleListener(new FixContextListener()); if (host == null) { getHost().addChild(ctx); } else { host.addChild(ctx); } return ctx; }
Example 5
Source File: Tomcat.java From Tomcat7.0.67 with Apache License 2.0 | 6 votes |
public Context addContext(Host host, String contextPath, String contextName, String dir) { silence(host, contextPath); Context ctx = createContext(host, contextPath); ctx.setName(contextName); ctx.setPath(contextPath); ctx.setDocBase(dir); ctx.addLifecycleListener(new FixContextListener()); if (host == null) { getHost().addChild(ctx); } else { host.addChild(ctx); } return ctx; }
Example 6
Source File: Tomcat.java From Tomcat7.0.67 with Apache License 2.0 | 6 votes |
/** * @see #addWebapp(String, String) * * @param name Ignored. The contextPath will be used * * @deprecated Use {@link #addWebapp(Host, String, String)} */ @Deprecated public Context addWebapp(Host host, String contextPath, String name, String docBase) { silence(host, contextPath); Context ctx = createContext(host, contextPath); ctx.setPath(contextPath); ctx.setDocBase(docBase); ctx.addLifecycleListener(new DefaultWebXmlListener()); ctx.setConfigFile(getWebappConfigFile(docBase, contextPath)); ContextConfig ctxCfg = new ContextConfig(); ctx.addLifecycleListener(ctxCfg); // prevent it from looking ( if it finds one - it'll have dup error ) ctxCfg.setDefaultWebXml(noDefaultWebXmlPath()); if (host == null) { getHost().addChild(ctx); } else { host.addChild(ctx); } return ctx; }
Example 7
Source File: Tomcat.java From Tomcat8-Source-Read with MIT License | 5 votes |
/** * @param host The host in which the context will be deployed * @param contextPath The context mapping to use, "" for root context. * @param docBase Base directory for the context, for static files. * Must exist, relative to the server home * @param config Custom context configurator helper * @return the deployed context * @see #addWebapp(String, String) */ public Context addWebapp(Host host, String contextPath, String docBase, LifecycleListener config) { silence(host, contextPath); Context ctx = createContext(host, contextPath); ctx.setPath(contextPath); ctx.setDocBase(docBase); ctx.addLifecycleListener(getDefaultWebXmlListener()); ctx.setConfigFile(getWebappConfigFile(docBase, contextPath)); ctx.addLifecycleListener(config); if (config instanceof ContextConfig) { // prevent it from looking ( if it finds one - it'll have dup error ) ((ContextConfig) config).setDefaultWebXml(noDefaultWebXmlPath()); } if (host == null) { getHost().addChild(ctx); } else { host.addChild(ctx); } return ctx; }
Example 8
Source File: UserConfig.java From tomcatsrc with Apache License 2.0 | 5 votes |
/** * Deploy a web application for the specified user if they have such an * application in the defined directory within their home directory. * * @param user Username owning the application to be deployed * @param home Home directory of this user */ private void deploy(String user, String home) { // Does this user have a web application to be deployed? String contextPath = "/~" + user; if (host.findChild(contextPath) != null) return; File app = new File(home, directoryName); if (!app.exists() || !app.isDirectory()) return; /* File dd = new File(app, "/WEB-INF/web.xml"); if (!dd.exists() || !dd.isFile() || !dd.canRead()) return; */ host.getLogger().info(sm.getString("userConfig.deploy", user)); // Deploy the web application for this user try { Class<?> clazz = Class.forName(contextClass); Context context = (Context) clazz.newInstance(); context.setPath(contextPath); context.setDocBase(app.toString()); clazz = Class.forName(configClass); LifecycleListener listener = (LifecycleListener) clazz.newInstance(); context.addLifecycleListener(listener); host.addChild(context); } catch (Exception e) { host.getLogger().error(sm.getString("userConfig.error", user), e); } }
Example 9
Source File: Main.java From executable-embeded-tomcat-sample with Apache License 2.0 | 5 votes |
public static void main(String[] args) throws ServletException, LifecycleException, IOException { String hostName = "localhost"; int port = 8080; String contextPath = ""; String tomcatBaseDir = TomcatUtil.createTempDir("tomcat", port).getAbsolutePath(); String contextDocBase = TomcatUtil.createTempDir("tomcat-docBase", port).getAbsolutePath(); Tomcat tomcat = new Tomcat(); tomcat.setBaseDir(tomcatBaseDir); tomcat.setPort(port); tomcat.setHostname(hostName); Host host = tomcat.getHost(); Context context = tomcat.addWebapp(host, contextPath, contextDocBase, new EmbededContextConfig()); context.setJarScanner(new EmbededStandardJarScanner()); ClassLoader classLoader = Main.class.getClassLoader(); context.setParentClassLoader(classLoader); // context load WEB-INF/web.xml from classpath context.addLifecycleListener(new WebXmlMountListener()); tomcat.start(); tomcat.getServer().await(); }
Example 10
Source File: TestStandardContext.java From Tomcat7.0.67 with Apache License 2.0 | 5 votes |
@Test public void testWebappListenerConfigureFail() throws Exception { // Test that if LifecycleListener on webapp fails during // configure_start event and if the cause of the failure is gone, // the context can be started without a need to redeploy it. // Set up a container Tomcat tomcat = getTomcatInstance(); tomcat.start(); // To not start Context automatically, as we have to configure it first ((ContainerBase) tomcat.getHost()).setStartChildren(false); FailingLifecycleListener listener = new FailingLifecycleListener(); File root = new File("test/webapp-3.0"); Context context = tomcat.addWebapp("", root.getAbsolutePath()); context.addLifecycleListener(listener); try { context.start(); fail(); } catch (LifecycleException ex) { // As expected } assertEquals(LifecycleState.FAILED, context.getState()); // The second attempt listener.setFail(false); context.start(); assertEquals(LifecycleState.STARTED, context.getState()); // Using a test from testBug49922() to check that the webapp is running ByteChunk result = getUrl("http://localhost:" + getPort() + "/bug49922/target"); assertEquals("Target", result.toString()); }
Example 11
Source File: UserConfig.java From Tomcat7.0.67 with Apache License 2.0 | 5 votes |
/** * Deploy a web application for the specified user if they have such an * application in the defined directory within their home directory. * * @param user Username owning the application to be deployed * @param home Home directory of this user */ private void deploy(String user, String home) { // Does this user have a web application to be deployed? String contextPath = "/~" + user; if (host.findChild(contextPath) != null) return; File app = new File(home, directoryName); if (!app.exists() || !app.isDirectory()) return; /* File dd = new File(app, "/WEB-INF/web.xml"); if (!dd.exists() || !dd.isFile() || !dd.canRead()) return; */ host.getLogger().info(sm.getString("userConfig.deploy", user)); // Deploy the web application for this user try { Class<?> clazz = Class.forName(contextClass); Context context = (Context) clazz.newInstance(); context.setPath(contextPath); context.setDocBase(app.toString()); clazz = Class.forName(configClass); LifecycleListener listener = (LifecycleListener) clazz.newInstance(); context.addLifecycleListener(listener); host.addChild(context); } catch (Exception e) { host.getLogger().error(sm.getString("userConfig.error", user), e); } }
Example 12
Source File: TestStandardContext.java From tomcatsrc with Apache License 2.0 | 5 votes |
@Test public void testWebappListenerConfigureFail() throws Exception { // Test that if LifecycleListener on webapp fails during // configure_start event and if the cause of the failure is gone, // the context can be started without a need to redeploy it. // Set up a container Tomcat tomcat = getTomcatInstance(); tomcat.start(); // To not start Context automatically, as we have to configure it first ((ContainerBase) tomcat.getHost()).setStartChildren(false); FailingLifecycleListener listener = new FailingLifecycleListener(); File root = new File("test/webapp-3.0"); Context context = tomcat.addWebapp("", root.getAbsolutePath()); context.addLifecycleListener(listener); try { context.start(); fail(); } catch (LifecycleException ex) { // As expected } assertEquals(LifecycleState.FAILED, context.getState()); // The second attempt listener.setFail(false); context.start(); assertEquals(LifecycleState.STARTED, context.getState()); // Using a test from testBug49922() to check that the webapp is running ByteChunk result = getUrl("http://localhost:" + getPort() + "/bug49922/target"); assertEquals("Target", result.toString()); }
Example 13
Source File: TestStandardContext.java From Tomcat8-Source-Read with MIT License | 5 votes |
@Test public void testWebappListenerConfigureFail() throws Exception { // Test that if LifecycleListener on webapp fails during // configure_start event and if the cause of the failure is gone, // the context can be started without a need to redeploy it. // Set up a container Tomcat tomcat = getTomcatInstance(); tomcat.start(); // To not start Context automatically, as we have to configure it first ((ContainerBase) tomcat.getHost()).setStartChildren(false); FailingLifecycleListener listener = new FailingLifecycleListener(); File root = new File("test/webapp"); Context context = tomcat.addWebapp("", root.getAbsolutePath()); context.addLifecycleListener(listener); try { context.start(); Assert.fail(); } catch (LifecycleException ex) { // As expected } Assert.assertEquals(LifecycleState.FAILED, context.getState()); // The second attempt listener.setFail(false); context.start(); Assert.assertEquals(LifecycleState.STARTED, context.getState()); // Using a test from testBug49922() to check that the webapp is running ByteChunk result = getUrl("http://localhost:" + getPort() + "/bug49922/target"); Assert.assertEquals("Target", result.toString()); }
Example 14
Source File: UserConfig.java From Tomcat8-Source-Read with MIT License | 5 votes |
/** * Deploy a web application for the specified user if they have such an * application in the defined directory within their home directory. * * @param user Username owning the application to be deployed * @param home Home directory of this user */ private void deploy(String user, String home) { // Does this user have a web application to be deployed? String contextPath = "/~" + user; if (host.findChild(contextPath) != null) return; File app = new File(home, directoryName); if (!app.exists() || !app.isDirectory()) return; host.getLogger().info(sm.getString("userConfig.deploy", user)); // Deploy the web application for this user try { Class<?> clazz = Class.forName(contextClass); Context context = (Context) clazz.getConstructor().newInstance(); context.setPath(contextPath); context.setDocBase(app.toString()); clazz = Class.forName(configClass); LifecycleListener listener = (LifecycleListener) clazz.getConstructor().newInstance(); context.addLifecycleListener(listener); host.addChild(context); } catch (Exception e) { host.getLogger().error(sm.getString("userConfig.error", user), e); } }
Example 15
Source File: ThreadLocalLeakPreventionListener.java From Tomcat7.0.67 with Apache License 2.0 | 4 votes |
private void registerContextListener(Context context) { context.addLifecycleListener(this); }
Example 16
Source File: TestApplicationContext.java From Tomcat7.0.67 with Apache License 2.0 | 4 votes |
@Test public void testBug57190() throws Exception { Tomcat tomcat = getTomcatInstance(); Context foo1 = new StandardContext(); foo1.setName("/foo##1"); foo1.setPath("/foo"); foo1.setWebappVersion("1"); foo1.setDocBase(System.getProperty("java.io.tmpdir")); foo1.addLifecycleListener(new FixContextListener()); foo1.addLifecycleListener(new SetIdListener("foo1")); tomcat.getHost().addChild(foo1); Context foo2 = new StandardContext(); foo2.setName("/foo##2"); foo2.setPath("/foo"); foo2.setWebappVersion("2"); foo2.setDocBase(System.getProperty("java.io.tmpdir")); foo2.addLifecycleListener(new FixContextListener()); foo2.addLifecycleListener(new SetIdListener("foo2")); tomcat.getHost().addChild(foo2); // No file system docBase required Context bar = tomcat.addContext("/bar", null); bar.addLifecycleListener(new SetIdListener("bar")); // No file system docBase required Context ctx = tomcat.addContext("", null); ctx.addLifecycleListener(new SetIdListener("ROOT")); ctx.setCrossContext(true); Tomcat.addServlet(ctx, "Bug57190Servlet", new Bug57190Servlet()); ctx.addServletMapping("/", "Bug57190Servlet"); tomcat.start(); ByteChunk res = getUrl("http://localhost:" + getPort() + "/"); String body = res.toString(); Assert.assertTrue(body, body.contains("01-bar")); Assert.assertTrue(body, body.contains("02-foo2")); Assert.assertTrue(body, body.contains("03-foo1")); Assert.assertTrue(body, body.contains("04-foo2")); Assert.assertTrue(body, body.contains("05-foo2")); Assert.assertTrue(body, body.contains("06-ROOT")); Assert.assertTrue(body, body.contains("07-ROOT")); Assert.assertTrue(body, body.contains("08-foo2")); Assert.assertTrue(body, body.contains("09-ROOT")); }
Example 17
Source File: TestApplicationContext.java From Tomcat8-Source-Read with MIT License | 4 votes |
@Test public void testBug57190() throws Exception { Tomcat tomcat = getTomcatInstance(); Context foo1 = new StandardContext(); foo1.setName("/foo##1"); foo1.setPath("/foo"); foo1.setWebappVersion("1"); foo1.addLifecycleListener(new FixContextListener()); foo1.addLifecycleListener(new SetIdListener("foo1")); tomcat.getHost().addChild(foo1); Context foo2 = new StandardContext(); foo2.setName("/foo##2"); foo2.setPath("/foo"); foo2.setWebappVersion("2"); foo2.addLifecycleListener(new FixContextListener()); foo2.addLifecycleListener(new SetIdListener("foo2")); tomcat.getHost().addChild(foo2); Context bar = tomcat.addContext("/bar", null); bar.addLifecycleListener(new SetIdListener("bar")); Context ctx = tomcat.addContext("", null); ctx.addLifecycleListener(new SetIdListener("ROOT")); ctx.setCrossContext(true); Tomcat.addServlet(ctx, "Bug57190Servlet", new Bug57190Servlet()); ctx.addServletMappingDecoded("/", "Bug57190Servlet"); tomcat.start(); ByteChunk res = getUrl("http://localhost:" + getPort() + "/"); String body = res.toString(); Assert.assertTrue(body, body.contains("01-bar")); Assert.assertTrue(body, body.contains("02-foo2")); Assert.assertTrue(body, body.contains("03-foo1")); Assert.assertTrue(body, body.contains("04-foo2")); Assert.assertTrue(body, body.contains("05-foo2")); Assert.assertTrue(body, body.contains("06-ROOT")); Assert.assertTrue(body, body.contains("07-ROOT")); Assert.assertTrue(body, body.contains("08-foo2")); Assert.assertTrue(body, body.contains("09-ROOT")); }
Example 18
Source File: ThreadLocalLeakPreventionListener.java From Tomcat8-Source-Read with MIT License | 4 votes |
private void registerContextListener(Context context) { context.addLifecycleListener(this); }
Example 19
Source File: ThreadLocalLeakPreventionListener.java From tomcatsrc with Apache License 2.0 | 4 votes |
private void registerContextListener(Context context) { context.addLifecycleListener(this); }
Example 20
Source File: TestApplicationContext.java From tomcatsrc with Apache License 2.0 | 4 votes |
@Test public void testBug57190() throws Exception { Tomcat tomcat = getTomcatInstance(); Context foo1 = new StandardContext(); foo1.setName("/foo##1"); foo1.setPath("/foo"); foo1.setWebappVersion("1"); foo1.setDocBase(System.getProperty("java.io.tmpdir")); foo1.addLifecycleListener(new FixContextListener()); foo1.addLifecycleListener(new SetIdListener("foo1")); tomcat.getHost().addChild(foo1); Context foo2 = new StandardContext(); foo2.setName("/foo##2"); foo2.setPath("/foo"); foo2.setWebappVersion("2"); foo2.setDocBase(System.getProperty("java.io.tmpdir")); foo2.addLifecycleListener(new FixContextListener()); foo2.addLifecycleListener(new SetIdListener("foo2")); tomcat.getHost().addChild(foo2); // No file system docBase required Context bar = tomcat.addContext("/bar", null); bar.addLifecycleListener(new SetIdListener("bar")); // No file system docBase required Context ctx = tomcat.addContext("", null); ctx.addLifecycleListener(new SetIdListener("ROOT")); ctx.setCrossContext(true); Tomcat.addServlet(ctx, "Bug57190Servlet", new Bug57190Servlet()); ctx.addServletMapping("/", "Bug57190Servlet"); tomcat.start(); ByteChunk res = getUrl("http://localhost:" + getPort() + "/"); String body = res.toString(); Assert.assertTrue(body, body.contains("01-bar")); Assert.assertTrue(body, body.contains("02-foo2")); Assert.assertTrue(body, body.contains("03-foo1")); Assert.assertTrue(body, body.contains("04-foo2")); Assert.assertTrue(body, body.contains("05-foo2")); Assert.assertTrue(body, body.contains("06-ROOT")); Assert.assertTrue(body, body.contains("07-ROOT")); Assert.assertTrue(body, body.contains("08-foo2")); Assert.assertTrue(body, body.contains("09-ROOT")); }