Well, thanks for the helpful advice thus far.. So, now that I've added a listener properly, I get this:
java.lang.UnsupportedOperationException: Section 4.4 of the Servlet 3.0 specification does not permit this method to be called from a ServletContextListener that was not defined in web.xml, a web-fragment.xml file nor annotated with @WebListener at org.apache.catalina.core.StandardContext$NoPluggabilityServletContext.addListener(StandardContext.java:7019) When I try adding my listener... @WebListener public class CdiServletContextListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { servletContextEvent.getServletContext().addListener(new CdiCtrlListener()); } I even tried rigging my class to have WebListener on it.. until I noticed the method just threw an exception... no questions asked. :-) On Tue, Jul 1, 2014 at 12:37 PM, Mark Thomas <ma...@apache.org> wrote: > On 01/07/2014 17:16, John D. Ament wrote: >> I looked for the source code, at least on github, there's no tag for >> 7.0.55 defined (see [1]) > > Given you are using 7.0.54, why would you look for a tag for 7.0.55? > >> How do I get access to a StandardContext? CAn I cast the Context object? > > Yes. It would have taken less time to try that than it did to type the > question. > > Mark > > >> >> [1]: https://github.com/apache/tomcat >> >> On Mon, Jun 30, 2014 at 4:51 AM, Mark Thomas <ma...@apache.org> wrote: >>> On 30/06/2014 01:27, John D. Ament wrote: >>>> I spoke a little too quickly, ServletContext is avilable from ctx >>>> (just didn't search hard enough). Adding the request listener here >>>> though results in: >>>> >>>> java.lang.NullPointerException >>>> >>>> at >>>> org.apache.catalina.core.ApplicationContext.createListener(ApplicationContext.java:1402) >>>> >>>> at >>>> org.apache.catalina.core.ApplicationContext.addListener(ApplicationContext.java:1307) >>>> >>>> at >>>> org.apache.catalina.core.ApplicationContextFacade.addListener(ApplicationContextFacade.java:636) >>> >>> A quick look in the source code will tell you why you are getting an NPE >>> here. >>> >>> You can't add a ServletRequestListener directly. There are a couple of >>> ways to do this. Probably the simplest is to create a >>> ServletContextListener, add that directly to Tomcat's StandardContext >>> with addApplicationLifecycleListener() and then from that >>> ServletContextListener add and request and/or session listeners from the >>> contextInitialized() event. >>> >>> You could also do this with a ServletContainerInitializer. >>> >>> Mark >>> >>> >>>> >>>> On Sun, Jun 29, 2014 at 8:21 PM, John D. Ament <john.d.am...@gmail.com> >>>> wrote: >>>>> Hi, >>>>> >>>>> I'm on Tomcat 7.0.54, though I would hope your APIs aren't volatile >>>>> enough that your internals should matter.. >>>>> >>>>> I tried this: >>>>> >>>>> Wrapper wrapper = >>>>> Tomcat.addServlet(ctx,"Greeter",GreeterServlet.class.getName()); >>>>> wrapper.addMapping("/*"); >>>>> wrapper.getServlet().getServletConfig().getServletContext().addListener(MyListener.class); >>>>> >>>>> This results in a NPE. This makes me think I don't have access to the >>>>> context yet. I would actually think it's somewhere in this chain: >>>>> >>>>> tomcat = new Tomcat(); >>>>> tomcat.setPort(8080); >>>>> File base = new File("target/webapp-runner"); >>>>> if(!base.exists()) { >>>>> base.mkdirs(); >>>>> } >>>>> Context ctx = tomcat.addContext("/",base.getAbsolutePath()); >>>>> >>>>> however, it doesn't look like Context here is a ServletContext. >>>>> >>>>> >>>>> On Sun, Jun 29, 2014 at 6:30 PM, Caldarale, Charles R >>>>> <chuck.caldar...@unisys.com> wrote: >>>>>>> From: John D. Ament [mailto:john.d.am...@gmail.com] >>>>>>> Subject: Embedded Tomcat question >>>>>> >>>>>>> Playing around a bit with embedded tomcat. It looks like there are >>>>>>> APIs to add all of the tomcat specific listeners, however how would I >>>>>>> add a ServletRequestListener? >>>>>> >>>>>> Look in the servlet spec for the version of Tomcat you're using (which >>>>>> you didn't mention), and the JavaDoc for ServletContext (e.g., >>>>>> addListener). >>>>>> >>>>>> - Chuck >>>>>> >>>>>> >>>>>> THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY >>>>>> MATERIAL and is thus for use only by the intended recipient. If you >>>>>> received this in error, please contact the sender and delete the e-mail >>>>>> and its attachments from all computers. >>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >>>>>> For additional commands, e-mail: users-h...@tomcat.apache.org >>>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >>>> For additional commands, e-mail: users-h...@tomcat.apache.org >>>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >>> For additional commands, e-mail: users-h...@tomcat.apache.org >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: users-h...@tomcat.apache.org >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org