- - PR -
Subscriberフィールドの保持の仕方
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-24 10:37
お世話になっております。まつじんと言います。
現在、JMS通信でSubScriberとPublisherを使ってやり取りをしています。 それで、subscriberを起動させるPGのフィールドにprivate で値を保持させているのですが、Publisherが起動してsubscriberが受け取りに行った時にprivate で保持していた値が受け取れずエラーが出てしまいます。この場合はどのように保持したらよいのでしょうか。下記がPGになります。 エラーは java.lang.ArrayIndexOutOfBoundsException になります。 public class SubscriberSample implements MessageListener { /** 引数のクラス */ private String [] args; /** * 受信待受(subscriber起動) * */ public void executeSubscriber() { this.args[0] = DataSample; subscriber = Subscriber.createSubscriber(this); } /** * JMSより利用履歴受信 * * */ public void onMessage(Bean bean) { bean.setData(args[0]); ←ここでエラー } |
|
投稿日時: 2006-02-24 10:59
DataSample ってのはどこからもらってきた値でしょう?
これがサイズ 0 の配列だってことはないでしょうか? |
|
投稿日時: 2006-02-24 11:17
すみません。コードが間違っていました。
コンストラクタの引数でもらうような感じになります。 ちなみにコンストラクタが送られているか確認しています。 public class SubscriberSample implements MessageListener { /** 引数のクラス */ private String [] args; /** * * コンストラクタ * @param args */ public SubscriberSample (String [] className) { this.args = className; } /** * 受信待受(subscriber起動) * */ public void executeSubscriber() { subscriber = Subscriber.createSubscriber(this); } /** * JMSより利用履歴受信 * * */ public void onMessage(Bean bean) { bean.setData(args[0]); ←ここでエラー } |
|
投稿日時: 2006-02-24 14:28
>ちなみにコンストラクタが送られているか確認しています。
えーと、 ・「コンストラクタに0より大きい長さの配列が渡されているかどうか現在確認中」 ですか?それとも ・「コンストラクタに渡されている配列は0より大きい長さの配列が渡されていることを確認済み」 ですか? やっぱり長さが 0 の配列が渡されているのではないかと疑ってしまうのですが・・・。 |
|
投稿日時: 2006-02-24 16:02
インギさん、何度も返事を頂きありがとうございます。
配列を確認したところ0より大きい長さの配列が入っておりませんでした。 原因としましては、この処理自体がmain(String [] args)より渡されてくる値だったのですが、Eclipseの実行時に構成及び実行の中で引数を設定しないで実行しておりました。その為、値が入ってもいないのでエラーが表示されたようでした。 ご迷惑をおかけしました。 ありがとうございました。 |
|
投稿日時: 2006-02-24 16:25
解決したとのことで何よりです。
この手のうっかりは一度思いこんでしまうとハマってしまいますよね。 お疲れさまです。 |
1