【问题标题】:Declare a variable value during running Java RMI server在运行 Java RMI 服务器期间声明一个变量值
【发布时间】: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 的值,它会得到一个错误回复。有可能吗?

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

【问题讨论】:

    标签: java server client rmi


    【解决方案1】:

    你总是可以在服务器端使用 java System.properties,比如

    java FacServer -Dlimit="5"
    

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

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

    【讨论】:

    • 非常感谢。我也可以在服务器端显示阶乘值吗?
    • 是的。通常在 RMI 中,您应该只在服务器端代码中编写业务逻辑,并编写客户端代码以使用 RMIInterface 对象查找服务器,该对象查找与我们作为参数传递的名称关联的远程对象的引用。
    猜你喜欢
    • 2015-07-04
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2016-01-11
    相关资源
    最近更新 更多