Java/Spring/RMI — различия между версиями

Материал из Java эксперт
Перейти к: навигация, поиск
 
м (1 версия)
 
(нет различий)

Текущая версия на 06:16, 1 июня 2010

RMI Remoting

       
File: context.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <bean id="rmserver" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
     <property name="serviceUrl">
         <value>rmi://localhost/rmserver</value>   
     </property>
     <property name="serviceInterface">
         <value>rmserver</value>
     </property>
   </bean>
   <bean class="org.springframework.remoting.rmi.RmiServiceExporter">
     <property name="service">
         <value>rmservice</value>   
     </property>
     <property name="serviceName">
         <value>service1</value>   
     </property>
     <property name="serviceInterface">
         <value>rmservice</value>
     </property>
   </bean>
   <bean id="rmservice" class="RMIserviceimpl">
   </bean>
   <bean id="rmserverimpl" class="RMIserverimpl">
      <property name="rmserver"><ref bean="RMIserver"/></property>
   </bean>
   
</beans>

File: Main.java
import java.rmi.Naming;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
class rmserviceclient {
  public static void main(String args[]) throws Exception {
    Resource res = new ClassPathResource("context.xml");
    BeanFactory factory = new XmlBeanFactory(res);
    RMIServer bean1 = (RMIServer) factory.getBean("RMIServer");
    String r = bean1.getresult("asdf");
    System.out.println(r);
    // ////////////client/////////////////
    res = new ClassPathResource("context.xml");
    factory = new XmlBeanFactory(res);
    RMIservice bean2 = (RMIservice) factory.getBean("RMIservice");
    String s = bean2.getresult("AAA");
    System.out.println(s);
  }
}
interface RMIservice {
  String getresult(String s);
}
interface RMIServer extends Remote {
  String getresult(String s) throws RemoteException;
}
class RMIserviceimpl implements RMIservice {
  public static void main(String args[]) {
    System.out.println("ready");
  }
  public RMIserviceimpl() {
    System.out.println("constructor   ok");
  }
  public String getresult(String a) {
    String r = "Hi " + a;
    return r;
  }
}
class RMIserverimpl extends UnicastRemoteObject implements RMIServer {
  public static void main(String args[]) {
    try {
      RMIserverimpl ob = new RMIserverimpl();
      Naming.rebind("RMIServer", ob);
      System.out.println("ready");
    } catch (Exception e1) {
      System.out.println("registered");
    }
  }
  public RMIserverimpl() throws RemoteException {
    System.out.println("constructor   ok");
  }
  public String getresult(String a) throws RemoteException {
    String r = "hi " + a;
    return r;
  }
}