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 파일이 위치한 곳에서 실행시켜주도록 하자.
'Development > Java' 카테고리의 다른 글
Spring Framework의 mvc에서 https▶ http 로 redirect 되는 문제 해결 방법 (0) | 2019.06.25 |
---|---|
Spring Framework에서의 한글 깨짐 문제 (0) | 2019.06.18 |
[Spring Framework] java.util.zip.ZipException: invalid LOC header (bad signature) (0) | 2019.06.16 |
Multicast Programming. 멀티캐스트 프로그래밍. (0) | 2019.06.16 |
Java mail. 파일첨부하기. (0) | 2019.06.16 |
댓글