고대부터 전해오던 RMI란 유물이 있지만 이 녀석은 은근히 마음에 들지 않는 녀석이다.
현재 Java간의 통신을 만들 두 시스템은 WAS 없이 데몬으로 실행되는 서버다.
서버1은 GUI와 TCP통신을 한다. 그러나 서버1과 서버2를 TCP통신을 하기에는 껄끄러운 면이 많다.
아직 고민중이지만, 통신을 하기 위해 고민했던 사항들을 나열해본다.
1. RMI
자바에서 표준으로 지원해주고 직렬화가 잘 되어있어서 편리한 면은 있지만 방화벽이 있는 경우에 문제가 있고 자바 서버(rmiregistry)를 실행해줘야 하며 통신을 하기 위한 클래스를 stub파일로 생성해주어야 하는 번거로운 면이 있다.
Spring에서도 RMI를 지원해준다고 해서 찾아보았지만 자바 서버를 실행시켜야 한다는 점과 stub파일을 만들어줘야 하는 것은 변함이 없다. 다만 RmiException만 빠져을 뿐이다.
2. DB
이전에 프로젝트에서 PRO*C를 통해 개발을 할 때 간혹 특이한 경우에 DB Table을 통해서 데이터를 주고 받은 경우가 있다. 특정 테이블의 데이터가 바뀌었을 경우에 changed테이블이라고 해서 바뀐 데이터만을 체크해서 가져가는 형태인데 아무래도 Table의 데이터를 계속 체크해야 되기 때문에 성능상 좋지 않다.
3. Http Invoker
근래 제일 인기가 많은 통신 방식이지 않은가 싶다. HTTP를 통해 통신하기 때문에 방화벽에도 문제가 없고 직렬화도 잘 되기 때문에 복잡한 객체 전달에도 문제가 없다. 다만, 통신하는 양쪽이 다 Spring Framework를 사용해야만 한다.
사실 지금 이 HTTP Invoker를 너무 쓰고 싶은데 현재 두 서버가 WAS위에서 구동되는 방식이 아니기 때문에 HTTP Invoker를 쓰려면 WAS위에서 구동하는 형태로 바꿔야 하기 때문에 고민이다.
4. 기타
JMS, JAX-RPC, Burlap, Hession들이 있지만 거의 고려조차 하지 않았다.
다음은 꾀 많은 도움을 받은 좋은 자료다.
Reference
[1] Chapter 17. Spring을 사용한 원격(Remoting)및 웹서비스 (http://openframework.or.kr/framework_reference/spring/ver1.2.2/html/remoting.html)
[2] 32.Spring Remoting (http://dev.anyframejava.org/docs/anyframe/4.5.1/reference/html/ch32.html)
[3] 8.Spring Remoting (http://dev.anyframejava.org/docs/anyframe/4.1.0/reference/html/ch08.html)
[4] 용식님 블로그 (http://devyongsik.tistory.com/145, http://devyongsik.tistory.com/147)
'Devlopment > Java' 카테고리의 다른 글
Java 실행 (0) | 2013.01.31 |
---|---|
Tomcat & Java의 memory leak 분석 (0) | 2012.07.17 |
Tomcat 및 Java ThreadPool에서 memory leak 현상 (3) | 2012.07.12 |
자바 기본 메소드의 구현 (0) | 2012.06.20 |
MyBatis NumberFormatException 문제 (0) | 2012.05.26 |
Netty서버에서 1024이상 받지 못하는 문제의 해결법 (0) | 2012.04.15 |
XmlGenerator - Java에서 XML 생성 (3) | 2012.03.09 |
JAVA.LANG.CLASS를 통한 동적 객체 생성 (0) | 2012.02.28 |
Java SNMP Programming (0) | 2012.02.13 |
Java와 C#(또는 C, C++) 통신에서 엔디안과 인코딩 처리 (0) | 2012.02.09 |