spring RMI 응용

3100 단어 SpringBeanXMLJDK
더 읽 기
RMI 는 JDK 1.1 부터 나타 난 API 기능 으로 클 라 이언 트 가 원 격 대상 이 제공 하 는 서 비 스 를 사용 할 때 로 컬 대상 을 어떻게 사용 하 는 지 와 같 습 니 다.그러나 RMI 는 사용 할 때 일련의 복잡 한 절 차 를 밟 아야 합 니 다.예 를 들 어 서비스 인터페이스 가 정 의 될 때 자바 rmi.Remote 인터페이스,서비스 서버 가 실제 작업 을 할 때 자바 rmi.UnicastRemoteObject 분 류 를 계승 해 야 합 니 다.rmic 를 사용 하여 stub 와 skeleton 등 을 만들어 야 합 니 다.
org.springframework.remoting.rmi.RmiServiceExporter 를 통 해 Spring 은 이러한 절 차 를 간소화 하고 실제 적 으로 예 를 들 어 Spring 이 RMI 에서 의 사용 과 간 화 를 파악 하 며 먼저 서비스 대상 의 인 터 페 이 스 를 정의 합 니 다.
  •  ISomeService.java

  • package onlyfun.caterpillar;
    public interface ISomeService {
        public String doSomeService(String some);
        public void doOtherService(int other);
    }
    서비스 대상 의 인 터 페 이 스 는 java.rmi.Remote 인 터 페 이 스 를 계승 하지 않 고 실제 작업 할 때 java.rmi.UnicastRemoteObject 를 계승 하지 않 는 것 을 볼 수 있다.예 를 들 어:
  • SomeServiceImpl.java

  • package onlyfun.caterpillar;
    public class SomeServiceImpl implements ISomeService {
        public String doSomeService(String some) {
            return some + " is processed";
        }
       
        public void doOtherService(int other) {
            // bla.. bla
        }
    }

    , Bean , Spring 、 Bean, 、 RMI , :
  • rmi-server.xml

  • br>  "http://www.springframework.org/dtd/spring-beans.dtd">
       
        class="org.springframework.remoting.rmi.RmiServiceExporter">
           
               
           
           
                SomeService
           
           
                onlyfun.caterpillar.ISomeService
                   
       
       
    간단 합 니 다.org.spring from work.reoting.rmi.RmiServiceExporter 서비스 대상,이름과 대리 할 인 터 페 이 스 를 알려 주면 Spring 이 정의 파일 을 읽 고 Bean 인 스 턴 스 를 생 성 하면 RMI 서비스 가 시 작 됩 니 다.
    다음은 클 라 이언 트 가 어떻게 실제 작업 을 해 야 하 는 지 살 펴 보 겠 습 니 다.org.spring from work.reoting.rmi.RmiProxy Factory Bean 을 통 해 서비스의 URL,프 록 시 인 터 페 이 스 를 알려 주면 됩 니 다.마치 로 컬 에서 관리 하 는 서 비 스 를 사용 하 는 것 과 같 습 니 다.예 를 들 어 Bean 정의 파일 은 다음 과 같이 작성 할 수 있 습 니 다.
  • rmi-client.xml
  •  
    br> "http://www.springframework.org/dtd/spring-beans.dtd">


    class="org.springframework.remoting.rmi.RmiProxyFactoryBean">

    rmi://localhost/SomeService


    onlyfun.caterpillar.ISomeService



    다음은 간단 한 클 라 이언 트 가 원 격 서 비 스 를 호출 하 는 예 입 니 다.
    ....
            ApplicationContext context =
                    new FileSystemXmlApplicationContext("rmi-client.xml");
            ISomeService service = (ISomeService) context.getBean("someServiceProxy");
            String result = service.doSomeService("Some request");
            System.out.println(result);
    ....

    좋은 웹페이지 즐겨찾기