問題タブ [orbacus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
405 参照

c++ - 同じプロセスで複数の ORB オブジェクトを持つことは可能ですか?

ORBacusを使用しています。マルチスレッド アプリケーションを使用しており、複数の ORB オブジェクトを同じプロセスに配置したいと考えています。アイデアは、各スレッドが独自の ORB を持ち、異なるサーバーに接続されることです。

これは可能ですか?もしそうなら - どのように?


"何を試しましたか? " : 試しました

各スレッドで。各スレッドが呼び出します。各スレッドにはReconnectメソッドがあり、次を実行します。

問題、私は持っています:

  • 複数のスレッドが同時に再接続しようとすると、アプリケーションがm_varOrb->destroy();または でクラッシュしCORBA::ORB_initます。

  • スレッドの同期を試みたので、すべてのスレッドが構成済みのサーバーに 1 つずつ ( を使用してstatic mutex) 再接続しようとしましたが、まだ機能していません。1 つのスレッドが「その」ORB オブジェクトを破棄しようとすると、再びクラッシュしdestroyます (いくつかのアサートが失敗し、一部の参照カウントが > 1 であるため、実際の ORB オブジェクトへの参照カウント ポインターのように見えます)

  • 条件付き待機を追加したので、スレッドORB_initはすべてのスレッドが実行されたときにのみ呼び出しを開始しdestroyます。ORBの周りにシングルトンラッパークラスを作成し、スレッドを同期して次々に接続すると、すべてが完全に正常に機能し始めました。しかし、これは、ORB が 1 つしかないため、サーバーが 1 つだけであることを意味します。悪い。

したがって、これらすべてのことから、プロセスごとに 1 つの ORB オブジェクトしか持てないことがわかりました。何か不足していますか?

0 投票する
2 に答える
1468 参照

c++ - 異なるスレッド(マルチスレッドマルチオーブクライアントアプリケーション)を介して複数のORBを使用する-どのように?

この質問は次のことに関連しています。同じプロセスに複数のORBオブジェクトを含めることは可能ですか?

そのため、@ BrianKellyのおかげで、識別子に関する情報を見つけ(すべてのドキュメントにそのORBような情報はありませんでしたが)、さまざまなサーバーに接続していくつかのリクエストを正常に実行する単純なアプリケーションを正常に作成しました。ORBACUSCORBACORBA

ここまでは順調ですね。

ここで、私がやりたいのは、このアプリケーションをマルチスレッド化し、異なるサーバーへの接続用に別のスレッドを開始することです。しかし、ORB_initクラッシュします。

これが私がテストに使用する非常に短いコードです:

したがって、mtfalse、すべてが正常である場合、コードを拡張してサーバー固有のオブジェクトを作成したり、さまざまな要求を実行したりできます。しかし、そうすると、2番目のスレッドはの呼び出しに失敗しmtます。以下のスタックトレースを参照してください。trueORB_init

私は非常に単純で愚かな何かを見逃しているとかなり確信していますが、何ですか?

スタックトレース:

0 投票する
1 に答える
198 参照

c++ - CORBA クライアントがサーバー IOR ファイルにアクセスする方法はありますか?

マシン A で実行している cobra サーバーがあります。これは、文字列化されたオブジェクトを /tmp/Data.ref に書き込みます。マシン B でクライアントを実行しています。クライアントは /tmp/Data.ref ファイルにアクセスする必要があります。現在、Data.ref ファイルをマシン A からマシン B に ftp し、自分で /tmp に配置する必要があります。サーバーはネームサービスを使用しません。マシンは NFS マウントされていないため、両方のマシンが使用できる場所にファイルを配置できません。他の理由で、ファイルを自動的に ftp するスクリプトを書くのは好きではありません。

サーバー マシン A で Data.ref を読み取る場所をクライアントに伝える方法があるかどうか知りたいです。

その他の情報: Orbacus、C++、Linux を使用しています。可能であれば、コマンド ライン オプションまたは何らかの方法で完全なホスト ファイル パス名を指定できることを期待しています。