2017-11-04 11 views
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를 설정하려면 다음과 같은 방법으로 서버를 시작해야합니다.

자바 FacServer 5

그래서 클라이언트 입력하면 값이 5 개 이상이 오류 응답을 얻을 것이다. 그렇게 할 수 있습니까?

또한 클라이언트가 허용 된 값을 제공하는 경우 서버 측의 계승 값을 표시 할 수 있습니까?

답변

0

당신은 항상 당신이 아래처럼 페치 로직을 넣을 수 있습니다

java FacServer -Dlimit="5" 

처럼 당신의 자바 클래스 내부의 서버 측에서 자바 System.properties를 사용할 수 있습니다.

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

정말 고마워요. 서버 측에서도 계승 값을 표시 할 수 있습니까? –

+0

예. 일반적으로 RMI에서는 비즈니스 로직을 서버 측 코드에만 작성해야하며 클라이언트 측 코드는 RMIInterface 객체를 사용하여 서버를 찾으려면 작성해야합니다.이 객체는 매개 변수로 전달한 이름과 관련된 원격 객체에 대한 참조를 찾습니다. – utpal416