Hlavní menu

Nástroje

UvodDoKomponent / MessagePrinterSpring

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

Updated 17 December 2009, 14:56 by PremekBrada

UvodDoKomponent.MessagePrinterSpring History

Hide minor edits - Show changes to markup

17 December 2009, 14:56 by PremekBrada -
Changed line 53 from:

=java122 [=

to:

=xml [=

16 December 2009, 13:23 by Snajberk -
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 Snajberk -
Added lines 1-95:

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

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

<source>

    <bean id="MsgGenService?" class="org.springframework.remoting.rmi.RmiProxyFactoryBean?">
        <property name="serviceUrl" value="rmi://localhost: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>