Sua tarefa é implementar e testar 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, leia as seções 2.4.2 (JBoss MBean Services) e 2.4.3 (Writing JBoss MBean Services) do JBoss Application Server Guide (disponível em http://labs.jboss.com/portal/jbossas/docs) e estude 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.
Sua solução deve rodar na versão 4.0.4 GA do JBoss. Use o programa ant para automatizar a geração do seu invocador. 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 EJBs compatíveis com a versão 2.1 da especificação EJB, que (em princípio) não devem precisar de alteração alguma para funcionarem com o JavaIIOPInvoker. Use, em seus testes, os componentes EJB 2.1 disponibilizados juntamente com este enunciado.
Dúvidas sobre este trabalho devem ser enviadas para a lista de discussão de SMA.
Bom trabalho!