1

IBMWebshereのJMSトピックとキューを正常に構成しました。

リスナークラスがすべてのサブクラスのベースになるようにJMSトピックを使用しました。次のように:

public class Base implements MessageListener {
  public void onMessage(javax.jms.Message message) { } }

@MessageDriven(activationConfig={
@ActivationConfigProperty(propertyName="messagingType",propertyValue="javax.jms.MessageListener"),
@ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Topic"),
@ActivationConfigProperty(propertyName="destination",propertyValue="topic/Test"),
@ActivationConfigProperty(propertyName="messageSelector",propertyValue="RECIPIENT='TestR'")},messageListenerInterface=MessageListener.class)

public class TopicSubScriber extends Base {    

}

次のエラーが発生しました:

the class contains the @MessageDriven annotation but is not a valid
  message-driven bean: no message listener interface can be determined

注:これらの両方のクラスは異なるモジュールにあります。

Baseクラスをロードしていないようです。何か案は?

4

2 に答える 2

1

また、IBM Web sphereフィックスパック7に従って適用しましたが、無駄はありません 。http: //www-01.ibm.com/support/docview.wss?uid=swg1PM70521

この問題は、TopicSubScriperにもMessageListenerを実装することで解決されます(スーパークラスが取得した場合でも)..このソリューションには架空の影響がないため、満足しています:)

SiBとAviramSegalにご協力いただきありがとうございます。

于 2012-08-31T10:54:34.237 に答える
0

IBM Websphereの同様のスレッドで、答えは次のように述べています。

答え

機能への影響はないため、このエラーメッセージは無視してください。

JavaEEチュートリアルによると

メッセージ駆動型Beanクラスは、サポートするメッセージタイプのメッセージリスナーインターフェイスを実装することをお勧めしますが、必須ではありません。JMS APIをサポートするBeanは、javax.jms.MessageListenerインターフェースを実装します。

それでも、エラーメッセージを避けたい場合は、試しimplements MessageListenerてみることができると思いますTopicSubScriper

于 2012-08-30T17:26:01.073 に答える