使用Ehcache弹出@Cacheable,spel为有效对象找到null

我有一个类似的问题 ,但有时它的工作原理。 描述的错误只会偶尔发生一次。

我使用的是spring 3.2.5和ehcache 2.6.5。

exception跟踪:

org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 0): Field or property 'applicationID' cannot be found on null at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:213) at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:85) at org.springframework.expression.spel.ast.PropertyOrFieldReference.access$000(PropertyOrFieldReference.java:43) at org.springframework.expression.spel.ast.PropertyOrFieldReference$AccessorLValue.getValue(PropertyOrFieldReference.java:346) at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:82) at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:93) at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:89) at org.springframework.cache.interceptor.ExpressionEvaluator.key(ExpressionEvaluator.java:95) at org.springframework.cache.interceptor.CacheAspectSupport$CacheOperationContext.generateKey(CacheAspectSupport.java:452) at org.springframework.cache.interceptor.CacheAspectSupport.inspectCacheables(CacheAspectSupport.java:281) at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:199) at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:66) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at com.sun.proxy.$Proxy85.getMailOrigin(Unknown Source) at com.myApplication.MailFilterServiceImpl.isValid(ApplicationServiceImpl.java:134) 

我的缓存代码如下:

 MailFilterServiceImpl @Cacheable(value="mailClientsCache", key="#mb.applicationID") public MailClientBean getMailOrigin(MailBean mb){} 

当发生这种情况时 :当我将jenkins配置为构建并自动部署到tomcat7 /当我使用maven构建eclipse WS并部署到tomcat7时。

当它完美地运行时 :在它失败一次之后,如果我编辑MailFilterServiceImpl.java只是用一些空格使它在eclipse中重新编译并重新启动tomcat7服务器。

我需要让它在CI场景中工作。

[更新]设置编译器选项debug:true可解决此问题。 优化似乎没有任何发言权。

 true true 

您的描述清楚地说明了一点:当您使用javac编译时它不起作用,但它确实可以与Eclipse编译器ecj 。 您可能正在编译而没有调试信息。