問題タブ [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.
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 オブジェクトしか持てないことがわかりました。何か不足していますか?
c++ - 異なるスレッド(マルチスレッドマルチオーブクライアントアプリケーション)を介して複数のORBを使用する-どのように?
この質問は次のことに関連しています。同じプロセスに複数のORBオブジェクトを含めることは可能ですか?
そのため、@ BrianKellyのおかげで、識別子に関する情報を見つけ(すべてのドキュメントにそのORB
ような情報はありませんでしたが)、さまざまなサーバーに接続していくつかのリクエストを正常に実行する単純なアプリケーションを正常に作成しました。ORBACUS
CORBA
CORBA
ここまでは順調ですね。
ここで、私がやりたいのは、このアプリケーションをマルチスレッド化し、異なるサーバーへの接続用に別のスレッドを開始することです。しかし、ORB_init
クラッシュします。
これが私がテストに使用する非常に短いコードです:
したがって、mt
がfalse
、すべてが正常である場合、コードを拡張してサーバー固有のオブジェクトを作成したり、さまざまな要求を実行したりできます。しかし、そうすると、2番目のスレッドはの呼び出しに失敗しmt
ます。以下のスタックトレースを参照してください。true
ORB_init
私は非常に単純で愚かな何かを見逃しているとかなり確信していますが、何ですか?
スタックトレース:
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 を使用しています。可能であれば、コマンド ライン オプションまたは何らかの方法で完全なホスト ファイル パス名を指定できることを期待しています。