2011-04-28 18 views
0

データ・キュー・オブジェクトに問題があります。私はJavaのData Queueオブジェクトを介してAS/400プログラム(別名AS400)にメッセージを送信しています。 iSeriesに書き込んでレスポンスを読むことはできますが、データ・キューのサイズは以前に送信したメッセージのサイズによって定義されるため、答えを受け取ると、これは要求メッセージと私は緩やかな情報。どうすれば解決できますか?誰でも助けてくれますか?私はJTOpenライブラリを使用しています。データ・キューのサイズの制限 - iSeriesからJavaへの通信

おかげ

+0

データキューはどのように作成されていますか?コマンドプロンプトから( 'CRTDTAQ'コマンドを使って)データキューを作成するとき、最大エントリ長を1から64512バイトまで指定する必要があります。おそらく、私が長さ100のデータキューを作成し、200バイトを入れようとすると、それは切り捨てられます。 – dmc

+1

また、DataQueueオブジェクトで 'create'メソッドを使用している可能性があります。私が見つけたJTOpen Javadocsのこのコピー(http://javadoc.midrange.com/jtopen/com/ibm/as400/access/DataQueue.html)によると、それはあなたが 'maxEntryLength'を指定する場所です。ifあなたはJavaから作成しています。 – dmc

答えて

3

かかわらず、それが作成されていますどのように、データキューは、「最大エントリ長」を持っています。これは、CLのCRTDTAQコマンドまたはJTOpenを使用してDataQueueオブジェクトを設定する場合はcreateメソッド呼び出しで指定されます。

データキューを使用して異なる長さのメッセージを送信する場合は、「最大エントリ長」が実際の最大エントリ長と同じかそれ以上のデータキューを作成する必要があります。それ以外の場合は、一方の端に何かを置く危険があり、他方の端から出てきたときに切り捨てることがあります。

Here's the JavadoccreateのデータキューをJTOpenからどのように表示するかを示します。

+0

DataQueueは40000の長さで作成されており、Javaで受信したメッセージは1000文字を超えないため、正常に動作するはずです。私たちが500文字のメッセージをiSeriesに送信すると、応答メッセージは500の長さに切り捨てられます。私たちの解決策は、応答と同じ長さになるように、送信したメッセージを空白で埋めることでした。しかし、これは問題を解決しませんが、それは私たちが "ハンマーソリューション"と呼ぶものです... –

+0

私は参照してください。 iSeriesで実行されているプログラムがデータを切り捨てていないことを確認してください。データ待ち行列を表示する方法がある場合( 'DBU'や' DMPOBJ'コマンドを使用することもできますが、これはもっとも簡単な方法ではありません)、応答全体がそれを作っていることを確認することができますデータキューに転送します。 Javaプログラムからメッセージを送信し、これを行うために応答を消費するロジックを抑止する必要があります。がんばろう!興味深いアイデア。 – dmc

1

代替ソリューションを検討してもよろしいですか?同様の状況で使用したアプローチは、サイズ制限のないユーザー・スペース(AS/400上のオブジェクト・タイプUSRSPC)を介して要求/応答メッセージの内容を渡すことでした。うーん、私が正しく覚えていれば〜16GB ...ユーザースペースの固定サイズの名前は、AS/400サーバーとJavaクライアントの間のデータキュー(DTAQ)に渡されました。

+1

[IBM](http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/topic/rzamp/rzamp.pdf)によると、最大ユーザー・スペースのサイズは約16 MBです。これは64KBの最大データキューエントリサイズよりもずっと優れています。 – dmc

+0

訂正ありがとう、@ dmc!それはしばらくしていたので、詳細はちょっと色あせて、ごめんなさい。私はちょうどそれがDTAARA、USRQまたはDTAQよりずっと良かったことを覚えています。再度、感謝します。 – mazaneicha

+0

ユーザースペースにはセキュリティ上の問題があります(したがって、* SEC QALWUSRDMNシステム値が必要です)。単にファイル( "メッセージ")を共有ディレクトリにダンプし、データキューを使用してパス/名前を送信するのはなぜですか?サイズに関する懸念はありません。 – user2338816

関連する問題