RMI 입문 (2) 인 스 턴 스 - 직접 코드 디 버 깅 성공
3886 단어 rmi
1. 원 격 인터페이스의 인 터 페 이 스 를 정의 합 니 다. 이 인터페이스의 모든 방법 은 Remote Exception 이상 이 발생 할 것 이 라 고 밝 혀 야 합 니 다.
2. 이 인 터 페 이 스 를 실현 하 는 클래스 를 정의 합 니 다.
3. RMIC 프로그램 을 사용 하여 원 격 실현 에 필요 한 잔 근 과 프레임 워 크 를 생 성 합 니 다.
4. 서버 를 만 들 고 2 에 적 힌 클래스 를 발표 하 며 server 에 포트 를 등록 합 니 다.
5. RMI 호출 을 위해 클 라 이언 트 프로그램 을 만 듭 니 다.
다음은 상세 한 설명 입 니 다.
1. 원 격 인터페이스의 인 터 페 이 스 를 정의 합 니 다. 이 인터페이스의 모든 방법 은 Remote Exception 이상 이 발생 할 것 이 라 고 밝 혀 야 합 니 다.
package com.liuc.server.inter;
import java.rmi.RemoteException;
public interface Hello extends java.rmi.Remote // Remote
{
public String SayHello() throws RemoteException; // remote
}
2. 이 인 터 페 이 스 를 실현 하 는 클래스 를 정의 합 니 다.
/*
* Stub -keepgenerated class
* cd F:\work\RMITest\WebContent\WEB-INF\classes
* rmic -keepgenerated com.liuc.server.inter.impl.HelloImpl
* HelloImpl_Stub
*/
package com.liuc.server.inter.impl;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import com.liuc.server.inter.Hello;
public class HelloImpl extends UnicastRemoteObject // UnicastRemoteObject
implements Hello {
public HelloImpl() throws RemoteException // Remote
{
}
public String SayHello() // I_Hello
{
return "Hello world !!";
}
}
3. RMIC 프로그램 을 사용 하여 원 격 구현 에 필요 한 잔 근 Stub 와 프레임 워 크 를 생 성 합 니 다.
대응 하 는 class 파일 의 경 로 를 찾 습 니 다. HelloImpl 의 설명 을 참조 하여 잔 근 과 프레임 워 크 를 만 들 고 원본 파일 을 HelloImpl 같은 디 렉 터 리 에 복사 합 니 다.
4. 서버 를 만 들 고 2 에 적 힌 종 류 를 발표 합 니 다.
package com.liuc.server;
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import com.liuc.server.inter.Hello;
import com.liuc.server.inter.impl.HelloImpl;
public class RMI_Server {
public static void main(String[] args) {
try {
Registry r = LocateRegistry.getRegistry(9999);
if(r != null) r = LocateRegistry.createRegistry(9999);
Hello hello = new HelloImpl(); //
Naming.rebind("rmi://127.0.0.1:9999/helloServer", hello); // RMI
System.out.println("=== Hello server Ready === ");
} catch (Exception e) {
e.printStackTrace();
}
}
}
5. RMI 호출 을 위해 클 라 이언 트 프로그램 을 만 듭 니 다.
package com.liuc.client;
import java.rmi.Naming;
import com.liuc.server.inter.Hello;
public class RMI_Client {
public static void main(String[] args) {
try {
Hello hello = (Hello) Naming.lookup("rmi://127.0.0.1:9999/helloServer"); // RMI
System.out.println(hello.SayHello()); //
} catch (Exception e) {
e.printStackTrace();
}
}
}
6. JRE 에서 포트 규칙 설정
이 때 프로그램 을 실행 하면 오류 가 발생 할 수 있 습 니 다. JRE 에 해당 하 는 포트 규칙 을 설정 해 야 합 니 다.
JRE 디 렉 터 리 를 찾 았 습 니 다. 제 디 렉 터 리 는 D: \ Program \ JDK 1.6 \ jre \ lib \ security 입 니 다.
java. policy 파일 을 열 고 마지막 에 아래 규칙 을 추가 하면 됩 니 다.
grant {
permission java.net.SocketPermission "*:1024-65535","connect,accept";
permission java.net.SocketPermission "*:80","connect";
};
나 는 사용 할 수 있 는 모든 포트 를 열 었 다. 실제로 사용 할 때 너 는 필요 에 따라 지정 한 포트 만 열 수 있다.
첨부 파일 은 프로젝트 의 소스 코드 파일 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Hello World on RMI1. 먼저 서버에서 발표할 인터페이스를 정의하고 원격 인터페이스를 계승해야 한다. 2. 서버에서 이 인터페이스를 실현하려면 Unicast Remote Object 클래스를 계승해야 한다. 3. 서버에서 디렉터리 서비...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.