1

I'm new to JSF and was asked to migrate an old MyFaces 2.0 webapp (app1) from WebLogic Server 12.1.3 to Tomcat (I chose Tomcat 9 and OpenWebBeans 2.0.27). This was achieved only after being directed to upgrade MyFaces Core to version 2.3.10 (but with no major change in the webapp itself) following the assistance and clear instructions from user @tandraschko .

After an apparent error-free start-up of the webapp, launching the application on the browser (http://localhost:8080/app1/) resulted in a blank page (after correctly redirecting to http://localhost:8080/app1/xhtml/appsSuite.xhtml) with the logs revealing errors/exceptions.

After combing through SO, I wasn't able to find any post which could provide clues to address my issue. Since there is neither an NPE nor stack traces in the logs, I'm stuck.

I'd be grateful for any assistance or direction to help debug this unexpected Faces exception.

Configuration

  • MyFaces 2.0 (but with MyFaces Core 2.3.10)
  • CODI 1.0.5
  • PrimeFaces 4.0
  • OpenWebBeans 2.0.27 (CDI 2.0 but beans_1_0 in beans.xml)
  • Tomcat 9
  • Java 8

Exception

Side Question: Is it OK to ignore the WARNING below?

...
04-Jul-2022 17:26:01.689 INFO [main] org.apache.webbeans.lifecycle.AbstractLifeCycle.bootstrapApplication OpenWebBeans Container has started, it took [21749] ms.
...
04-Jul-2022 17:26:09.240 INFO [main] org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces ServletContext initialized.
...
04-Jul-2022 17:26:09.576 INFO [main] org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized MyFaces Core has started, it took [7885] ms.
04-Jul-2022 17:26:09.707 INFO [main] com.sun.jersey.api.core.PackagesResourceConfig.init Scanning for root resource and provider classes in the packages:
  com.company.app1.enterprise.service.health
04-Jul-2022 17:26:09.811 INFO [main] com.sun.jersey.api.core.ScanningResourceConfig.logClasses Root resource classes found:
  class com.company.app1.enterprise.service.health.HeartbeatService
04-Jul-2022 17:26:09.812 INFO [main] com.sun.jersey.api.core.ScanningResourceConfig.init No provider classes found.
04-Jul-2022 17:26:10.060 INFO [main] com.sun.jersey.server.impl.cdi.CDIComponentProviderFactoryInitializer.initialize CDI support is enabled
04-Jul-2022 17:26:10.090 INFO [main] com.sun.jersey.server.impl.application.WebApplicationImpl._initiate Initiating Jersey application, version 'Jersey: 1.18 11/22/2013 01:21 AM'
04-Jul-2022 17:26:12.281 WARNING [main] com.sun.jersey.spi.inject.Errors.processErrorMessages The following warnings have been detected with resource and/or provider classes:
  WARNING: A HTTP GET method, public java.lang.String com.company.app1.enterprise.service.health.HeartbeatService.pulse(java.lang.String), should not consume any entity.
04-Jul-2022 17:26:12.403 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [C:\apache-tomcat-9.0.63\webapps\app1.war] has finished in [59,791] ms
...
04-Jul-2022 17:26:14.760 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [62776] milliseconds
04-Jul-2022 17:29:44.055 INFO [http-nio-8080-exec-1] org.apache.myfaces.extensions.cdi.jpa.impl.JpaModuleStartupObserver.logJpaModuleConfiguration [Started] MyFaces CODI JPA-Module v1.0.5

04-Jul-2022 17:29:44.080 INFO [http-nio-8080-exec-1] org.apache.myfaces.extensions.cdi.core.impl.CoreStartupObserver.logCoreConfiguration [Started] MyFaces CODI (Extensions CDI) Core v1.0.5
Used CDI implementation: OpenWebBeans v2.0.27

project-stage: Production
project-stage class: org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage$Production

application-parameters:
   name:        org.apache.myfaces.config.annotation.LifecycleProvider
   value:       org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider

   name:        javax.faces.PROJECT_STAGE
   value:       Production

   name:        primefaces.THEME
   value:       casablanca

   name:        javax.faces.STATE_SAVING_METHOD
   value:       client

   name:        javax.servlet.jsp.jstl.fmt.localizationContext
   value:       resources.application

   name:        javax.faces.FACELETS_SKIP_COMMENTS
   value:       true

   name:        javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE
   value:       true

config implementation: org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig$$OwbNormalScopeProxy0
config implementation: org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig
   method:      isAdvancedQualifierRequiredForDependencyInjection
   value:       true

   method:      isConfigurationLoggingEnabled
   value:       true

   method:      isInvalidBeanCreationEventEnabled
   value:       false


04-Jul-2022 17:29:44.086 INFO [http-nio-8080-exec-1] org.apache.myfaces.extensions.cdi.scripting.impl.ScriptingModuleStartupObserver.logScriptingModuleConfiguration [Started] MyFaces CODI Scripting-Module v1.0.5

04-Jul-2022 17:29:44.117 INFO [http-nio-8080-exec-1] org.apache.myfaces.extensions.cdi.jsf2.impl.Jsf2ModuleStartupObserver.logJsfModuleConfiguration [Started] MyFaces CODI JSF-Module v1.0.5 for JSF 2.0
Used JSF implementation: MyFaces Core v2.3.10

config implementation: org.apache.myfaces.extensions.cdi.jsf.api.config.JsfModuleConfig$$OwbNormalScopeProxy0
config implementation: org.apache.myfaces.extensions.cdi.jsf.api.config.JsfModuleConfig
   method:      isInitialRedirectEnabled
   value:       true

   method:      isAlwaysKeepMessages
   value:       true

   method:      isUseViewConfigsAsNavigationCasesEnabled
   value:       true

   method:      isInvalidValueAwareMessageInterpolatorEnabled
   value:       true

config implementation: org.apache.myfaces.extensions.cdi.core.api.scope.conversation.config.WindowContextConfig$$OwbNormalScopeProxy0
config implementation: org.apache.myfaces.extensions.cdi.core.api.scope.conversation.config.WindowContextConfig
   method:      isAddWindowIdToActionUrlsEnabled
   value:       false

   method:      getWindowContextTimeoutInMinutes
   value:       60

   method:      isCloseWindowContextEventEnabled
   value:       false

   method:      isUrlParameterSupported
   value:       true

   method:      isUnknownWindowIdsAllowed
   value:       false

   method:      getMaxWindowContextCount
   value:       64

   method:      isCloseEmptyWindowContextsEnabled
   value:       false

   method:      isCreateWindowContextEventEnabled
   value:       false

   method:      isEagerWindowContextDetectionEnabled
   value:       true

config implementation: org.apache.myfaces.extensions.cdi.core.api.scope.conversation.config.ConversationConfig$$OwbNormalScopeProxy0
config implementation: org.apache.myfaces.extensions.cdi.core.api.scope.conversation.config.ConversationConfig
   method:      getConversationTimeoutInMinutes
   value:       30

   method:      isStartConversationEventEnabled
   value:       false

   method:      isCloseConversationEventEnabled
   value:       false

   method:      isConversationRequiredEnabled
   value:       true

   method:      isRestartConversationEventEnabled
   value:       false

   method:      isAccessBeanEventEnabled
   value:       false

   method:      isUnscopeBeanEventEnabled
   value:       false

   method:      isScopeBeanEventEnabled
   value:       false

MessageContextConfig class: org.apache.myfaces.extensions.cdi.message.impl.DefaultMessageContextConfig
   MessageInterpolator class: class org.apache.myfaces.extensions.cdi.jsf.impl.message.FacesMessageInterpolator
   MessageResolver class: class org.apache.myfaces.extensions.cdi.jsf.impl.message.JsfAwareApplicationMessagesMessageResolver
   MessageHandler class: class org.apache.myfaces.extensions.cdi.jsf.impl.message.JsfAwareMessageHandler
   LocaleResolver class: class org.apache.myfaces.extensions.cdi.jsf.impl.message.JsfAwareLocaleResolver
   FormatterFactory class: class org.apache.myfaces.extensions.cdi.message.impl.DefaultFormatterFactory

04-Jul-2022 17:29:44.121 INFO [http-nio-8080-exec-1] org.apache.myfaces.extensions.cdi.bv.impl.BeanValidationModuleStartupObserver.logBeanValidationModuleConfiguration [Started] MyFaces CODI Bean-Validation-Module v1.0.5
17:29:45.493 [http-nio-8080-exec-1] ERROR com.company.app1.enterprise.exception.app1ExceptionHandler - ExpHandler: current exception:class javax.faces.FacesException
17:29:45.495 [http-nio-8080-exec-1] ERROR com.company.app1.enterprise.exception.app1ExceptionHandler - ExpHandler: current exception component:null
17:29:45.497 [http-nio-8080-exec-1] ERROR com.company.app1.enterprise.exception.app1ExceptionHandler - ExpHandler: current exception phaseid:RENDER_RESPONSE(6)
17:29:45.506 [http-nio-8080-exec-1] ERROR com.company.app1.enterprise.exception.app1ExceptionHandler - ExpHandler: current exception: attributes{}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >
    
    <display-name>app1</display-name>

    <context-param>
        <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Production</param-value>
    </context-param>
    <context-param> 
        <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
        <param-value>true</param-value> 
    </context-param>
    <context-param>
        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
        <param-value>resources.application</param-value>
    </context-param>
    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>casablanca</param-value>
    </context-param>

    <!-- Enable PostConstruct on JSF ManagedBeans on Jetty (and Tomcat as well?) -->
    <context-param>
        <param-name>org.apache.myfaces.config.annotation.LifecycleProvider</param-name>
        <param-value>org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider</param-value>
    </context-param>

    <listener>
        <listener-class>org.apache.webbeans.servlet.WebBeansConfigurationListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
    </listener>


    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    
    <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.company.app1.enterprise.service.health</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/health/*</url-pattern>
    </servlet-mapping>


    <session-config> <!-- set the default session time out to 60 minutes -->
        <session-timeout>60</session-timeout>
         <!-- set the Session Cookie as httpOnly -->
      <!--      <cookie-config>
          <http-only>true</http-only>
        </cookie-config> -->
        <!-- Added this for SPR HCSDM00273622 - Links to sign up new users not working properly -->
        <tracking-mode>COOKIE</tracking-mode>       
    </session-config>

    
    <filter>
        <filter-name>ParameterEscapeFilter</filter-name>
        <filter-class>com.company.app1.enterprise.filter.ParameterEscapeFilter</filter-class>
        <async-supported>true</async-supported>
    </filter>
    <filter-mapping>
        <filter-name>ParameterEscapeFilter</filter-name>
            <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <filter>
        <filter-name>primeFacesFileUploadFilter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
        <async-supported>true</async-supported>
    </filter>
    <filter-mapping>
        <filter-name>primeFacesFileUploadFilter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

<filter>
  <filter-name>GzipFilter</filter-name>
  <filter-class>com.axeda.qpublic.filter.GZipServletFilter</filter-class>
  <async-supported>true</async-supported> 
</filter>
<filter-mapping>
    <filter-name>GzipFilter</filter-name>
    <url-pattern>*.js</url-pattern>
</filter-mapping>
    <filter-mapping>
        <filter-name>GzipFilter</filter-name>
        <url-pattern>*.css</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>GzipFilter</filter-name>
        <url-pattern>*.xhtml</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>GzipFilter</filter-name>
        <url-pattern>*.html</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>GzipFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>GzipFilter</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>

    <resource-env-ref>
        <resource-env-ref-name>BeanManager</resource-env-ref-name>
        <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
    </resource-env-ref>

    <mime-mapping> 
        <extension>xhtml</extension> 
        <mime-type>text/xhtml</mime-type> 
    </mime-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>    
</web-app>

pom.xml (abridged)

<?xml version="1.0" encoding="UTF-8" ?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>TMapp1</groupId>
    <artifactId>app1</artifactId>
    <version>5.0</version>
    <packaging>war</packaging>

    <name>TM app1 Webapp</name>
    <url>http://maven.apache.org</url>

    <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <owb.version>2.0.27</owb.version>
    </properties>

    <dependencies>
        <!-- app1 uses PrimeFaces 4.0 instead of 11.0.0 as primefaces-test 11.0.0 does. -->
        <!-- <dependency> -->
            <!-- <groupId>org.primefaces</groupId> -->
            <!-- <artifactId>primefaces</artifactId> -->
            <!-- <version>11.0.0</version> -->
        <!-- </dependency> -->

        <!-- javax.* APIs -->
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-atinject_1.0_spec</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jcdi_2.0_spec</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-interceptor_1.2_spec</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-annotation_1.3_spec</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-validation_2.0_spec</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.3.6</version>
        </dependency>

        <!-- app1 uses 3.1.0 instead of 4.0.1 as primefaces-test 11.0.0 does. -->
        <!-- <dependency> -->
            <!-- <groupId>javax.servlet</groupId> -->
            <!-- <artifactId>javax.servlet-api</artifactId> -->
            <!-- <version>4.0.1</version> -->
            <!-- <scope>provided</scope> -->
        <!-- </dependency> -->
        <!-- app1 uses 2.2.4 instead of 3.0.0 as primefaces-test 11.0.0 does. -->
        <!-- <dependency> -->
            <!-- <groupId>javax.el</groupId> -->
            <!-- <artifactId>javax.el-api</artifactId> -->
            <!-- <version>3.0.0</version> -->
            <!-- <scope>provided</scope> -->
        <!-- </dependency> -->

        <!-- OpenWebBeans -->
        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-impl</artifactId>
            <version>${owb.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-jsf</artifactId>
            <version>${owb.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-web</artifactId>
            <version>${owb.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-el22</artifactId>
            <version>${owb.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.bval</groupId>
            <artifactId>bval-jsr</artifactId>
            <version>2.0.6</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>

        <!-- Used by: TODO: (unknown) -->
        <dependency>
            <groupId>commons-digester</groupId>
            <artifactId>commons-digester</artifactId>
            <version>1.8</version>
        </dependency>
        <dependency>
            <groupId>javax.ejb</groupId>
            <artifactId>javax.ejb-api</artifactId>
            <version>3.2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>javax.persistence-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.18</version>
        </dependency>

        <!-- MyFaces Core -->
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>2.3.10</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-impl</artifactId>
            <version>2.3.10</version>
        </dependency>

        <!-- start of apache-commons -->
        <!-- Used by: app1 -->
        <dependency>
            <groupId<!-- ... -->
        </dependency>
        <!-- end of apache-commons -->

        <dependency>
            <!-- Used by: TODO: app1 -->
            <groupId>org.apache.myfaces.extensions.cdi.bundles</groupId>
            <artifactId>myfaces-extcdi-bundle-jsf20</artifactId>
            <version>1.0.5</version>
        </dependency>

        <!-- primefaces? -->
        <!-- Used by: app1 -->
        <dependency> <!-- not used at compile time -->
            <groupId>org.atmosphere</groupId>
            <!-- ... -->
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>4.0</version>
        </dependency>

        <!-- Used by: app1 -->
        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>javax.el-api</artifactId>
            <version>2.2.4</version>
        </dependency>
        
        <!-- start of jersey libs -->
        <dependency>
            <!-- ... -->
        </dependency>
        <!-- end of jersey libs -->

        <dependency>
            <!-- Used by: app1 -->
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>primefaces</id>
            <name>PrimeFaces Maven Repository</name>
            <url>https://repository.primefaces.org</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>

    <build>
        <finalName>app1</finalName>
        <plugins>
            <!-- ... -->
        </plugins>
    
        <resources>
            <!-- ... -->
        </resources>
    </build>

    <profiles>
        <profile>
            <id>myfaces22</id>
            <!-- ... -->
        </profile>
        <profile>
            <id>myfaces23</id>
            <!-- ... -->
        </profile>
        <profile>
            <id>myfaces23next</id>
            <!-- ... -->
        </profile>
        <profile>
            <id>coverage</id>
            <!-- ... -->
        </profile>
    </profiles>
</project>
Vasil Lukach
  • 3,658
  • 3
  • 31
  • 40
UserB
  • 25
  • 5
  • Looks like some component is resolving to null ? What happens if you clear the page and for example just do a `

    Hello World

    `? When using such an old version of PrimeFaces, make sure it's one that closes vulnerabilities such as; https://www.tenable.com/plugins/was/113119
    – Adam Waldenberg Jul 04 '22 at 21:15
  • Thanks, @AdamWaldenberg. 1. Is there a way I can figure out which component is resolving to null? 2. Does 'component' refer to components used at the presentation layer by PF? 3. For a _Hello World_ test, I replaced the head & body in _appsSuite.xhtml_ with ` `. Again a blank page with the same exceptions. 4. PF 4.0.25 with fixes [was never released](https://github.com/primefaces/primefaces/issues/1152). Is there another way? 5. Native managed beans are deprecated in JSF 2.3 but I've retained them as-is. I hope that's not an issue for now. – UserB Jul 05 '22 at 08:13
  • An update to #2 above (missed the 5-minute edit window). The result was no different when the head & body of _...\src\main\webapp\xhtml\appsSuite.xhtml_ was replaced with either `

    Hello World PrimeFaces

    Hello World PrimeFaces

    ` or better yet ` ` or simply `

    Hello World

    `.
    – UserB Jul 05 '22 at 09:07
  • For closing that hole in PrimeFaces in versions that are still vulnerable, please see the following link; https://www.primefaces.org/primefaces-el-injection-update/ – Adam Waldenberg Jul 05 '22 at 17:17
  • As for the exception, it looks like it might be related to CDI. WebLogic is a EE container while Tomcat is a servlet container. I believe CODI is heavily reliant on CDI. It's certainly possible to get things like CDI working in normal Tomcat - but maybe what you are after is TomEE ? Please see the following link for a comparison; https://tomee.apache.org/comparison.html – Adam Waldenberg Jul 05 '22 at 17:29
  • Thank you for your detailed response, @AdamWaldenberg. a. I'll have a look at that PF link & share my update soon. b. As for CDI, in fact, I started with TomEE Plus first but ran into start-up errors I couldn't resolve (nothing on SO/Google helped). Next, I switched to Weld but faced issues again & if I'm not mistaken, also read that it had limitations w.r.t. EJBs (used in our app), etc.,. Finally, I chose OWB and was successful. With the experience gained so far, I can retry Weld again. c. Is there anything else I can do to say, increase log levels, etc., to help zero in on the suspect, Adam? – UserB Jul 06 '22 at 03:02
  • Set `PROJECT_STAGE` to Development to get some extra logging information from JSF. If you are using EJB's I would most definetly recommend TomEE. Note that if you use TomEE you don't have to add any of these external dependencies. – Adam Waldenberg Jul 06 '22 at 12:02
  • Appreciate the tip about `PROJECT_STAGE` but, unfortunately, after setting it to `Development`, I couldn't find much additional JSF logs let alone ones that would aid the debugging of the current issue, @AdamWaldenberg. :( Yes, TomEE was my first choice as well for the very same reasons. However, as shared, a limiting error thwarted my plans. If the current issue is indeed due to CDI limitations, I can definitely post my TomEE issue in a new SO post and pursue it once again. To make matters worse, I've a fast-approaching deadline (before which my app needs to run on Tomcat) later this week. – UserB Jul 06 '22 at 17:30
  • Another question. In addition to JSF, how do I also set the CODI project stage to `Development` to overcome the warning: `WARNING [http-nio-8080-exec-1] org.apache.myfaces.extensions.cdi.jsf2.impl.ProjectStageObserver.checkProjectStage The value of the JSF 2 project stage (Development) is different from the CODI project stage (Production)` – UserB Jul 06 '22 at 17:38
  • I am pretty sure CDI is the problem. You will likely also run into issues with the EJB's later if you run on a vanilla Tomcat container. As for the CODI project stage, please see https://stackoverflow.com/questions/8359867/how-do-i-set-the-codi-project-stage for a solution. – Adam Waldenberg Jul 07 '22 at 16:32
  • I'm really grateful for your time and patience, @AdamWaldenberg. Thank you for all the inputs and the link as well. I've restarted my TomEE Plus trials again and posted my long-standing, blocking issue [here](https://stackoverflow.com/questions/72952022/why-does-tomee-plus-throw-a-cant-create-resource-null-java-lang-nullpointerex). – UserB Jul 12 '22 at 12:09

0 Answers0