RMI 서버/Client 실행시 UnmarshalException 발생 해결 방법
RMI Server 프로그램을 작성 후 Server 실행시 아래와 같은 에러가 발생
java.rmi.ServerException: RemoteException occurred in server
thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested excep
tion is:
java.lang.ClassNotFoundException: Stub클래스파일_Stub <-- 자신의 클래스 파일에 따라 다를 수 있음.
위와 같은 에러가 발생했다면
1. 우선적으로 점검 할 것이 RMI시 사용할 Interface를 이용하여 생성한 클래스 파일의 Skeleton과 Stub 파일을 정상적으로 생성하여 존재하는지를 체크
2. RMI Server 실행시 codebase를 올바르게 지정해주었는가를 체크.
codebase 지정시에는 . 문자로 지정하지 않도록 주의한다.
-Djava.rmi.server.codebase=file:/./
위와 같이 . 문자로 지정시 rmiregistry 를 실행한 Directory Path가 codebase로 등록되게 되며, 등록된 Path를 기준으로 interface와 Skel, Stub 파일을 찾게 된다.
그러므로 ClassNotFoundException 이 발생하게 되는 것이고, 결과적으로 UnmarshalException이 발생한다.
따라서 codebase를 지정시에는 절대패스로 설정하여주거나 rmiregistry 를 interface와 Skel, Stub 파일의 위치에서 실생시켜주는 것이 문제 발생의 소지를 없애는 지름길이다.
RMI 서버 실행시 codebase를 굳이 "." 으로 설정하겠다고 고집피우는 프로그래머가 있다면... ㅡ.ㅡa 최소한 rmiregistry 를 실행시 RMI Server의 interface와 Skel, Stub 파일이 위치한 곳에서 실행시켜주도록 하자. ㅡ.ㅡa
'Development > Java' 카테고리의 다른 글
Eclipse 인터페이스는 영문, 도움말은 한글로 보기. (0) | 2021.03.24 |
---|---|
Eclipse 시작시 "프로시저 시작 시점 BaseDumpAppComatCache를 DLL KERNEL32.dll에서 찾을 수 없습니다." 오류 발생시 (0) | 2019.07.09 |
[Eclipse] Uncaught error fetching image: (0) | 2019.07.09 |
JTextField에 Tab키 Event 발생 (0) | 2019.07.09 |
keyTyped(KeyEvent e) 메소드내에서의 KeyEvent.VK_BACK_SPACE 오류 관련. (0) | 2019.07.09 |
댓글