RMI에서 간단한 전화 번호부 응용 프로그램을 개발 중입니다. 나는 RMI 레지스트리를 시작할 수 있으며 스텁 클래스도 구현 클래스에 대해 생성된다. 이제 cmd 프롬프트에서 Java PhoneBookServer 명령을 사용하여 서버를 시작했습니다. 다음 단계는 클라이언트를 시작하는 것입니다. 그래서 클라이언트를 시작한 후에 다음과 같은 오류가 발생합니다! 모두 클라이언트와 서버 프로그램은 하나의 폴더에 클라이언트가 Java RMI에서 서버에 연결하는 방법은 무엇입니까?
이전
import java.rmi.*;
import java.rmi.server.*;
public class PhoneBookServer {
public static void main (String[] args){
/*Create and install a security manager
SecurityManager appsm = System.getSecurityManager();
if(appsm==null){
System.setSecurityManager(new RMISecurityManager());
}*/
System.out.println("Server is started");
try
{
//create PhoneBookImpl
PhoneBookImpl Pb=new PhoneBookImpl();
Naming.rebind("rmi://127.0.0.1:1099/PhoneBook", Pb);
}
catch(Exception e)
{
System.out.println("Exception is:" +e);
}
}
}
클라이언트 프로그램
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.lang.*;
import java.io.*;
import java.util.Scanner;
public class PhoneBookClient {
public static void main (String[] args) throws Exception
{
/*Create and install a security manager
SecurityManager appsm = System.getSecurityManager();
if(appsm==null){
System.setSecurityManager(new RMISecurityManager());
}*/
String name,number,total,choice,id;
String ch;
PhoneBook pb=(PhoneBook)Naming.lookup("rmi://127.0.0.1:1099"+"/PhoneBook");
Scanner in=new Scanner(System.in);
System.out.println("1.Enter new record /n");
System.out.println("2.Look up record /n");
System.out.println("3.Delete record /n");
System.out.println("Enter your option");
ch=in.nextLine();
if(ch.equals("1")){
do{
System.out.println("Enter unique id:");
id=in.nextLine();
System.out.println("Enter name:");
name=in.nextLine();
System.out.println("Enter phone number:");
number=in.nextLine();
total=name+" "+number;
pb.new_record(id,total);
System.out.println("Enter 'q' to quit or enter 'p' to proceed");
choice=in.nextLine();
}while(!choice.equals("q"));
}
if(ch.equals("2")){
do{
System.out.println("Enter id to look up a record"+" enter 'q' to quit");
id=in.nextLine();
String record=pb.lookup_record(id);
System.out.println("The record is" +record);
}while(!id.equals("q"));
}
if(ch.equals("2")){
do{
System.out.println("Enter id to delete a record"+" enter 'q' to quit");
id=in.nextLine();
pb.lookup_record(id);
System.out.println("The record is deleted");
}while(!id.equals("q"));
}
}
}
을 다음과 내가 예외를 가지고 같이 내가 클라이언트와 서버에 대해 지금까지 사용 된 코드는 :
Connection refused to the host127.0.0.1 access denied.
그래서 내 cl에 보안 mnager를 설치합니다. ient 및 server 프로그램. 이제이 새로운 유형의 예외가 발생합니다. 문제를 어떻게 해결할 수 있습니까?
위의 질문에서 "이미지 설명 입력"을 클릭하면 cmd 프롬프트에서 오류를 볼 수 있습니다. –
새로운 예외는 무엇입니까? 무슨 문제? 예외 사항과 코드 *를 여기에 게시하십시오. * 대부분의 사람들은 링크를 따라 다니지 않아도되며 관련 자료가 모두 포함되어 있지 않으면 질문에 영구적 인 가치가 없습니다. – EJP
http://stackoverflow.com/questions/2427473/java-rmi-accesscontrolexception-access-denied –