0
我是Java RMI中的新成員,並嘗試在不同條件下進行一些學習。我不知道我想要做什麼是否合適。到目前爲止,我已經開發了一個RMI應用程序,其中客戶端提供輸入&獲得該因子。我有4級的應用程序。在運行Java RMI服務器期間聲明變量值
那些隨着代碼如下。
服務器類 - 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");
}
}
客戶端類 - 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