DevBoi

[Spring] Invocation, RMI 관련 기초 개념 본문

Develop

[Spring] Invocation, RMI 관련 기초 개념

HiSmith 2021. 12. 20. 17:09
반응형

Spring invoaction이란 뭘까?

우선 invocation은 메소드 호출과 같은 의미이다. 메소드를 호출 이라는 의미이다.

 

1) 간단한 리플렉션 및 invoke 예제

우선 리플렉션으로, 클래스를 받아서, 다른 곳의 클래스의 메소드를 호출해보자

1) TestReflection으로, 리플렉션이 될만한 클래스, 그리고 하위에 메소드를 선언해준다.

 

2) 해당 다른 클래스에서 해당 클래스 파일을 리플렉션, 해당 메소드를 가져와서, 호출해보자

실제로, callbyName이라는 메소드를 invoke하고, 해당 값으로 콘솔에 gd가 출력이 되었다

 

이렇게 리플렉션으로 해당 클래스파일을 가져와서 호출할수 있다.

 

우선 리플렉션은, 그 클래스파일의 타입을 알지 못해도, 해당 클래스의 메소드를 사용할수있다.

해당 리플렉션은 저번 포스팅에서도 설명했듯이

두가지의 큰 문제가 있다.

 

1. 많은 사용은 성능 저하를 준다.

2. 컴파일시가 아닌 런타임시에만 발생하는 오류가 생길수있다. 따라서 예외처리를 잘해주어야한다는 것이다.

 

 

2.RMI의 의미와 이해

reflection은 자바에서 제공하는 api이다.

RMI라는 것은 많이 들어볼수있는 용어인데, 어떤것을 의미하는 것일까?

 

RMI는 분산되어 존재하는 객체간의 메시지를 전달할수있게 해주는 프로토콜이다.

쉽게 얘기하면, 분산 객체간의 통신 프로토콜이다.

많이들 사용하는 것은 Java RMI이고, RMI는 자체로 전체 모든 통신 방법을 포함한다.

 

Java RMI를 사용하는 이유

1. 구현하기 쉽다.

소켓으로 구현하면 까다롭지만, 자바는 socket 자체는 하부에 숨기고, 상위 레벨에서 수행하여

메소드를 호출하는 것과 같이 통신을 할수있게 해주어 구현하기 쉽다.

 

2. 신뢰성이 보장된다.
신뢰성이 보장됩니다. 상위 레벨의 통신계층에서 수행하기 때문에 통신에 대한 신뢰성이 확보되고 또한 자바 자체에서 제공하는 라이브러리이기 때문에 또 그렇다

 

3. Java 플랫폼을 사용한다.
자바 플랫폼을 사용한다는 점입니다자바의 RMI JVM에서 언제든 활용하고사용할 수 있습니다. 동종의 Java가 아니면 제약이 따를 수 있습니다. ( ex. sun java 와 gnu java 간의 RMI )


위 3가지를 요약하면, JVM에서 어디든 사용가능하고, 자바에서 쉽게 제공해주기 떄문에 JAVA RMI를 사용한다는 것이다.

 

반응형