0

I'm developing a maven based JSF webapp with PrimeFaces 6.0 and Apache Shiro 1.3.1 under TomEE 7.0.1. The IDE is NetBeans 8.1.

pom.xml

<dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- JSF UI Library -->
        <!-- https://mvnrepository.com/artifact/org.primefaces/primefaces -->
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>6.0</version>
        </dependency>
        <!-- Logging -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.7</version>
        </dependency>
        <!-- Application Security -->
        <!-- Required in all environments -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!-- Enables support for web-based applications -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-web</artifactId>
            <version>1.3.1</version>
        </dependency>
    </dependencies>

web.xml

 <filter>
            <filter-name>ShiroFilter</filter-name>
            <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>ShiroFilter</filter-name>
            <url-pattern>/*</url-pattern>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
            <dispatcher>INCLUDE</dispatcher>
            <dispatcher>ERROR</dispatcher>
        </filter-mapping>

        <listener>
            <listener-class>
                org.apache.shiro.web.env.EnvironmentLoaderListener
            </listener-class>
        </listener>
     <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
<welcome-file-list>
        <welcome-file>faces/login.xhtml</welcome-file>
    </welcome-file-list>

shiro.ini

[main]
authc.loginUrl = /login.xhtml
authc.successUrl = /index.xhtml
cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager.cacheManager = $cacheManager

[users]
root = topsecret, admin

[roles]
admin = *
guest = *

[urls]
/login.xhtml = authc
/logout = logout

When I run the application, I see this exception trace:

org.apache.openejb.OpenEJBException: Unable to load servlet listener class:   org.apache.shiro.web.env.EnvironmentLoaderListener
.........
.......
Caused by: java.lang.ClassNotFoundException:   org.apache.shiro.web.env.EnvironmentLoaderListener

What's wrong here ?

Deepak Marur
  • 537
  • 1
  • 13
  • 27
  • It looks fine from the config point of view, any chance you can put an example on github? – Brian Demers Sep 12 '16 at 18:47
  • 1
    Have you tried removing the newlines in the listener-class element? Just put it all on one line? (Your exception message looks suspiciously like it has some leading spaces.) – jbunting Sep 13 '16 at 01:38
  • @jbunting You're right. It worked after placing the class name on the same line as listener-class element. I suppose then that this is a bug in TomEE – Deepak Marur Sep 13 '16 at 04:54

0 Answers0