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よりもクライアント入力値以上ならば、それはエラー応答を取得します。それは可能ですか?
また、クライアントが受け入れられた値を提供する場合でも、サーバー側で階乗値を表示できますか?
ありがとうございました。私は、サーバー側の階乗値も表示できますか? –
はい。通常、RMIではビジネスロジックをサーバー側コードのみに記述し、RMIInterfaceオブジェクトを使用してサーバーを検索するクライアント側コードを作成し、パラメータとして渡す名前に関連付けられたリモートオブジェクトの参照を探します。 – utpal416