2016-06-01 12 views
0

私はWebServiceを持っています。 SoapFaultMappingExceptionResolverを拡張して、私自身の例外リゾルバを作成しました。AbstractEndpointExceptionResolver、cglibプロキシ、空のフィールド

私は例外をスローしようとしているときはいつでも、私はNPE取得しています:

java.lang.NullPointerException 
    at org.springframework.ws.server.endpoint.AbstractEndpointExceptionResolver.resolveException(AbstractEndpointExceptionResolver.java:104) 

をそして、これはライン上で起こる:

if (logger.isDebugEnabled()) { 
      logger.debug("Resolving exception from endpoint [" + endpoint + "]: " + ex); 
     } 

ロガーがnullであるため。 デバッグ中にわかったように、私の拡張ExceptionResolverがCGLIBによってプロキシされているため、これが発生します。 CGLIBプロキシは、私のリゾルバのその中にコピーを持っていますが、すべてのNULLフィールドで、しかし、それはまたのように見える私の実際の(初期化)リゾルバへの参照が含まれます。私は、これらのコールバックの内側に行けば

CGLIB$CALLBACK_0 = {org.spring[email protected]19853} 
CGLIB$CALLBACK_1 = {org.springf[email protected]19854} 

を、targetSource-ターゲット、私は初期化されたプロパティで私のリゾルバを見ることができます。

だから、どのように私はこの問題を解決することができますか?

答えて

0

まあ、私は、そのための小さな回避策を発見しました。プロキシを無効にしたくない場合もあります。なぜなら、私はそれが必要な場合があるからです。 だから、基本的に、あなたはあなたの設定に持つことができます。

<aop:aspectj-autoproxy proxy-target-class="true" /> 

グローバルプロキシを有効にするには。 そして、私の例外リゾルバを修正するために、私はこのような例外リストに追加しました:

<aop:aspectj-autoproxy proxy-target-class="false"> 
    <aop:include name="myExceptionResolver" /> 
</aop:aspectj-autoproxy> 
+0

実は、私はルールがするとき、唯一私が指定した1つの豆のために適用されると思った:(私を助けていません現実には、プロジェクト上のすべてのプロキシは無効になっていますが、解決策を探しています。 – Aleksei

関連する問題