2

私は同様の問題を抱えていますが、時々うまくいきます。説明されているエラーは、たまにしか発生しません。

spring 3.2.5 と ehcache 2.6.5 を使用しています。

例外トレース:

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){}

これが発生した場合: tomcat7 をビルドして自動デプロイするようにジェンキンを構成した場合 / maven を使用して Eclipse WS をビルドし、tomcat7 にデプロイした場合。

これが完全に機能する場合: 一度失敗した後、MailFilterServiceImpl.java をいくつかのスペースで編集して、Eclipse で再コンパイルし、tomcat7 サーバーを再起動します。

CI シナリオで動作させる必要があります。

[更新] コンパイラ オプション debug:true を設定すると、この問題を回避できます。最適化されたものには何の発言権もないようです。

<debug>true</debug>
<optimize>true</optimize>
4

1 に答える 1

2

あなたの説明は、1つのことを明確にしています.でコンパイルすると機能しませんjavacが、Eclipseコンパイラで機能しecjます. デバッグ情報なしでコンパイルしている可能性があります。

于 2014-06-19T07:40:55.807 に答える