問題タブ [rmi]
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.
java - RMIが特定のポートセットのみを使用するようにするにはどうすればよいですか?
このアプリケーションでは、クライアント/サーバー通信にRMIを非常に異なる方法で使用しています。
- 表示するサーバーからクライアントにデータをプッシュします。
- クライアントからサーバーへの制御情報の送信。
- これらの制御メッセージからのコールバックは、サーバーからクライアントに戻るコードパスです(補足説明-これは一部のレガシーコードの副作用であり、長期的な意図ではありません)。
私たちがやりたいのは、すべてのRMI関連のコードが既知の指定されたポートのインベントリのみを使用するようにすることです。これには、レジストリポート(通常は1099と予想されます)、サーバーポート、およびコールバックから生じるすべてのポートが含まれます。
これが私たちがすでに知っていることです:
- LocateRegistry.getRegistry(1099)またはLocate.createRegistry(1099)は、レジストリが1099でリッスンしていることを確認します。
- UnicastRemoteObjectコンストラクター/exportObject静的メソッドをport引数とともに使用すると、サーバーポートが指定されます。
これらのポイントは、このSunフォーラムの投稿でも取り上げられています。
わからないのは、コールバックの結果としてサーバーに戻るクライアント接続が、デフォルトで匿名ポートではなく、指定されたポートでのみ接続されるようにするにはどうすればよいでしょうか。
編集:私の発見と問題をどのように解決したかを要約した長い答えを追加しました。うまくいけば、これは同様の問題を抱えている他の人の助けになるでしょう。
2番目の編集:私のアプリケーションでは、ソケットファクトリの作成と変更に競合状態があるようです。ユーザーがBeanshellスクリプトのデフォルト設定を上書きできるようにしたかったのです。残念ながら、最初のソケットがファクトリによって作成された後、スクリプトが大幅に実行されているようです。その結果、デフォルトのセットとユーザー設定からポートが混在しています。この質問の範囲外であるより多くの作業が必要になるでしょうが、私はそれをある時点でこれらの水域を踏まなければならないかもしれない他の人たちの興味のあるポイントとして指摘したいと思いました。
java - ArrayList の RMI で参照渡しが返されない
次のように定義された RMI 呼び出しがあります。
この関数はデータベース ルックアップを実行し、2 つの ArrayLists に値を設定します。呼び出し関数は何も取得しません。これは Vector 型で機能すると思います。
Vector を使用する必要がありますか、または 2 つの呼び出しを行わずにこれを機能させる方法はありますか。キーと値のペアを返すなど、おそらく使用する他のアイデアがいくつかありますが、これを機能させることができるかどうか知りたいです。
更新:
可能であれば、これまでに与えられたすべての回答を受け入れます。私はネットワーク コストを知らなかったので、2 つの ArrayList の代わりに LinkedHashMap を返すように関数を作り直すことは理にかなっています。
java - RMI サーバー: rmiregistry または LocateRegistry.createRegistry
サーバー側の RMI の場合、rmiregistry
プログラムを開始する必要がありますか、それとも単に呼び出す必要がありますLocateRegistry.createRegistry
か? 両方が可能である場合、長所と短所は何ですか?
web-services - RMIとWebサービス。Java2Javaリモーティングに最適なものは何ですか?
私はWebサービスとRMIの両方に不慣れであり、これらのアプリケーションがすべてJavaで記述されている場合、つまり異なるプログラミング言語が重要でない場合、異なるWebアプリケーション間でリモーティングを行うためのより良い方法はどちらかと思います(これはWSの利点)。
一方では、Webサービスを使用するときにパフォーマンスのオーバーヘッドがあると思いますが(誰かがそれを証明するための数字を持っていますか?)、他方では、Webサービスははるかに緩く結合されており、よりサービス指向のアーキテクチャー(SOA)を実装します(これはRMIでは不可能ですよね?)。
これはかなり一般的な質問ですが、あなたの意見は何ですか?
ありがとう
java - リモートメソッド呼び出しによってフェッチされた Hibernate エンティティを初期化する方法は?
Hibernate を使用してデータベースからエンティティのリストをロードするためにリモート サービス (RMI 経由など) を呼び出す場合、クライアントが必要とするすべてのフィールドと参照を初期化するには、どのように管理すればよいでしょうか?
例: クライアントがリモート メソッドを呼び出して、すべての顧客を読み込みます。クライアントは、顧客ごとに、顧客の購入商品リストへの参照を初期化する必要があります。
次の解決策を想像できます。
必要なフィールド (Hibernate.initialize() など) を初期化し、ドメイン オブジェクトをクライアントに返す、特別なクエリごとにリモート メソッドを記述します。
1. と同様ですが、DTO を作成します
クエリを複数のクエリに分割します。たとえば、1 つは顧客用、もう 1 つは顧客の記事用であり、クライアントが結果を管理できるようにします。
リモート メソッドは、クライアントによって作成され、サーバーによって実行される DetachedCriteria を取ります。
カスタムの「Preload-Pattern」を開発します。つまり、クライアントがプリロードするプロパティを明示的に指定する方法です。
java - Javaのみの環境におけるWebサービスとRMIの長所と短所は何ですか?
同じ会社がすべて Java で記述した分散アプリケーションを開発する場合、Web サービスと RMI のどちらを選びますか? パフォーマンス、疎結合、使いやすさなどの長所と短所は何ですか? WSを選ぶ人はいますか?RMI を使用してサービス指向アーキテクチャを構築できますか?
java - Java RMI:クライアントセキュリティポリシー
これは機能します。
これは動作しません。誰かが私に理由を説明してもらえますか?
java - Java RMIチュートリアル-AccessControlException:アクセスが拒否されました(java.io.FilePermission
昨日、JavaRMIを使い始めようとしました。このSunチュートリアル(http://java.sun.com/docs/books/tutorial/rmi/index.html)を見つけて、サーバーの実装から始めました。しかし、pogramを開始するたびに(rmiregistryが実行されている)、次のStackTraceでAccessControlExceptionが発生します。
私のserver.policyファイルは次のようになります。
しかし、私もこれを試しました...
...そしてこれ(そして他のいくつか:-():
しかし、いずれの場合も結果は同じです。はい、ポリシーファイルはパス内にあります(ポリシーファイルに間違ったステートメントを書き込むと、解析例外が表示されます)。他のいくつかの「/」と「\」の星座を試しましたが、効果がありません。
私はEclipseを使用しており、VM-パラメーターは次のようになっています。
コンパイルされたRemote-Interfaceクラスとinterface-implementationクラス(LoginImpl)クラスは、「C:/ ProjX / server / serverProj / bin /usermanager/」のパスにあります。スタブをインスタンス化してレジストリに再バインドする主な方法は、別のパッケージにあり、次のようになります。
誰かアドバイスはありますか?助けてくれてありがとう。
したがって、質問は同じです(java.rmi.UnmarshalExceptionは、コードベースの変更がAccessControlExceptionの解決策ではないことを示しています)。いいえ:プラグイン「GB」は購入したくありません;-)。
java - Naming.unbind() はいつ呼び出す必要がありますか?
RMI 経由で利用できるようにしているコードがいくつかあります。
私のプログラムが異常終了した場合、私は Naming.unbind() を呼び出しておらず、オブジェクトへの参照がおそらく RMI レジストリ内にぶら下がっており、同じ名前の Naming.bind() への後続の呼び出しは失敗します。
不正な参照が確実に片付けられるようにするにはどうすればよいですか?
linux - RMI アクセス用に iptables でポートを開くにはどうすればよいですか
Java アプリケーションから、RMI に使用されるポート 8088 が閉じられている開発サーバーに接続しようとしています。そのポートを開く方法についての助けに感謝します。