問題タブ [iiop]

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 投票する
2 に答える
8861 参照

c# - IDL または遅延バインディングのリモート呼び出しメソッドを使用せずに CORBA インターフェイスにアクセスする方法

SAP の「COM ライセンス ブリッジ」を使用して、ライセンス サーバーにアクセスし、システムのハードウェア キーをプログラムで照会しています (独自のライセンスなしで再利用するため)。これは、SAP Business one バージョン 2007A、2007B、および 8.8 では正常に機能しましたが、8.81 では、GetHardwareKey 関数を呼び出そうとするとメモリ例外が発生するため、COM ラッパーを更新せずに CORBA インターフェイスを更新したようです。

そこで、IIOP.NET をダウンロードして、独自のインターフェイスを作成する試みを開始しました。とにかく、私はそのCOMラッパーが好きではありませんでした。しかし、私は .NET リモート処理の宿敵に遭遇しました。つまり、サーバーとクライアントの両方で共通のインターフェイスを定義しないと、リモート メソッドを呼び出せないということです。IIOP.NET に含まれている IDL から CLS へのコンパイラを使用してみましたが、互換性のないインターフェイスに関するエラーが引き続き発生します (SAP は IDL ファイルを提供していません)。インターフェイスに互換性があるかどうかを IIOP と CORBA がどのように判断するのかわかりません。しかし、IIOP.NET コードをデバッグして、互換性がないにもかかわらず強制的にメソッドを実行しようとしたところ、必要なハードウェア キーの代わりに空の文字列が返されました。

私の次のステップは、偽のライセンス サーバーを実装し、実稼働クライアントからの要求を調べて、それらがどのように見えるかを特定することですが、私が経験した困難を考えると、あまり成功を期待してません。すでに .NET リモート処理の内部を覗いています。

私の本当の問題は、SAP Business One ハードウェア キーを取得または生成する方法ですが、そこから生じる疑問には次のようなものがあります。

  1. CORBA インターフェイスに関する情報を反映または照会するにはどうすればよいですか? NamingContext クラスの list メソッドを使用して、使用可能なオブジェクトのリストを取得できますが、オブジェクトで使用可能なメソッドを照会する方法があるかどうかわかりません。
  2. インターフェイスなしで .NET リモート処理メソッドを動的に呼び出すことはできますか? CORBA を動的に呼び出すための DII というものがあるようですが、IIOP.NET からの使用方法がわかりません。
  3. デリゲートまたは不完全なインターフェイスだけで .NET リモート処理メソッドを呼び出すことはできますか? dynamic キーワードを使用してみましたが、MarshalByRef リモート オブジェクトでメソッドを呼び出すことができませんでした... MarshalByRef インスタンスまたは何かにメソッドが存在しないと言ったと思います。ただし、これはIIOP.NET経由でのみ試しました(通常の.NETリモートで機能するかどうか疑問に思います)。
  4. .NET リモート処理フレームワークで Message インスタンスを作成または検査するにはどうすればよいですか?
  5. 基になるプロキシをバイパスして、リモート メッセージを直接送信または取得できますか?

編集: RepositoryID 属性を適用することで、IIOP.NET / CORBA に互換性のあるインターフェイスがあると信じ込ませることができました。

しかし、私はまだ空の文字列の結果を得ています。

編集 2:さらに実験とデバッグを行った後、応答メッセージには探しているデータが含まれていることがわかりましたが、おそらくインターフェイス定義が不適切なため、クライアント値に適切に解析されていません。応答処理をさらにデバッグすることが、インターフェースを修正する方法を理解するのに役立つことを願っています。不思議なことに、応答から最初に解析するのは null のボックス化された値であり、これは「出力文字列」パラメーターには適切ではないようです。

編集 3:ボックス化された値として扱われないようにするには、次のようなパラメーターに文字列属性を適用する必要があることがわかりました。

しかし、WideChar 属性にもかかわらず、CodeSet が WChar などをサポートしていないというエラーが表示されます。私はこれを理解することに本当に近づいています。

編集 4: WChar のコードセットを設定する方法に困惑しています。設定しないと、「WChar コードセットが指定されていないか、サポートされていません」というエラーが表示されます。これは、サーバーがデフォルトの文字セットをオーバーライドせずに Unicode 文字列を返したためです。クライアントからそれをオーバーライドする方法が見つかりません。私は電話してみました:

