2017-06-18 2 views
0

Je souhaite configurer Apache Shiro pour utiliser JNDI afin d'authentifier les utilisateurs. configuré à shiro.iniConfigurer Tomcat 8 et Shiro avec JNDI

[main] 
shiro.loginUrl = /authentication/login.xhtml 
dataSource = org.apache.shiro.jndi.JndiObjectFactory 
dataSource.requiredType = javax.sql.DataSource 
dataSource.resourceName = jdbc/sqliteDB 
dataSource.resourceRef = true 
jdbcRealm = com.web.authentication.JdbcRealm 
jdbcRealm.dataSource = $dataSource 
jdbcRealm.permissionsLookupEnabled = true 
securityManager.realm = $jdbcRealm 

J'ai ajouté dans WEB-INF/web.xml ces lignes:

<resource-ref> 
     <description>postgreSQL Datasource example</description> 
     <res-ref-name>jdbc/sqliteDB</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

Tomcat/conf/context.xml

<Server port="8009" shutdown="SHUTDOWN"> 
    .................. 
    <Resource auth="Container" 
    driverClassName="org.sqlite.JDBC" 
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
    maxIdle="2" maxTotal="60" 
    name="java:comp/env/jdbc/sqliteDB" 
    password="" 
    type="javax.sql.DataSource" 
    url="jdbc:sqlite:/C:/sqlite/test.sqlite" 
    username="" 
    validationQuery="select sqlite_version();"/> 
    ....................... 
     </Host> 
    </Engine> 
    </Service> 
</Server> 

Mais quand je déployer le paquet j'obtiens l'erreur:

java.lang.IllegalStateException: Unable to look up javax.sql.DataSource with jndi name 'jdbc/sqliteDB'. 
    at org.apache.shiro.jndi.JndiObjectFactory.getInstance(JndiObjectFactory.java:44) 
    at org.apache.shiro.config.ReflectionBuilder.resolveReference(ReflectionBuilder.java:417) 
Caused by: javax.naming.NameNotFoundException: Name [jdbc/sqliteDB] is not bound in this Context. Unable to find [jdbc]. 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:816) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:173) 

Pouvez-vous me donner des conseils sur la façon de résoudre ce problème?

Répondre

0

Veuillez s'il vous plaît essayer de changer la ligne name="java:comp/env/jdbc/sqliteDB" en name="jdbc/sqliteDB" dans context.xml.