2016-07-26 22 views
0

JDK1.7
Tomcat8
Redis sv 3.0
Spring3.2.14, Jedis 2.8.1, Frühjahrssitzung 1.2, Federdaten redis 1.7Frühlingssession redis 'Nein Bean mit dem Namen 'springSessionRepositoryFilter' definiert'

[INFO ][XmlBeanDefinitionReader(loadBeanDefinitions:316)] Loading XML bean definitions 
[INFO ][DefaultListableBeanFactory(preInstantiateSingletons:603)] Pre-instantiating singletons in org.s[email protected]66039e85: defining beans [redisHttpSessionConfiguration,jedisPoolConfig,jedisConnectionFactory,redisTemplate]; root of factory hierarchyerere 
[INFO ][ContextLoader(initWebApplicationContext:325)] Root WebApplicationContext: initialization completed in 361 ms 
[ERROR][StandardContext(filterStart:4592)] Exception starting filter springSessionRepositoryFilter 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSessionRepositoryFilter' is defined 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:575) 

Hier ist mein Protokoll. Ich weiß nicht, wie ich dieses Problem lösen kann.
sieht es so aus, als wäre die RedisHttpSessionConfiguration-Bean bereits erstellt worden,
Warum ist die Filter-Bean noch nicht definiert?

und ich kann nicht zu Spring4 ändern, weil meine Firma lässt mich nicht
wirklich brauchen Ihre Hilfe, dank

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 
<!-- redis --> 
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> 
</bean> 

<bean id="jedisConnectionFactory"  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> 
<property name="hostName" value="127.0.0.1"/> 
<property name="port" value="6739" /> 
<property name="password" value="" /> 
<property name="timeout" value="1800" /> 
<property name="poolConfig" ref="jedisPoolConfig" /> 
<property name="usePool" value="true" /> 
</bean> 

<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"> 
<property name="connectionFactory" ref="jedisConnectionFactory" /> 
</bean> 

<!-- session redis --> 
<bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"> 
<property name="maxInactiveIntervalInSeconds" value="1800" /> 
</bean> 
</beans> 

das ist meine Config-Datei, und mein Projekt verwendet tomcat eingebettet und taten nicht, haben web.xml, füge ich den Hörer und Filtern von

ctx.addParameter("contextConfigLocation", "file:"+getHomePath()+"conf/applicationContext.xml"); 
     ctx.addApplicationListener(new ApplicationListener("org.springframework.web.context.ContextLoaderListener",true)); 
     ctx.addApplicationListener(new ApplicationListener("org.springframework.web.context.request.RequestContextListener",true)); 



    org.apache.tomcat.util.descriptor.web.FilterDefspringSessionRepositoryFilterDef =new org.apache.tomcat.util.descriptor.web.FilterDef(); 
    org.apache.tomcat.util.descriptor.web.FilterMap springSessionRepositoryFilterMapper = new org.apache.tomcat.util.descriptor.web.FilterMap(); 

    springSessionRepositoryFilterDef.setFilterName("springSessionRepositoryFilter"); 
    springSessionRepositoryFilterDef.setFilterClass(org.springframework.web.filter.DelegatingFilterProxy.class.getCanonicalName()); 
    ctx.addFilterDef(springSessionRepositoryFilterDef); 
    springSessionRepositoryFilterMapper.setFilterName("springSessionRepositoryFilter"); 
    springSessionRepositoryFilterMapper.addURLPattern("/*"); 
    ctx.addFilterMap(springSessionRepositoryFilterMapper); 

vielen Dank

+0

Können Sie Ihre Konfiguration posten? Versuchen Sie außerdem, 'SpringHttpSessionConfiguration.springSessionRepositoryFilter' zu debuggen, um zu überprüfen, ob die Bean erstellt wird. – codependent

+0

@codependent Ich habe meine Frage bearbeitet, danke – wade

Antwort

1

Sie benötigen Fügen Sie Ihrer Spring XML-Konfiguration <context:annotation-config/> hinzu, um die Verarbeitung von -Klassen zu ermöglichen.

Wie in Ihrer Protokollausgabe gezeigt, wird RedisHttpSessionConfiguration derzeit nur als reguläre Bean registriert, aber darin enthaltene Bean-Definitionen werden nicht behandelt.

+0

danke! Das hat mein Problem gelöst – wade