Hlavní menu
Nástroje |
MessagePrinter? ve SpringuV tomto tutoriálu se používá SpringSource Tool Suite. Společná částAbych si vyzkoušel něco zajímavého, vytvořil jsem MessagePrinter? pomocí RMI. Server tedy svou službu zveřejní na určitém portu a klient se na tento port připojí, komunikace bude probíhat přes RMI. Klient bude požadovat následující rozhranní, zatímco server bude zveřejňovat službu, která ho implementuje. public interface IMsgGen { String getMsg(); } ServerMusí obsahovat implementaci rozhranní, definici beany a samozřejmě se musí beana zveřejnit. Implementacepublic class MsgGenImpl implements IMsgGen { @Override public String getMsg() { return "Hi there..."; } } Definice - BeanDefinition?.xmlVytvoření beany z implementace rozhranní je záležitost velice primitivní. <bean id="MsgGenService" class="cz.zcu.kiv.cosi.msgtalk.server.MsgGenImpl"></bean> Zveřejnění beany pak zařídí následující řádky. Vytvoří se beana třídy
<bean class="org.springframework.remoting.rmi.RmiServiceExporter"> <property name="serviceName" value="MyMsgGenService"/> <property name="service" ref="MsgGenService"/> <property name="serviceInterface" value="cz.zcu.kiv.cosi.msgtalk.IMsgGen"/> <property name="registryPort" value="1234"/> </bean> Spuštění serveruNyní je již vše připravené. Máme implementaci rozhranní, máme beanu této implementace a nastavili jsme její zveřejnění. Zbývá tedy "spustit server", kde vlastně nejde o nic jiné, než načtení kontextu v hlavní metodě. Spuštění bude tedy vypadat následovně. public static void main(String args[]) { ApplicationContext ctx = new ClassPathXmlApplicationContext("cz/zcu/kiv/cosi/msgtalk/server/beanDefinition.xml"); } KlientV klientovi se musí nastavit beana služby, kterou jsme zveřejnili díky serveru. Použitím kontextu se k ní pak dostaneme v hlavní metodě klienta. BeanDefinition?.xmlVytvoří se beana třídy <bean id="MsgGenService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> <property name="serviceUrl" value="rmi://localhost:1234/MyMsgGenService"/> <property name="serviceInterface" value="cz.zcu.kiv.cosi.msgtalk.IMsgGen"/> </bean> Spuštění klientaPo vytvoření kontextu velice jednoduše získáme zevřejněnou službu a zavoláme její metodu. ApplicationContext ctx = new ClassPathXmlApplicationContext("cz/zcu/kiv/cosi/msgtalk/client/beanDefinition.xml"); IMsgGen msgGen = (IMsgGen) ctx.getBean("MsgGenService"); System.out.println(msgGen.getMsg()); |