しかし、それはクライアント側には何の影響もないようです。コード例は、サーバー側でそれを呼び出すことを示しています。しかし、私はサーバーを書いていないので、それを制御することはできません. デフォルトの WChar CodeSet を強制的に有効にする目的で IIOP.NET コードを書き直す唯一のオプションはありますか?

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

c# - CORBA クライアントから WChar 文字列の CodeSet を指定する方法

この質問は、私が苦労してきた別の質問に関連しています: IDL または遅延バインドされたリモート呼び出しメソッドなしで CORBA インターフェイスにアクセスする方法

CodeSet が指定されていないというこのエラーを回避する方法について、私は本当に困惑しています。CodeSet を指定する方法を理解しようとして IIOP コードをトレースしてきましたが、プロファイルに関連付けられたタグ付きコンポーネントで指定できるようです。CORBA に慣れていないので、タグ付きコンポーネントとは何か、プロファイルとは何か、またはそれらを制御する方法はわかりませんが、ポータブル オブジェクト インターセプターを作成することによって影響を受ける可能性があるのではないかと考えています。その時点で、タグ付き CodeSet を追加できます。それが何かを意味する場合は、プロファイルへのコンポーネント。私は、IIOP.NET コードと Google から学べることだけを考えています。

誰かがこれを理解し、できればこれを制御するのを手伝ってくれませんか? サーバーがブラック ボックスで、文字列を出力するメソッドを呼び出すクライアントを作成する必要がある場合、どの WChar CodeSet を使用するかを IIOP.NET に指示して、指定されていないというエラーが発生しないようにする方法を教えてください。クライアントから OverrideDefaultCharSets を試しましたが、効果がないようです。その関数の IIOP サンプル コードは、サーバー側で使用されていることを示しています。

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

java - コールバックとしての RMI IIOP クライアント オブジェクト

rmi-iiop アプリケーション (非常に単純なチャット) を構築しようとしています。サーバーがクライアントと通信できるようにする必要があるため、接続ユーザーのインターフェイスを作成することを考えました。

次に、クライアント側でメソッド server can execute('receiveMessage') を持つ User クラスを作成します。

rmic -iiop Chat User生成するものを使用します_Chat_Tie.class _ChatInterface_Stub.class _User_Tie.class _UserInterface_Stub.class

すべてのファイルをサーバー側とクライアント側に配置してアプリケーションを実行すると、次のエラーが発生します。 java.rmi.StubNotFoundException: Stub class not found: User_Stub; nested exception is:

ここでの違いは、Chat クラスがサーバー上で作成され、クライアントがインターフェイスを使用してそれを使用することです (これは正常に動作します) が、ユーザー クラスはクライアント側で作成する必要があるため、クライアントは部分的にサーバーとして機能します。

私の質問はJava RMI - クライアントをサーバーにします が、rmi-ioop の実装に似ています。

つまり、ローカルオブジェクト参照をサーバーに送信して、操作を実行できるようにするにはどうすればよいですか?

ありがとう!レオンティ

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

java - リモート GlassFish サーバーからの JMS メッセージの受信

GlassFish (2.1) サーバーから JMS メッセージをリモートで受信しようとしています。ここの指示に従いました: http://www.tidytutorials.com/2009/06/jms-example-using-glassfish-and-remote.htmlまた、ここ: http://www.novell.com/documentation/ extend52/Docs/help/MP/jms/tutorial/pointToPoint-1.htm です が、うまくいかないようです。

テスト用に QueueConnectionFactory sampleFactory と Queue sampleQueue を作成しました。

次のコードを使用してメッセージを送信します。

私のクライアントは次のコードを使用しています:

キューとファクトリの両方が正常かどうかを確認するためにログを追加したため、正しく接続できているようです。キューまたはファクトリの名前を変更すると、エラーが発生するため、期待どおりに機能します。

ただし、実際にメッセージを受信することはできません。それらは問題なく送信されているように見えますが、クライアントには届きません。

何が間違っているのかについて何か考えはありますか?

ありがとう!

編集: ああ、GlassFish のビルトイン JMS プロバイダーを使用しています。

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

.net - CORBA IIOPNetおよびOmniORBpy、valuetypeparamの問題を伴うリモートメソッド呼び出し

