Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564

Warning: Cannot modify header information - headers already sent by (output started at /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php:564) in /home/system/www/apache/wiki.kiv.zcu.cz/index.php on line 885
Wiki KIVu > UvodDoKomponent > MessagePrinterSpring (browse)

Hlavní menu

Nástroje

UvodDoKomponent / MessagePrinterSpring

View (print) - Edit page | Recent changes - Page history

Updated 17 December 2009, 14:56 by PremekBrada

MessagePrinter? ve Springu

V tomto tutoriálu se používá 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.

public interface IMsgGen {
        String getMsg();
}

Server

Musí obsahovat implementaci rozhranní, definici beany a samozřejmě se musí beana zveřejnit.

Implementace

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í.

<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

<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ě.

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

<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í klienta

Po 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());