1

Websphere の MDB のインターセプターの問題に直面しています。WAS 7.0.0.23 のリスナー ポートではなく、ActivationSpec を使用して MDB の defaultInterceptor を構成しました。ClassCastException が発生しています。SessionBean でも同じ構成が機能します。

<assembly-descriptor><interceptor-binding>
<ejb-name>*</ejb-name>
    <interceptor-class>com.LoggingInterceptor</interceptor-class>
</interceptor-binding></assembly-descriptor>

例外:LocalExceptio E CNTR0019E: EJB threw an unexpected (non-declared) exception during invocation of method "onMessage". Exception data: javax.ejb.EJBException: Injection failure; nested exception is: java.lang.IllegalArgumentException: java.lang.ClassCastException

http://www-01.ibm.com/support/docview.wss?uid=swg1PM53989 このリンクによると、この問題はリスナー ポートを使用する場合にのみ発生しますが、Activation Spec を使用しています。

ありがとうございます。

4

1 に答える 1

0

このエラー メッセージはよくありませんが、メソッド インジェクションがあることを意味しますが、(ルックアップの) ターゲット タイプがコード内のタイプと一致しません。たとえば、次の場合:

@Resource
public void setQueue(QueueConnectionFactory qcf) { ... }

...しかし、データ ソースを指すこのリソースのバインディングを指定した場合、ClassCastException が発生します。すべてのインジェクションを削除することをお勧めします (おそらく、インターセプターまたはそのスーパークラスからのものです。エラーは追加したときにのみ発生するためです)。問題が見つかるまでゆっくりと追加し直してください。

于 2013-05-11T14:39:04.467 に答える