Hi,

the shiro.ini allows you to configure objects via their setters. Look at
the JndiObjectFactory class:
https://shiro.apache.org/static/latest/apidocs/org/apache/shiro/jndi/JndiObjectFactory.html.
As you can see, there is no setUser() method etc. to configure the data
source directly. You instead use the setResourceName(String resourceName)
method to supply a JNDI URL with which the data source can be looked up.
The data source itself must be configured somewhere else when using the
JndiObjectFactory. Maybe in Tomcat's config in your case? I really don't
know, but maybe it at least gets you on the right track. Also have a look
at this question on SO maybe:
https://stackoverflow.com/questions/17441019/how-to-configure-jdbcrealm-to-obtain-its-datasource-from-jndi

Regards
Alex

On Sat, Jun 3, 2017 at 4:03 PM, Yu Wei <[email protected]> wrote:

> Hi guys,
>
>
> I tried to configure shiro.ini to make shiro using tomcat database
> connection pool.
> The configuration is as below,
> datasrc = org.apache.shiro.jndi.JndiObjectFactory
> datasrc.requiredType = javax.sql.DataSource
> datasrc.resourceName = mysql/ustudy
> datasrc.resourceRef = true
> datasrc.user = root
> datasrc.password = mysql
> datasrc.url = jdbc:mysql://192.168.0.107:13306/ustudy?
> characterEncoding=UTF-8
> datasrc.driverClassName = com.mysql.jdbc.Driver
>
> realm = org.apache.shiro.realm.jdbc.JdbcRealm
> realm.permissionsLookupEnabled = true
> realm.dataSource = $datasrc
> realm.authenticationQuery = select usr_passwd from sec_users where
> loginname = ?
> realm.credentialsMatcher = $pwMatcher
>
> securityManager.realms = $realm
>
> tomcat failed to enable shiro  and I got following errors:
> 03-Jun-2017 11:41:52.930 INFO [main] 
> org.apache.catalina.core.ApplicationContext.log
> Initializing Shiro environment
> 03-Jun-2017 11:41:53.130 SEVERE [main] 
> org.apache.catalina.core.StandardContext.listenerStart
> Exception sending context initialized event to listener instance of class
> [org.apache.shiro.web.env.EnvironmentLoaderListener]
>  org.apache.shiro.config.ConfigurationException: Property 'user' does not
> exist for object of type org.apache.shiro.jndi.JndiObjectFactory.
>         at 
> org.apache.shiro.config.ReflectionBuilder.isTypedProperty(ReflectionBuilder.java:255)
>
>         at 
> org.apache.shiro.config.ReflectionBuilder.applyProperty(ReflectionBuilder.java:544)
>
>         at 
> org.apache.shiro.config.ReflectionBuilder.applySingleProperty(ReflectionBuilder.java:206)
>
>         at 
> org.apache.shiro.config.ReflectionBuilder.applyProperty(ReflectionBuilder.java:167)
>
>         at 
> org.apache.shiro.config.ReflectionBuilder.buildObjects(ReflectionBuilder.java:124)
>
>         at org.apache.shiro.config.IniSecurityManagerFactory.
> buildInstances(IniSecurityManagerFactory.java:161)
>         at org.apache.shiro.config.IniSecurityManagerFactory.
> createSecurityManager(IniSecurityManagerFactory.java:124)
>         at org.apache.shiro.config.IniSecurityManagerFactory.
> createSecurityManager(IniSecurityManagerFactory.java:102)
>         at org.apache.shiro.config.IniSecurityManagerFactory.
> createInstance(IniSecurityManagerFactory.java:88)
>         at org.apache.shiro.config.IniSecurityManagerFactory.
> createInstance(IniSecurityManagerFactory.java:46)
>         at 
> org.apache.shiro.config.IniFactorySupport.createInstance(IniFactorySupport.java:123)
>
>         at 
> org.apache.shiro.util.AbstractFactory.getInstance(AbstractFactory.java:47)
>
>         at org.apache.shiro.web.env.IniWebEnvironment.
> createWebSecurityManager(IniWebEnvironment.java:203)
>         at 
> org.apache.shiro.web.env.IniWebEnvironment.configure(IniWebEnvironment.java:99)
>
>         at 
> org.apache.shiro.web.env.IniWebEnvironment.init(IniWebEnvironment.java:92)
>
>         at org.apache.shiro.util.LifecycleUtils.init(LifecycleUtils.java:45)
>
>         at org.apache.shiro.util.LifecycleUtils.init(LifecycleUtils.java:40)
>
>         at 
> org.apache.shiro.web.env.EnvironmentLoader.createEnvironment(EnvironmentLoader.java:221)
>
>         at 
> org.apache.shiro.web.env.EnvironmentLoader.initEnvironment(EnvironmentLoader.java:133)
>
>         at org.apache.shiro.web.env.EnvironmentLoaderListener.
> contextInitialized(EnvironmentLoaderListener.java:58)
>         at 
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4734)
>
>
> Maybe this is only configuration problem.
> Could you please help to have a look?
>
>
> Thanks,
>
> Jared, (韦煜)
> Software developer
> Interested in open source software, big data, Linux
>

Reply via email to