Skip to content

NPE when using war deployment #141

Open

Description

@Tosken1337

Hi, i am using the joinfaces adminfaces-starter dependency for my project.
When running as spring boot jar with embedded tomcat everything works fine.

When using war deployment i am facing a NullPointerException in the AdminFilter because the AdminConfig could not be injected.

Any idea?

Activity

  1. rmpestano commented on Nov 28, 2018

    @rmpestano
    Contributor

    Hi, where are you using the war deployment? tomcat?

    I think you should open an issue on JoinFaces project and provide stacktrace, steps to reproduce and a sample project so they will be able to help you.

  2. Tosken1337 commented on Nov 28, 2018

    @Tosken1337
    Author

    Yes Tomcat.
    The AdminFilter will be initialized by the servlet container due to the @webfilter annotation and uses inject to wire some beans. But these beans cannot be wired because the AdminFilter is not instantiated by Spring i think.

  3. rmpestano commented on Nov 28, 2018

    @rmpestano
    Contributor

    So, it is JoinFaces that does this integration with Spring, CDI and JSF. Not something we can fix in this project, I think.

  4. Tosken1337 commented on Nov 29, 2018

    @Tosken1337
    Author

    I created an issue
    joinfaces/joinfaces#588

  5. persapiens commented on Nov 29, 2018

    @persapiens
    Contributor

    Is it possible to configure AdminFilter and LogoutServlet at web-fragment.xml instead of using @webfilter and @WebServlet annotations?

  6. rmpestano commented on Nov 29, 2018

    @rmpestano
    Contributor

    Sure, we can do that if it's causing problems in SpringBoot integration. Can you create a separated issue?

  7. persapiens commented on Nov 29, 2018

    @persapiens
    Contributor

    Sure, we can do that if it's causing problems in SpringBoot integration. Can you create a separated issue?

    Anyway, it will not solve the problem. Tomcat will try to create AdminFilter and LogoutServlet when Tomcat is not embedded.
    If you run Tomcat inside full java ee server, it will work because java ee server has DI capability. If you run embedded with spring boot, it work because spring has DI capability too. Single Tomcat does not have DI capability.

  8. rmpestano commented on Nov 29, 2018

    @rmpestano
    Contributor

    But in admin-starter-tomcat we add DI capability by adding CDI implementation and configuring BeanManager in META-INF/context.xml and weld in web.xml, that doesn't help in this case also?

  9. persapiens commented on Nov 29, 2018

    @persapiens
    Contributor

    But in admin-starter-tomcat we add DI capability by adding CDI implementation and configuring BeanManager in META-INF/context.xml and weld in web.xml, that doesn't help in this case also?

    It works ok because Weld is full CDI implementation, but Spring Boot is not full CDI implementation.
    Running Admin Template with Spring Boot and embedded Tomcat works ok too because JoinFaces autoconfiguration.

    However, usecase described in this issue is about running Admin Template with Spring Boot inside Tomcat. Here, Tomcat tries to create AdminFilter because @webfilter annotation and Spring Boot can not help. Spring Boot can create another instance of AdminFilter, but it will be the second one.

    If we remove @webfilter annotation to avoid this situation, JoinFaces/Spring Boot can handle it, but it will break Weld usecase probably.

  10. rmpestano commented on Nov 29, 2018

    @rmpestano
    Contributor

    I see, It is more a springboot limitation than an AdminFaces issue. Can I close this issue or we can try something else?

  11. persapiens commented on Nov 29, 2018

    @persapiens
    Contributor

    I see, It is more a springboot limitation than an AdminFaces issue. Can I close this issue or we can try something else?

    Admin Template uses CDI injection in Servlet and Filter. Spring handle this only if it creates them. Unfortunately, this issue is not the case.

  12. DhannyaP commented on Jan 9, 2019

    @DhannyaP

    HI, I am facing the same issue. Getting NPE on AdminFilter when running on Tomcat server. Could anyone help?

    java.lang.NullPointerException: null
    at com.github.adminfaces.template.session.AdminFilter.init(AdminFilter.java:53) ~[admin-template-1.0.0-RC20.jar:na]
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:270) ~[catalina.jar:9.0.13]
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:251) ~[catalina.jar:9.0.13]
    at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:102) ~[catalina.jar:9.0.13]
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4491) [catalina.jar:9.0.13]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5135) [catalina.jar:9.0.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.13]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432) [catalina.jar:9.0.13]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422) [catalina.jar:9.0.13]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_191]
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.13]
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [na:1.8.0_191]
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944) [catalina.jar:9.0.13]
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831) [catalina.jar:9.0.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.13]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432) [catalina.jar:9.0.13]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422) [catalina.jar:9.0.13]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_191]
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.13]
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [na:1.8.0_191]
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944) [catalina.jar:9.0.13]
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261) [catalina.jar:9.0.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.13]
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422) [catalina.jar:9.0.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.13]
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801) [catalina.jar:9.0.13]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.13]
    at org.apache.catalina.startup.Catalina.start(Catalina.java:695) [catalina.jar:9.0.13]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350) [bootstrap.jar:9.0.13]
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492) [bootstrap.jar:9.0.13]

  13. rmpestano commented on Jan 9, 2019

    @rmpestano
    Contributor

    Hi, have you tried with admin-starter-tomcat?

  14. DhannyaP commented on Jan 9, 2019

    @DhannyaP

    admin-starter-tomcat works, but it is not using spring boot.

    My application is spring boot application with joinfaces and adminfaces.

  15. DhannyaP commented on Jan 9, 2019

    @DhannyaP

    thanks it works fine when i give the bean manager in context.xml

  16. rmpestano commented on Jan 9, 2019

    @rmpestano
    Contributor

    That's is quite interesting! have you noticed any other side effect?

    @persapiens anything else we should take into account? perhaps we should include context.xml in admin-starter-springboot as well, WDYT?

  17. danjimgar commented on Feb 26, 2019

    @danjimgar

    thanks it works fine when i give the bean manager in context.xml

    Hello,

    Can you explain how did you do?

    Thanks.

  18. rmpestano commented on Feb 26, 2019

    @rmpestano
    Contributor

    I think @DhannyaP did something like this: #141 (comment)

  19. danjimgar commented on Feb 26, 2019

    @danjimgar

    I think @DhannyaP did something like this: #141 (comment)

    Added the three things u told me, but giving the following error:

    Caused by: java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
    at org.springframework.web.jsf.FacesContextUtils.getRequiredWebApplicationContext(FacesContextUtils.java:83)
    at org.springframework.web.jsf.el.SpringBeanFacesELResolver.getWebApplicationContext(SpringBeanFacesELResolver.java:151)
    at org.springframework.web.jsf.el.SpringBeanFacesELResolver.getValue(SpringBeanFacesELResolver.java:78)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:180)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:208)
    at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:94)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:137)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
    at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:115)
    at com.sun.faces.facelets.tag.TagAttributeImpl.getObject(TagAttributeImpl.java:358)
    at com.sun.faces.facelets.tag.TagAttributeImpl.getValue(TagAttributeImpl.java:324)
    at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:167)
    at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:94)
    at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:88)
    at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:162)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:381)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:102)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
    ... 26 more

  20. rmpestano commented on Feb 26, 2019

    @rmpestano
    Contributor

    Can you share your project?

  21. danjimgar commented on Feb 27, 2019

    @danjimgar

    Can you share your project?

    You can check it here.

    Thanks.

  22. danjimgar commented on Mar 5, 2019

    @danjimgar

    Hi @rmpestano did you check it?

    Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions