You shouldn't need a shiro.ini for the spring integration at all, (unless
you are using an Ini based Realm of course)

On Mon, Jun 5, 2017 at 2:22 PM, Yu Wei <[email protected]> wrote:

> Hi,
>
> I still don't quite understand the relationship between shiro.ini and
> applicationContext.xml.
>
> For example, I put following stuff into shiro.ini.
>
> datasrc = org.apache.shiro.jndi.JndiObjectFactory
> datasrc.requiredType = javax.sql.DataSource
> datasrc.resourceName = mysql/ustudy
> datasrc.resourceRef = true
>
>
> Then I got following exception,
>
> 05-Jun-2017 18:15:54.326 SEVERE [main] 
> org.apache.catalina.core.StandardContext.listenerStart
> Exception sending context initialized event to listener instance of class
> [org.apache.shiro.web.env.EnvironmentLoaderListener]
>  java.lang.IllegalStateException: Unable to look up javax.sql.DataSource
> with jndi name 'mysql/ustudy'.
>         at org.apache.shiro.jndi.JndiObjectFactory.getInstance(
> JndiObjectFactory.java:44)
>         at org.apache.shiro.config.ReflectionBuilder.resolveReference(
> ReflectionBuilder.java:417)
>         at org.apache.shiro.config.ReflectionBuilder.resolveValue(
> ReflectionBuilder.java:572)
>
> Which other configurations did I missed?
>
>
> Thanks,
>
> Jared, (韦煜)
> Software developer
> Interested in open source software, big data, Linux
> ------------------------------
> *From:* Laszlo Hornyak <[email protected]>
> *Sent:* Monday, June 5, 2017 3:45:02 PM
> *To:* [email protected]
> *Subject:* Re: Re: "No bean named 'shiroFilter' available" when try to
> integrate shiro with spring boot
>
> Yes I believe the shiro.ini is needed or at least it is practical to have
> it separate from the rest of your application configuration, since
> typically applicationContext will be all the same in dev and production
> environment, while you very likely need completely different security
> settings.
>
> On Mon, Jun 5, 2017 at 2:15 AM, Yu Wei <[email protected]> wrote:
>
>> I didn't have web.xml at first, it's generated by spring
>> autoconfiguration. When integrated with shiro, I only added shiro related
>> in web.xml.
>> I have little experience in using spring and shiro. This is my mistake.
>> Another question is about shiro.ini.
>> Is shiro.ini still needed when integrating with spring? I only found
>> description about setting applicationContext.xml when integrating with
>> shiro.
>>
>> Thanks for your help.
>> Jared
>> Interested in cloud computing,big data processing,linux
>> 2017年6月5日 04:54于 Laszlo Hornyak <[email protected]>写道:
>> Hi,
>>
>> Did spring start up at all? You do not have it in your web.xml...
>>
>> <context-param>
>>     <param-name>contextConfigLocation</param-name>
>>     <param-value>
>>         WEB-INF/applicationContext.xml
>>     </param-value>
>> </context-param>
>>
>> <listener>
>>     <listener-class>
>>         org.springframework.web.context.ContextLoaderListener
>>     </listener-class>
>> </listener>
>>
>>
>>
>>
>> On Sun, Jun 4, 2017 at 7:23 PM, Yu Wei <[email protected]> wrote:
>>
>>> Hi guys,
>>>
>>> I tried to integrate shiro with spring boot by following document in
>>> Apache shiro.
>>>
>>> I found a problem when trying to deploy war to tomcat as below:
>>>
>>> 04-Jun-2017 16:16:00.163 INFO [main] 
>>> org.apache.catalina.core.ApplicationContext.log
>>> Initializing Shiro environment
>>> 04-Jun-2017 16:16:00.448 SEVERE [main] 
>>> org.apache.catalina.core.StandardContext.filterStart
>>> Exception starting filter [shiroFilter]
>>>  org.springframework.beans.factory.NoSuchBeanDefinitionException: No
>>> bean named 'shiroFilter' available
>>>         at org.springframework.beans.factory.support.DefaultListableBea
>>> nFactory.getBeanDefinition(DefaultListableBeanFactory.java:687)
>>>         at org.springframework.beans.factory.support.AbstractBeanFactor
>>> y.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1207)
>>>         at org.springframework.beans.factory.support.AbstractBeanFactor
>>> y.doGetBean(AbstractBeanFactory.java:284)
>>>
>>>
>>> According to shiro document, I should add applicationContext.xml with
>>> proper settings. Where should I place the context file? In WEB-INF or other
>>> directory?
>>>
>>>
>>> How could I fix this problem?
>>>
>>>
>>> Detailed configuration is as below,
>>>
>>>
>>> Web.xml in directory WEB-INF is as following,
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee";
>>>          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>               http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";>
>>>     <!-- configuration for Aapache shiro -->
>>>     <listener>
>>>         <listener-class>org.apache.shiro.web.env.EnvironmentLoaderLi
>>> stener</listener-class>
>>>     </listener>
>>>
>>>     <filter>
>>>         <filter-name>shiroFilter</filter-name>
>>>         <filter-class>org.springframework.web.filter.DelegatingFilte
>>> rProxy</filter-class>
>>>         <init-param>
>>>             <param-name>targetFilterLifecycle</param-name>
>>>             <param-value>true</param-value>
>>>         </init-param>
>>>     </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>
>>>
>>> </web-app>
>>>
>>> applicationContext.xml is placed in folder WEB-INF, and content is as
>>> below,
>>>
>>> <bean id="shiroFilter" class="org.apache.shiro.spring
>>> .web.ShiroFilterFactoryBean">
>>>     <property name="securityManager" ref="securityManager"/>
>>>     <property name="filterChainDefinitions">
>>>         <value>/dashboard/users/list = authc, roles[admin]</value>
>>>     </property>
>>> </bean>
>>>
>>> <bean id="securityManager" class="org.apache.shiro.web.mg
>>> t.DefaultWebSecurityManager">
>>>     <!-- Single realm app.  If you have multiple realms, use the
>>> 'realms' property instead. -->
>>>     <property name="realm" ref="myRealm"/>
>>>     <!-- By default the servlet container sessions will be used.
>>> Uncomment this line
>>>          to use shiro's native sessions (see the JavaDoc for more): -->
>>>     <!-- <property name="sessionMode" value="native"/> -->
>>> </bean>
>>> <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring
>>> .LifecycleBeanPostProcessor"/>
>>>
>>> <!-- Define the Shiro Realm implementation you want to use to connect to
>>> your back-end -->
>>> <!-- security datasource: -->
>>> <bean id="myRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm">
>>> </bean>
>>> <bean 
>>> class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
>>> depends-on="lifecycleBeanPostProcessor"/>
>>>     <bean class="org.apache.shiro.spring.security.interceptor.Authoriz
>>> ationAttributeSourceAdvisor">
>>>     <property name="securityManager" ref="securityManager"/>
>>> </bean>
>>> </beans>
>>>
>>>
>>>
>>> Thanks,
>>>
>>> Jared, (韦煜)
>>> Software developer
>>> Interested in open source software, big data, Linux
>>>
>>
>>
>>
>> --
>>
>> EOF
>>
>
>
>
> --
>
> EOF
>

Reply via email to