next up previous
Next: About this document ... Up: ep2 Previous: Os Invocadores do JBoss

O Que Você Deve Fazer

Neste exercício você implementará um invocador IIOP que siga o esquema acima. Ao contrário do invocador IIOP existente no JBoss, o invocador que você escreverá será voltado exclusivamente para clientes Java, pois utilizará proxies dinâmicos no lado do cliente. Por esse motivo, vamos chamá-lo de JavaIIOPInvoker. Antes de escrever esse invocador você deve ler o material sobre service MBeans do JBoss (esse material está no xerox do CAMAT) e estudar detalhadamente o código de algum dos invocadores existentes no JBoss (o JRMPInvoker, por exemplo).

Além de ser um service MBean do JBoss, seu JavaIIOPInvoker deve ser um servente CORBA que implementa a seguinte interface IDL:

    #ifndef _INVOKER_IDL_
    #define _INVOKER_IDL_

    module org {

        module jboss {

            module invocation {

                module javaiiop {

                    typedef sequence<octet> JavaSerializedObject;

                    exception InvocationException {
                        JavaSerializedObject javaException;
                    };

                    interface Invoker {
                        readonly attribute string serverHostName;
                        JavaSerializedObject invoke(in JavaSerializedObject invocation)
                            raises(InvocationException);
                    };
                };
            };
        };
    };
Use o método startService() para registrar o servente CORBA com um POA persistente e para obter uma referência CORBA para a interface org.jboss.invocation.javaiiop.Invoker.

Escreva também a classe JavaIIOPInvokerProxy, que implementa um proxy invoker associado a um JavaIIOPInvoker. Esse proxy invoker possui uma IOR para o objeto CORBA remoto implementado por seu JavaIIOPInvoker. Ele implementa a interface org.jboss.invocation.Invoker simplesmente repassando as chamadas ao objeto CORBA remoto. É importante que o JavaIIOPInvokerProxy seja externalizável e que seus métodos readExternal() e writeExternal() sejam definidos de modo a permitir que ele seja passado por valor do servidor para os clientes.

Para testar e exercitar seu JavaIIOPInvoker, crie uma configuração do JBoss que use esse invocador como default. Implante num servidor com essa configuração os EJBs desenvolvidos no EP1, que (em princípio) não devem precisar de alteração alguma para funcionarem com o JavaIIOPInvoker.

Sua solução deve rodar em JBoss 3.x. Use o programa ant para automatizar a geração do seu invocador.

Este exercício deve ser feito preferencialmente em equipes de duas pessoas. O ideal é o esquema de ``programação pareada'' (pair programming) de XP. Como alguns podem ter restrições de horário que os impeçam de trabalhar assim, aceitarei também exercícios individuais.

Dúvidas sobre o enunciado devem ser enviadas para reverbel-sma@ime.usp.br.





Bom trabalho!


next up previous
Next: About this document ... Up: ep2 Previous: Os Invocadores do JBoss
Francisco Reverbel
2002-09-30