Hlavní menu
Nástroje |
UvodDoKomponent.MessagePrinterSpring HistoryHide minor edits - Show changes to output 17 December 2009, 14:56
by
- Changed line 53 from:
=java122 [= to:
=xml [= 16 December 2009, 13:23
by
- Changed line 80 from:
<source> to:
=java122 [= Changed lines 85-88 from:
</source> === Spuštění klienta === to:
=] !!! Spuštění klienta Changed line 91 from:
<source> to:
=java122 [= Changed line 95 from:
</source> to:
=] 16 December 2009, 13:18
by
- Added lines 1-95:
! MessagePrinter ve Springu V tomto tutoriálu se používá [[http://www.springsource.com/products/sts | SpringSource Tool Suite]]. !! Společná část Abych 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. =java122 [= public interface IMsgGen { String getMsg(); } =] !! Server Musí obsahovat implementaci rozhranní, definici beany a samozřejmě se musí beana zveřejnit. !!! Implementace =java122 [= public class MsgGenImpl implements IMsgGen { @Override public String getMsg() { return "Hi there..."; } } =] !!! Definice - BeanDefinition.xml Vytvoření beany z implementace rozhranní je záležitost velice primitivní. =java122 [= <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 @@RmiServiceExporter@@, které se nastaví: @@serviceName@@ - jméno RMI služby, které je v URL (RMI://IP:PORT/SERVICENAME) @@service@@ - služba, kterou zveřejňujeme @@serviceInterface@@ - interface, který služba implementuje @@registryPort@@ - port, na kterém bude služba zveřejněna =java122 [= <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í serveru Nyní 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ě. =java122 [= public static void main(String args[]) { ApplicationContext ctx = new ClassPathXmlApplicationContext("cz/zcu/kiv/cosi/msgtalk/server/beanDefinition.xml"); } =] !! Klient V 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.xml Vytvoří se beana třídy @@RmiProxyFactoryBean@@, která umí získat z url zveřejněnou službu. Potřebuje pouze dva logické parametry - url a interface služby <source> <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> </source> === Spuštění klienta === Po vytvoření kontextu velice jednoduše získáme zevřejněnou službu a zavoláme její metodu. <source> ApplicationContext ctx = new ClassPathXmlApplicationContext("cz/zcu/kiv/cosi/msgtalk/client/beanDefinition.xml"); IMsgGen msgGen = (IMsgGen) ctx.getBean("MsgGenService"); System.out.println(msgGen.getMsg()); </source> |