2017-11-04 9 views
0

Java RMIで新しく、さまざまな条件で学習を試みています。私は自分がしようとしていることが適切かどうかわからない。今まで私はクライアントが入力を与えるRMIアプリケーションを開発しました&それのための階乗を得る。私はアプリケーションのための4クラスがあります。Java RMIサーバーの実行中に変数値を宣言する

コード付きのものは次のとおりです。

Serverクラス - FacServer

import java.rmi.*; 
public class FacServer 
{ 
public static void main(String a[]) throws Exception 
{ 
    FacImpl obj = new FacImpl(); 
    Naming.rebind("FAC",obj); 
    System.out.println("Server started"); 
} 
} 

Clientクラス - FacClient

import java.util.*; 
import java.io.*; 
import java.rmi.*; 

public class FacClient 
{ 
public static void main(String a[]) throws Exception 
{ 
    FacInt obj = (FacInt)Naming.lookup("FAC"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    System.out.print("Enter a number: "); 
    String s = null; 
    try { 
    s = br.readLine(); 
    } catch(IOException ioe) { 
    System.err.println(ioe.getMessage()); 
    } 
    int r = Integer.parseInt(s); 
    int n= obj.fac(r); 

    System.out.println("Factorial is "+n); 
} 
} 

実装クラス - FacImpl

import java.rmi.server.*; 
public class FacImpl extends UnicastRemoteObject implements FacInt 
{ 
public FacImpl() throws Exception 
{ 
    super(); 
} 
public int fac(int x) 
{ 
int i,j=1; 
for(i=x;i>1;i--) 
j=j*i; 
return j; 
} 
} 

インタフェースクラス - FacInt

import java.rmi.Remote; 
public interface FacInt extends Remote 
{ 
public int fac(int x) throws Exception; 
} 

正常に動作します。今私はサーバー側でいくつかの制限を設定したいと思います。たとえば、サーバーは5以上の階乗の値を計算しません。私は実装クラスでそれを簡単に行うことができます。しかし、私はサーバーを起動するときに宣言したいと思います。たとえば、制限5を設定するには、次のようにサーバーを起動する必要があります。

のJava FacServer 5

だから、5よりもクライアント入力値以上ならば、それはエラー応答を取得します。それは可能ですか?

また、クライアントが受け入れられた値を提供する場合でも、サーバー側で階乗値を表示できますか?

答えて

0

あなたはいつもあなたが以下のようにそれを取得し、あなたのロジックを置くことができる

java FacServer -Dlimit="5" 

のようにして、Javaクラス内のサーバ側のJava System.propertiesを使用することができます。

int limit=Integer.parseInt(System.getProperty("limit")); 
+1

ありがとうございました。私は、サーバー側の階乗値も表示できますか? –

+0

はい。通常、RMIではビジネスロジックをサーバー側コードのみに記述し、RMIInterfaceオブジェクトを使用してサーバーを検索するクライアント側コードを作成し、パラメータとして渡す名前に関連付けられたリモートオブジェクトの参照を探します。 – utpal416

関連する問題