2012-04-30 23 views
0

私はちょうどLotus Notesを使用してWebサービスを開始しています。私ができることを望むのは、連続番号を生成するWebサービスを作成することです。この数値を生成するコードは、データベース内でしばらく使用していた既存のコードに基づいています(まっすぐな蓮のスクリプト、Webサービスはありません)。基本的に次の番号を格納しているドキュメントがあり、次の番号が返され、次の呼び出しのために更新されます。セーブの競合が検出され、番号を保存する際に問題が発生した場合は、Webサービスは順次処理されるか並列処理されますか?

私は数字を生成するためにWebサービスを使用すると考えました。 Webサービスは順番に並行して処理されますか?彼らが連続しているなら、同時に2人で数字を保存しようとする必要はありません。

+0

これはプラットフォームによって異なります。実行中のWebサービスは何ですか? Apache? Javaを使用しますか?そしてどのようなフレームワークですか?一般に、Webサービスコールは並行して処理できます。 –

答えて

2

Webサービスは、2つのシステムが共通の言語を持たない場合に、互いに通信する方法です。

たとえば、.Netサーバーに接続するLotusScriptエージェント。

DominoでWebサービスプロバイダ(サーバー)を作成するときに、LotusScriptまたはJavaでコード化できます。次に、サーバーは、コンシューマー(クライアント)がそのWebサービスと通信するために必要なコードを記述するためのWSDLファイルを提供します。

このチュートリアルでは、あなたのためのより良いそれを説明する必要があります。

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Creating_your_first_Web_Service_provider_and_consumer_in_LotusScript_and_Java.

を今すぐDomino用として。 Webサービスは、サーバーから要求された順序で実行されます。しかし、「WebサービスXが終了するまでは起動しないでください。」と言うコントロールはありません。

これをアプリケーションにコードすることもできますが、それに対抗しない限り、他のユーザーのメモリ/パフォーマンス問題のデッドロックの重大なリスクを回避できます。

Domino Serverは、Webサービスとエージェントを並行して実行しないように設定することもできます。しかし、再び同じ問題が発生する危険性があります。

一意のIDの場合は、Webサービスから作成したドキュメントのUNIDを使用できます。あるいは、評価を使って@UNIQUEを使うこともできますが、どちらもテキストを返すだけです。

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_UNIQUE.html

+0

ありがとうサイモン。要約すると、私はまだ2人が同時に次の番号の文書を更新していないことを確認する必要がありますか? –

+1

はい、これはWebサービスコンポーネントとは別のものです。次のwikiの記事では、連続した番号付けを作成しています。 http://www-10.lotus.com/ldd/ddwiki.nsf/dx/sequential-numbering.htm –

+0

ドミノWebサービスのドキュメントロッキング機能について考えてみませんか?私はそれがR6で出てきたときにそれほど印象的ではなかったが、R8.5 – booyaa

0

はいWebサービスがparrallelで実行されます。しかし、あなたのコードはセーブの競合を扱うと書いたので、問題はないはずです。
標準的なメモでは、2人のユーザーが呼び出します。1番目はドキュメントを取得し、2番目はドキュメントを取得し、2番目のドキュメントを保存すると、最初にセーブの競合が発生します。 結論では、それは平行ですが、問題ではありません。

0

スイッチをオンにしない限り、非同期Webエージェントがオフになっているため、デフォルトでは順次実行されると思っていました。したがって、安全な番号を順番に行うのは良い設計パターンですが、Webサービス経由で番号を割り当てるだけで、非同期設定を変更していないと、うまくいくはずです

1

Lotus Designerのドキュメント:

サーバー上で並行Webサービスを有効にするには、そのサーバー上の同時Webエージェントを有効にする必要があります。編集するサーバー文書を開きます。 [インターネットプロトコル - Domino Web Engine]タブをクリックします。 Webエージェントの実行を同時に有効にします。

同時Webサービス呼び出しの最大数が「最大同時剤」-settingによってdetermindです。 Lotus Administrationのドキュメントから:

最大同時エージェント同時に実行できるエージェントの数を指定します。有効な値は1〜10です。デフォルト値は、昼間は1、夜間は2です。並行エージェントの数を増やすと、エージェントマネージャの負荷が軽減されますが、他のサーバータスクを実行するために使用できるリソースも削減されます。

のLotus Notes Dominoのバージョン8.5

+0

WSがWeb上で呼び出された場合、パラメータは** NOT **最大同時エージェント**ですが、Internelプロトコル/ HTTPの基本では "Number active threads" –

0

同期の考慮事項を回避し、簡単な解決策があります。

@Uniqueを使用してテンポラリ番号を生成し、スケジューリングされたエージェントを使用して、文書の作成順に番号を割り当て、適切に構成されたビューを使用して未処理の文書のみを選択する必要があります。ドキュメントが作成された順序が気にならず、すべての番号が一意であることだけが懸念される場合は、ビューは必要なく、未処理のドキュメントでエージェントを起動することもできます。

一時番号は、適切な連続番号が割り当てられるまで一時的に参照用に使用できます。

スケジュールされたエージェントが実行されるとき、正しい参照番号で確認を送信する必要があります。

0

DXLにエクスポートして、タグのsequence =属性を取得することができます。これは、データベースの単一のインスタンスにアクセスしている場合にのみ機能します。 DXLのエクスポート/ XMLインポートは膨大なオーバーヘッドです。

残念ながら、私は簡単にロータススクリプトのNotesDocumentからノートのシーケンス番号を取得する方法を見ることはできません。アクティブなサポート契約がある場合は、ソフトウェア拡張要求(「APAR」、IBMの言葉では頭字語の頭文字は分かりませんが)の問題管理レポートを開くことができます。

幸運を祈る!

関連する問題