私のスコープ:2つのアプリ用のCORBAソリューションを作成しようとしています。1つは.NET側(サーバー)で、もう1つはPython(クライアント)です。サーバーとIDLの生成にはIIOPNetを使用し、スタブの生成とクライアント呼び出しにはOmniORBpyを使用しています。一般に、典型的な例であるAdderのような単純な呼び出しで機能します。しかし、aiがカスタムクラスでメソッドを呼び出そうとすると、機能しません。

クライアントから呼び出されるサーバー側(オブジェクトの削除)にこのクラスがあります:

入力パラメータクラスタイプは、サーバー側で次のように宣言されます(非常に単純です)。

CLSIDLGeneratorを使用してIDLを生成し、後で「omniidl -bpython -CPython ...」のようなPythonスタブを、ここですべてがOKになるまで生成します。

したがって、サーバー(VSデバッグ環境)を起動し、クライアントコードでサービス名を解決し、リモートオブジェクトを正常に絞り込み、要求オブジェクトを作成しますが、これを実行しようとすると、次のようになります。

Pythonは警告なし、例外なし、あらゆる種類のメッセージで爆発します(omniORB構成ファイルのトレースラベルを最高[40]に更新しましたが、何もトレースされていません)、単にクラッシュします、私はたくさんのことを試しましたそして私はいつも同じ結果を得る。もちろん、問題はパラメータに関連しています(私は推測します)。

私は次のようにクライアント側を実行しています: python client.py -ORBInitRef NameService = corbaname :: localhost:8087

(私の最後のアプローチ:Pythonオブジェクト参照アーキテクチャと値によって渡された適合値型パラメーターは、ある時点で一致していません)

技術の詳細:NET 4.0、IIOPNet(最後)、Python 2.6、omniORB-4.1.5、omniORBpy-3.5。

すべての助けに感謝します、私はこれに少し立ち往生しています、ありがとう。


はい、MyRemoteObject用に生成されたIDLは次のとおりです:....。

....。

しかし、これについて言及したので、同じファイル(myRemoteObject.idl)に、InterfaceRequestタイプを表す構造がありますが、次のように空であることに気付きました。

そしてもちろん、私はそのIDLを適切なコンテンツで別の場所に生成します。

奇妙なことに、私がこのようなものを生成する順序は重要ですか?、明らかにここに何か問題がありますか?

最後に、これらのいくつかのクラス(リモートおよびパラメータータイプ)のPythonスタブは次のようになります。

そしてInterfaceRequest:

したがって、IDLが最後に完全に正しくない場合でも(推測するだけで)、Pythonスタブは適切なコンテンツと適切なパスで生成されます。

助けてくれてありがとう(私は本名を変更しました、IDは関係ありません)そしてとても大きな投稿について申し訳ありません。

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

glassfish - Glassfish-2.x クラスターに移動すると、接続が 1 時間後にタイムアウトする

最近、クラスター化されていない Glassfish-2.x から Glassfish-2.x クラスター化された環境に移行しました。移動の一部には、静的サーバーに接続する代わりに RMI over IIOP を使用することが含まれていました。クライアント アプリケーションが 1 時間以上アイドル状態にある場合を除いて、すべてがうまく機能します。サーバーへの接続がサーバーによって終了され、ルックアップを実行できなくなります。接続を数時間維持する方法を知りたいです。OS は、接続を 2 時間開いたままにするように設定されています (/proc/sys/net/ipv4/tcp_keepalive_time)。IIOP を介した接続に対してグラスフィッシュに設定されているタイムアウト制限はありますか? また、それを変更するにはどうすればよいですか?

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

ejb - Websphere 6.1:IIOPを使用した複数セル呼び出しでの問題

以下の問題についてサポートが必要です

2台のマシンがあり、これらの各マシンには2つのWebsphereセルがインストールされています。マシン1(X1およびX2セル)マシン2(Y1およびY2セル)

X1セルにWebアプリケーションがインストールされています。このセルには、EJBクライアントコンポーネントがあり、X1、X2、Y1、Y2の4つのセルのそれぞれにインストールされたEJBコンポーネントでビジネスメソッドを呼び出します。EJBクライアントコンポーネントは、InitalContextクラスを使用して、IIOPURLルックアップを使用してホームインターフェイスをルックアップします。

EJBクライアントコンポーネントとB1およびB2との通信は、問題なく適切に行われます。ただし、X2セルとの通信は適切に行われず(ログにホームインターフェイスのルックアップの問題は表示されません)、X1サーバー自体のビジネスメソッドを何らかの形で呼び出します。

