【发布时间】:2018-04-16 20:29:52
【问题描述】:
我是 Java RMI 的新手,并尝试在不同的条件下进行一些学习。我不知道我正在尝试做的事情是否合适。到目前为止,我已经开发了一个 RMI 应用程序,其中客户端提供输入并获得阶乘。我有 4 类的应用程序。
那些连同代码如下。
服务器类 - 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 的值,它会得到一个错误回复。有可能吗?
如果客户端提供可接受的值,我也可以在服务器端显示阶乘值吗?
【问题讨论】: