在运行Java RMI服务器

时间:2017-11-04 03:31:58

标签: java server client rmi

我是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,则会收到错误回复。是否可以这样做?

如果客户提供可接受的值,我也可以在服务器端显示因子值吗?

1 个答案:

答案 0 :(得分:0)

您始终可以在服务器端使用java System.properties,如

java FacServer -Dlimit="5"

在你的java类中,你可以像下面一样获取它并放置你的逻辑。

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