main()メソッドを使用して4つのサーバーすべてを呼び出すプレーンJavaクライアントがありました。このセットアップは、2年間本番環境で稼働していました。しかし、main()の代わりにWebアプリケーションで4つのサーバーを呼び出すロジックを移動したため、問題が発生しました。

X1とX2が同じ物理マシン上にあることでどのような違いがありますか?

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

java - インターネット経由で RMI/IIOP をデバッグするには?

クライアント側でGlassfishクライアントコード(Glassfishクライアントとしてパッケージ化されていない)を使用し、サーバー側でGlassfishインスタンスを使用して、JNDI / RMI / IIOPを介して通信するクライアント/サーバーアプリケーションがあります。

どのマシンでも作成するドメインが完全に同一であり、正しく構成されていることを確認するために使用する Glassfish マルチモード スクリプトがいくつかあります。

ローカル ネットワークでそのスクリプトを使用して、自分のマシンのクライアント コードからリモートの Glassfish サーバー インスタンスにアクセスできることを確認しました (これはかなり妥当な推測でしたが、よくわからないことはすべてテストする傾向があります)。

次のステップは、そのクライアント/サーバー アプリケーションをインターネット経由で (代わりに「経由」と言うべきです) 動作させることです。クライアント コードは会社の LAN (つまり、マシン上) にあり、サーバー コードは Glassfish を実行している Amazon VM にあります。サーバ。何らかの理由で、リモートの Glassfish が Windows VM で実行されています。

明らかに(私がその質問をするとき、インターネット経由のテストが機能していないと安全に推測できます。そして、あなたは正しい.

そこで、さらに推測するために、自分のマシンとサーバーの両方でSmartSnifferを開始しました。

私のマシンでは、そのサーバー インスタンスに送信される TCP パケットが 1 つしか表示されません (何も返されません)。

サーバー インスタンスでは、入ってくる 1 つのパケット (クライアント クエリ) と出ていく 1 つのパケット (サーバーの応答) を確認できます。そのサーバーの回答は次のようになります。

[2012 年 4 月 4 日 11:47:13 AM:917] GIOP.......(................NameService....._is_a... ................NEO................ª.......(IDL:omg.org/SendingContext/ CodeBase:1.0........n.......172.27.63.145.Ô2....¯«Ë.......e..... ……………………………… .....&................(IDL:omg.org/CosNaming/NamingContext:1.0.

その 172.27.63.145 アドレスは、ローカル ネットワークでの私の IP です。

[2012 年 4 月 4 日 11:47:13 AM:917] GIOP........2........NEO........ ...0.......(IDL:omg.org/SendingContext/CodeBase:1.0...................46.137.114.## #.'5....¯«Ë........d.................................................... ... …………………………………………!……|…… ..........$... ...f........10.241.42.###.'6.@...... ..g........g........デフォルト....g... ..........+IDL:omg.org/CosNaming/NamingContextExt:1.0........¢.........10.241.42.208. '5...M¯«Ë.... ...d... S1AS-ORB........RootPOA.... TNameService.......... ……………………………… ………………

その 46.137.114.### は Amazon VM の外部 IP であり、10.241.42.### は Amazon Magic Virtual Server の内部 IP です。

サーバーが応答しているようです、いいえ?

しかし、その答えがネットワーク内の私のマシンに届くことはありません。

それで...どこで紛失したかを確認するにはどうすればよいですか?パケット スニファーは機能を果たしたようですが、どうすればよいですか?

: この質問は、「Glassfish クライアントを NAT 経由で GlassFish サーバーに接続する方法は?」の説明です。

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

corba - 異なる言語間の Corba 通信

異なる言語で実装されたオブジェクト間の通信をサポートするために、CORBA IDL はどのように使用されますか?

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

rmi - RMI(JRMP)サーバーはRMI IIOPから呼び出せますか?

RMI (JRMP) サーバーを RMI IIOP で呼び出すことはできますか?

RMI IIOP は、corba を使用した言語間通信に使用されることは知っていますが、JRMP を使用して実装された RMI サーバーを RMI IIOP クライアントから呼び出すことはできますか?

これは、RMI (JRMP) レジストリ ホストの IP アドレスを使用することで可能になると思います。