Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Manejar Desafios de Interoperabilidade da Especificação WS-Security, Parte 4: Incluir um Terminal de Provedor J2EE 1.3 em um Serviço da Web J2EE 1.4

Zeynep Latif, Software Engineer, IBM
Photo of Zeynep Latif
Zeynep Latif é Software Engineer na organização Scenario Analysis Lab do IBM Software Group, localizada no Research Triangle Park, Carolina do Norte. Suas áreas de conhecimento incluem portlet e desenvolvimento de aplicativo J2EE, IBM Rational Application Developer e IBM Rational Software Architect para designa de aplicativo.
David Leigh, Advisory Software Engineer, IBM
David Leigh é Senior Software Engineer na organização Scenario Analysis Lab do IBM Software Group, localizada no Research Triangle Park, Carolina do Norte. Suas áreas de conhecimento incluem o IBM WebSphere Process Choreographer, segurança de aplicativo e servidor, alta disponibilidade, monitoramento, IBM AIX® e Linux®.

Resumo:  As primeiras instalações desta série de artigos ofereceu soluções alternativas para problemas de interoperabilidade do nível de especificação Web Security (WS-Security) — principalmente, incompatibilidades entre diferentes versões de WS-Security, evitando que um cliente Java™ Platform, Enterprise Edition (J2EE) 1.3 se comunique com um provedor de serviços da Web J2EE 1.4 quando WS-Security é necessário. Agora descubra como incluir um novo terminal de provedor de serviços da Web pode superar esse problema e interoperabilidade.

Visualizar mais conteúdo nesta série

Data:  16/Set/2011
Nível:  Avançado Também disponível em :   Inglês
Atividade:  421 visualizações
Comentários:  


Introdução

Este artigo mostra como implementar a solução alternativa de novo terminal de provedor para problemas de interoperabilidade do nível de especificação WS-Security. A abordagem envolve empacotar o aplicativo provedor J2EE 1.4 com dois terminais de serviços da Web: um fornecendo serviço para consumidores J2EE 1.3 e um fornecendo serviço para consumidores J2EE 1.4. A implementação dessa solução alternativa é um exercício básico de programação e empacotamento, que não requer nenhuma infraestrutura de middleware adicional. Esta abordagem escala bem quando há um grande número de aplicativos consumidores de serviços da Web.

Após incluir o novo terminal de provedor no aplicativo de serviço da Web, um número qualquer de aplicativos consumidores de serviços da Web J2EE 1.3 podem usá-lo. Uma observação importante: Esta abordagem é mais bem usada quando as classes de implementação de serviço da Web são JavaBeans ou Enterprise JavaBeans (EJBs) simples. Se a lógica de implementação de serviço da Web estiver contida em um servlet, em um componente Service Component Architecture (SCA) ou em um módulo de mediação Enterprise Service Bus (ESB), então, é mais difícil criar o projeto da Web servlet 2.2 (J2EE 1.3) e empacotá-lo com o aplicativo provedor de serviços da Web.

O esforço necessário para implementar esta abordagem é principalmente trabalho de desenvolvimento de aplicativos, apesar de esta solução alternativa apresentar outro terminal de serviço da Web que deve ser protegido e gerenciado pela equipe de operações. Além de desenvolvedores de aplicativos, esta abordagem também requer o envolvimento de testadores e da equipe de implementação.

Este artigo supõe que os desenvolvedores de aplicativos que irão implementar esta abordagem tenham qualificações básicas para o desenvolvimento de J2EE e serviços da Web.

Este artigo descreve em detalhes como implementar a abordagem de novo terminal de provedor usando um exemplo integralmente implementado que pode ser implementado em seu ambiente. A seção Visão geral da solução descreve a abordagem em detalhes; a seção Desenvolver a solução o guia pelas tarefas de implementação mostrando como nos aplicativos de amostra fornecidos foram desenvolvidos; e a seção Trabalhar com o aplicativo de amostra descreve como customizar e executar os aplicativos de amostra em seu ambiente de tempo de execução.


Visão geral da solução

A Figura 1 mostra uma visualização de tempo de execução detalhadas da solução alternativa de novo terminal de provedor. O aplicativo cliente J2EE 1.3 se comunica com o aplicativo terminal de serviço da Web J2EE 1.3 usando serviços da Web e a especificação WS-Security rascunho 13. O aplicativo cliente J2EE 1.4 se comunica com o aplicativo terminal de serviço da Web J2EE 1.4 usando serviços da Web e a especificação WS-Security versão 1.0. Em seguida, os aplicativos terminais de serviços da Web instanciam as classes de serviço da Web J2EE 1.4 incluídas na biblioteca compartilhada, que, por sua vez, faz chamada RMI/IIOP ao EJB de backend.

Em geral, supomos que você esteja tentando incluir um novo terminal de cliente e provedor J2EE 1.3 em seu provedor J2EE 1.4 existente. O aplicativo provedor J2EE 1.4 inclui um EJB que contém a lógica de negócios. Na Figura 1, as caixas beges representam componentes J2EE 1.4 existentes e as caixas rosas representam novos componentes, que este artigo mostra como criar e integrar ao arquivo EAR do aplicativo provedor J2EE 1.4.


Figura 1. Componentes da solução de novo terminal de provedor

A Tabela 1 mostra as tarefas e produtos necessários para criar a solução.


Tabela 1. Tarefas e produtos necessários para criar a solução
Tarefas Ambiente Funções responsáveis
1. Criar o terminal de serviço da Web J2EE 1.3 e a biblioteca compartilhada IBM® Rational® Application DeveloperDesenvolvedor de aplicativos
2. Modificar o terminal de serviço da Web J2EE 1.3. Rational Application DeveloperDesenvolvedor de aplicativos
3. Ligar a biblioteca compartilhada aos terminais de serviços da Web J2EE 1.3 e J2EE 1.4. Rational Application DeveloperDesenvolvedor de aplicativos
4. Ligar o EJB de backend à biblioteca compartilhada, terminais de serviços da Web J2EE 1.3 e J2EE 1.4. Rational Application DeveloperDesenvolvedor de aplicativos
5. Integrar o aplicativo cliente ao cliente de serviço da Web J2EE 1.3. Rational Application DeveloperDesenvolvedor de aplicativos
6. Incluir a segurança. Rational Application DeveloperDesenvolvedor de aplicativos
7. Implementar e realizar teste de unidade da solução em seu ambiente de tempo de execução. IBM WebSphere® Application ServerImplementador e engenheiro de teste

A implementação da tarefa 1 envolve o uso de assistentes apropriados no Rational Application Developer para criar terminais de serviços de Web J2EE 1.3 e J2EE 1.4 e uma biblioteca compartilhada. (Encontre um exemplo detalhado disso na seção a seguir Criar a solução.)

A implementação da solução (tarefa 7) requer que os seguintes aplicativos sejam implementados:

  • Aplicativos clientes
  • Aplicativo provedor, que inclui seguinte:
    • Os terminais de serviço da Web J2EE 1.3 e J2EE 1.4
    • A biblioteca compartilhada
    • O EJB de backend que contém a lógica de negócios para o serviço da Web

Desenvolver a solução

Esta seção descreve como modificar um aplicativo provedor de serviços da Web J2EE 1.4 para que possa ser usado com os clientes J2EE 1.3 e J2EE 1.4. Os fragmentos de código da Listagem 1 são obtidos dos aplicativos de amostra e são fornecidos para que seja possível ver como aplicar esta abordagem a seus próprios aplicativos. A Tabela 2 ilustra as tarefas necessárias.


Tabela 2. Etapas e produtos necessários para criar a solução
Tarefas Etapas Ambiente Funções responsáveis
1. Criar o terminal de serviço da Web J2EE 1.3 e a biblioteca compartilhada
  1. Crie um serviço da Web Java de esqueleto J2EE 1.3 com base em um Web Services Description Language (WSDL) existente.
  2. Crie um novo projeto Java.
Rational Application DeveloperDesenvolvedor de aplicativos
2. Modificar o terminal de serviço da Web J2EE 1.3.
  1. Remova o arquivo EAR do serviço da Web J2EE 1.3 do Unit Test Environment (UTE).
  2. Remova o projeto da Web do serviço da Web J2EE 1.3 de seu arquivo EAR.
  3. Exclua o projeto EAR do serviço da Web J2EE 1.3 da área de trabalho.
  4. Inclua o projeto da Web do serviço da Web J2EE 1.3 no arquivo EAR do serviço da Web J2EE 1.4.
  5. Modifique o arquivo webservices.xml do serviço da Web J2EE 1.3.
  6. Exclua todas as classes geradas a partir do serviço da Web J2EE 1.3.
Rational Application DeveloperDesenvolvedor de aplicativos
3. Ligar a biblioteca compartilhada aos terminais de serviços da Web J2EE 1.3 e J2EE 1.4.
  1. Inclua o projeto Java da biblioteca compartilhada no arquivo EAR do serviço da Web J2EE 1.4 como uma biblioteca de utilitários.
  2. Mova todas as classes geradas do serviço da Web J2EE 1.4 para o projeto Java da biblioteca compartilhada.
  3. Inclua a biblioteca compartilhada como uma dependência JAR no serviço da Web J2EE 1.3 e J2EE 1.4.
Rational Application DeveloperDesenvolvedor de aplicativos
4. Ligar o EJB de backend à biblioteca compartilhada, terminais de serviços da Web J2EE 1.3 e J2EE 1.4.
  1. Inclua os arquivos EJB e EJBClient.jar J2EE 1.4 no arquivo EAR do serviço da EJB J2EE 1.4.
  2. Inclua o arquivo EJBClient.jar J2EE 1.4 como uma dependência JAR no projeto Java da biblioteca compartilhada.
  3. Edite a classe SOAPImpl da biblioteca compartilhada e inclua o código necessário para chamar o EJB de backend J2EE 1.4.
  4. [Opcional] Crie interfaces EJB locais.
  5. Edite o arquivo web.xml dos projetos da Web de serviços da Web J2EE 1.3 e J2EE 1.4 para incluir a referência de recurso EJB usada pela biblioteca compartilhada.
Rational Application DeveloperDesenvolvedor de aplicativos
5. Integrar o aplicativo cliente ao cliente de serviço da Web J2EE 1.3. Integre o aplicativo cliente ao cliente de serviço da Web J2EE 1.3.Rational Application DeveloperDesenvolvedor de aplicativos
6. Incluir a segurança. Configure o aplicativo cliente, os terminais de serviços da Web J2EE 1.3 e J2EE 1.4 para segurança. Rational Application DeveloperDesenvolvedor de aplicativos
7. Implementar e realizar teste de unidade da solução em seu ambiente de tempo de execução. Implemente e teste os aplicativos da solução empacotados no ambiente de tempo de execução.WebSphere Application Server Implementador e engenheiro de teste

Tarefa 1: Criar o terminal de serviço da Web J2EE 1.3 e a biblioteca compartilhada

Esta seção explica as etapas básicas necessárias para criar o J2EE 1.3 e a biblioteca compartilhada. (Consulte a seção Recursos para links para informações adicionais sobre operações relacionadas a clientes de serviços da Web e assistentes básicas do Rational Application Developer para implementar as etapas a seguir.)

  1. Crie um novo serviço da Web Java bean de esqueleto J2EE 1.3 a partir de um WSDL existente usando o Web Service Wizard. Forneça o seguinte no painel Service Deployment Configuration:
    1. Selecione 1.3 como a versão de J2EE.
    2. Forneça um novo projeto da Web como um projeto de serviço e forneça um novo projeto EAR.
  2. Crie um projeto Java que será usado como uma biblioteca compartilhada, usando o assistente Java fornecido pelo Rational Application Developer.

Tarefa 2: Modificar o terminal de serviço da Web J2EE 1.3

Você está pronto para executar esta etapa após concluir a tarefa 1 conforme mostrado na Tabela 2. Esta seção explica as atualizações necessárias para o terminal de serviço da Web J2EE 1.3. (Consulte Recursos para links para informações adicionais sobre as operações básicas do Rational Application Developer para implementar as etapas abaixo.)

  1. Exclua o projeto EAR do serviço da Web J2EE 1.3 de seu UTE, porque o Rational Application Developer implementa automaticamente os projetos EAR de serviços da Web para o UTE na criação.
  2. Remova o projeto da Web do serviço da Web J2EE 1.3 de seu arquivo EAR usando as instruções a seguir:
    1. No projeto EAR de serviço da Web J2EE 1.3, abra o arquivo META-INF/application.xml .
    2. Clique na guia Module e clique no espiral Modules .
    3. Selecione o arquivo .war do projeto da Web do serviço da Web J2EE 1.3, em seguida, clique em Remove.
    4. Salve o arquivo application.xml .
  3. Exclua o projeto EAR do serviço da Web J2EE 1.3 da área de trabalho do Rational Application Developer.
  4. Inclua o projeto da Web do serviço da Web J2EE 1.3 no arquivo EAR do serviço da Web J2EE 1.4 existente fazendo o seguinte:
    1. No projeto EAR de serviço da Web Java bean de esqueleto J2EE 1.4 existente, abra o arquivo META-INF/application.xml .
    2. Clique na guia Module e clique no espiral Modules .
    3. Clique em Add.
    4. Selecione o projeto da Web para o terminal J2EE 1.3, em seguida, clique em Finish.
    5. Salve o arquivo META-INF/application.xml .
  5. Modifique o arquivo webservices.xml , localizado no projeto da Web dos serviços da Web J2EE 1.3, para que a Service endpoint interface na guia Port Component corresponda aquela especificada no arquivo webservices.xml do projeto da Web J2EE 1.4 existente. Para implementar isso, faça o seguinte:
    1. No projeto da Web de serviços da Web J2EE 1.3, abra o arquivo webservices.xml .
    2. Clique na guia Port Components e clique no espiral Port component implementation details .
    3. Atualize a Service endpoint interface de *_Port para *_PortType.
    4. Salve o arquivo webservices.xml .
  6. Exclua todas as classes de serviço da Web geradas sob o diretório JavaSource do projeto da Web J2EE 1.3.

Tarefa 3: Ligar a biblioteca compartilhada aos terminais de serviços da Web J2EE 1.3 e J2EE 1.4

Esta seção explica as etapas necessárias para ligar a biblioteca compartilhada, que é um projeto Java, a terminais de serviços da Web J2EE 1.3 e J2EE 1.4 Web. (Consulte Recursos para links para informações adicionais sobre as operações básicas do Rational Application Developer para implementar as etapas abaixo.)

  1. Inclua o projeto Java no arquivo EAR J2EE 1.4 como uma biblioteca de utilitários fazendo o seguinte:
    1. No projeto EAR de serviço da Web Java bean de esqueleto J2EE 1.4, abra o arquivo META-INF/application.xml .
    2. Clique na guia Module e clique no espiralProject Utility JARs .
    3. Clique em Add.
  2. Os aplicativos terminais J2EE 1.3 e J2EE 1.4 precisam acessar classes de serviço da Web J2EE 1.4 usando a biblioteca compartilhada. Portanto, é necessário mover todo o código de serviço da Web gerado sob o diretório JavaSource do projeto da Web J2EE 1.4 para o projeto Java da biblioteca compartilhada. Segue uma lista de arquivos a serem movidos:
    • Uma classe Java para cada tipo de dados complexo. O nome da classe relacionada do aplicativo de amostra é SampleOperationResponse.
    • Um serializador, um desserializador e uma classe auxiliar para cada tipo de dados complexo, *_Ser, *_Deser e *_Helper, respectivamente. Nomes de classes relacionadas do aplicativo de amostra são SampleOperationResponse_Ser, SampleOperationResponse_Deser e SampleOperationResponse_Helper.
    • Uma interface de serviço e sua implementação, *_PortType e *SOAPImpl, respectivamente. Nomes de classes relacionadas do aplicativo de amostra são SampleService_PortType e SampleServiceSOAPImpl.

    A Figura 2 mostra os arquivos relocalizados para o aplicativo de amostra.



    Figura 2. Arquivos relocalizados


  3. Os aplicativos terminais J2EE 1.3 e J2EE 1.4 precisam ter conhecimento das classes de serviço da Web em um arquivo JAR dependente. Portanto, inclua o projeto Java como uma dependência JAR nos projetos da Web J2EE 1.3 e J2EE 1.4 fazendo o seguinte:
    1. No projeto EAR de serviço da Web Java bean de esqueleto J2EE 1.4, abra o arquivo META-INF/application.xml .
    2. Clique na guia Module e clique no espiralProject Utility JARs .
    3. Clique em Add e selecione o projeto Java.
    4. Clique em Finish e salve o arquivo application.xml .
    5. Implemente as seguintes instruções para cada um dos projetos da Web de serviços da Web J2EE 1.3 e J2EE 1.4:
      • Acesse o projeto da Web apropriado, destaque-o e clique no mesmo com o botão direito do mouse.
      • Clique em Properties > Java JAR Dependencies.
      • Em Java JAR Dependencies, selecione o projeto Java.
      • Clique em OK.

Tarefa 4: Ligar o EJB de backend à biblioteca compartilhada e aos terminais de serviços da Web J2EE 1.3 e J2EE 1.4

Esta seção explica as etapas necessárias para ligar o EJB de backend à biblioteca compartilhada e aos terminais de serviço da Web J2EE 1.3 e J2EE 1.4.

  1. Inclua o arquivo EJB e EJBClient.jar J2EE 1.4 no arquivo EAR J2EE 1.4 fazendo o seguinte:
    1. No projeto EAR de serviço da Web Java bean de esqueleto J2EE 1.4, abra o arquivo META-INF/application.xml .
    2. Clique no botão Módulo e clique no espiralModules .
    3. Clique em Add.
    4. Selecione o projeto EJB e clique em Finish.
    5. Se o arquivo EJBClient.jar não estiver incluído no espiral Project Utility JARs, então siga as instruções abaixo:
      1. Clique na guia Module e clique no espiral Project Utility JARs .
      2. Clique em Add.
      3. Selecione o EJB client projecte clique em Finish.
    6. Salve as mudanças feitas no arquivo application.xml.
  2. Inclua o arquivo EJBClient.jar J2EE 1.4 como uma dependência JAR no projeto Java de bibliotecas compartilhadas fazendo o seguinte:
    1. Acesse o projeto Java, destaque-o e clique no mesmo com o botão direito do mouse.
    2. Clique em Properties > Java JAR Dependencies.
    3. Em Java JAR Dependencies, selecione o EJB client project.
    4. Selecione o JAR/Módulo apropriado e clique em OK.
  3. Edite a classe SOAPImpl das bibliotecas compartilhadas e inclua o código necessário para chamar o EJB de backend J2EE 1.4. As etapas abaixo mostram o uso do recurso EJB Snippets, que insere código para chamar o EJB de backend:
    1. Acesse J2EE perspective.
    2. Abra o arquivo SampleServiceSOAPImp.java .
    3. Coloque o cursor sobre o arquivo.
    4. Clique na guia Snippets na parte inferior esquerda.
    5. Expanda EJB drawer.
    6. Dê clique duplo em Call an EJB create method.
    7. Selecione um bean de sessão apropriado no painel Select EJB Reference Owner, em seguida, clique em Next.
    8. Clique em New EJB Reference no painel Select Reference.
    9. Selecione o EJB session bean no painel EJB Reference.
    10. Escolha Local para Ref Type. Se seu EJB de backend não contiver interfaces locais, siga a tarefa opcional abaixo para incluí-las em seu EJB de backend.
    11. Clique em Finish em EJB Reference, em seguida, clique em Finish no painel Select Reference.
    12. Inclua manualmente o código necessário no código gerado para trabalhar com seu EJB de backend. O fragmento de código na Listagem 1 mostra uma amostra para o código gerado e incluído manualmente.

      Listagem 1. Fragmento de classe de implementação de serviço da Web
      package com.test;
                              
      import com.ibm.etools.service.locator.ServiceLocatorManager;
      import com.test.sessionbean.SampleEJBLocalHome;
      import com.test.sessionbean.SampleEJBLocal;
      
      public class SampleServiceSOAPImpl implements com.test.SampleService_PortType 
      {
      	private final static String STATIC_SampleEJBLocalHome_REF_NAME = 
      "ejb/SampleEJB";
      	private final static Class STATIC_SampleEJBLocalHome_CLASS = 
      SampleEJBLocalHome.class;
          
          public com.test.SampleOperationResponse 
                       sampleOperation(java.lang.String sampleOperationRequest)
                       throws java.rmi.RemoteException 
          {   
              SampleEJBLocal aSampleEJBLocal = createSampleEJBLocal();
              
      /**********************************************************************/
      /* Begin manually added code to work with the sample back-end EJB     */
      /**********************************************************************/
      SampleOperationResponse sampleOperationResponse = new SampleOperationResponse();
      sampleOperationResponse
          .setServiceResponseString("Request string was: " + sampleOperationRequest);
      
      sampleOperationResponse
          .setServiceUserName("Caller is " + anEJBBBackendLocal.getCallerName());
      return sampleOperationResponse;
      /**********************************************************************/
      /* End of manually added code                                         */
      /**********************************************************************/
          }
      
          protected SampleEJBLocal createSampleEJBLocal() 
          {
      SampleEJBLocalHome aSampleEJBLocalHome = 
              (SampleEJBLocalHome) ServiceLocatorManager
      		 .getLocalHome(STATIC_SampleEJBLocalHome_REF_NAME,
      			STATIC_SampleEJBLocalHome_CLASS);
      		try 
                      {
      			if (aSampleEJBLocalHome != null)
      				return aSampleEJBLocalHome.create();
      	         } catch (javax.ejb.CreateException ce) 
                       {
      			        // TODO Auto-generated catch block
      			        ce.printStackTrace();
      	         }
      	         return null;
           }
      }
                                  

  4. Siga as instruções abaixo para incluir Local home interface e Local interface classes em seu projeto de cliente EJB.
    1. No projeto EJB de backend, abra o arquivo META-INF/ejb-jar.xml .
    2. Clique na guia Bean e destaque um bean apropriado.
    3. Clique no espiral Class and Interface Files , em seguida, clique em Add.
    4. No painel Add Client View, selecione Add new local and local interfaces.
    5. Clique em Finish.
    6. Salve o arquivo META-INF/ejb-jar.xml .
    7. Agora é possível promover o método EJB de backend relacionado para Local.
  5. A última etapa para implementar esta tarefa é editar o arquivo web.xml dos projetos da Web J2EE 1.3 e J2EE 1.4 para incluir a referência de recurso EJB usada pela classe *SOAPImpl localizada na biblioteca compartilhada:
    1. Abra o arquivo WEB-INF/web.xml .
    2. Clique na guia References , em seguida, clique em Add.
    3. Selecione a referência EJB no painel Add Reference e clique em Next.
    4. No painel Add String for Web EJB reference, localize e destaque o bean de sessão.
    5. Certifique-se de que Ref Type seja Local.
    6. Clique em Finish e salve o arquivo web.xml .

Tarefa 5. Integrar o aplicativo cliente J2EE 1.3 ao novo terminal de provedor J2EE 1.3

Para implementar esta etapa:

  • Consulte Parte 3 desta série para obter explicações detalhadas sobre como integrar um cliente de serviço da Web a seu aplicativo cliente. O artigo demonstra a integração de um cliente de serviço da Web a um bean de sessão. É possível adotar a mesma técnica de integração a seu aplicativo cliente.
  • Consulte os links do WebSphere Application Server Information Center e do WebSphere Version 6 Web Services Handbook Development and Deployment em Recursos para obter explicações detalhadas sobre como implementar esta etapa.

Tarefa 6: Incluir a segurança

Consulte os links do WebSphere Application Server Information Center e do WebSphere Version 6 Web Services Handbook Development and Deployment em Recursos para obter explicações detalhadas sobre como implementar esta etapa.

Tarefa 7: Implementar e realizar teste de unidade da solução em seu ambiente de tempo de execução

Consulte o link de ajuda do produto Rational Application Developer em Recursos para obter explicações detalhadas para implementar esta etapa.


Trabalhar com o aplicativo de amostra

Esta seção explica como implementar os aplicativos de amostra completamente implementado em seu ambiente de tempo de execução. Para implementar as amostras, você precisa do WebSphere Application Server V6.0 ou posterior para executar o aplicativo provedor. O ambiente de tempo de execução deve ser configurado para usar segurança global e para usar autenticação Lightweight Third Party Authentication (LTPA) com a mesma chave LTPA.

A primeira etapa para trabalhar com o aplicativo de amostra é fazer download dos arquivos fornecidos na seção Download . São eles:

  • SampleProjects.zip, que inclui código de origem dos aplicativos de amostra.
  • SampleService.ear, que é o archive implementável para o aplicativo provedor.
  • SampleClient.ear, que é o archive implementável para o aplicativo cliente J2EE 1.3.

Você está pronto para executar uma das ações a seguir após fazer download dos arquivos fornecidos:

  • Executar o cliente e o aplicativo provedor em sistemas WebSphere Application Server remotos, conforme mostrado na Figura 1. Siga as tarefas de um a seis para customizar e executar os aplicativos de amostra remotamente, conforme mostrado na lista abaixo.
  • Executar o cliente e o aplicativo provedor localmente no mesmo sistema WebSphere Application Server. Ignore as tarefas um a três e siga as tarefas quatro a seis, conforme mostrado na lista abaixo.

Para executar os aplicativos de amostra local ou remotamente, você deve executar as tarefas a seguir:

  1. Importar o código de origem dos aplicativos de amostra para uma área de trabalho do Rational Application Developer.
  2. Atualizar os arquivos de origem necessários para refletirem os nomes de hosts de seu ambiente de tempo de execução.
  3. Empacotar os componentes a solução.
  4. Implementar os aplicativos no ambiente de tempo de execução.
  5. Configurar a segurança no WebSphere Application Server.
  6. Executar os aplicativos de amostra.

O restante desta seção descreve essas tarefas em detalhes.

Tarefa 1: Importar o código de origem dos aplicativos de amostra

O código de origem dos aplicativos de amostra, que são compostos por vários artefatos mostrados na Tabela 3, está contido no arquivo SampleProjects.zip (consulte a seção Download . Nós usamos o recurso de exportação Project Interchange do Rational Application Developer para exportar o código de origem da solução para o arquivo SampleProjects.zip. Esse recurso ajuda a importar o código de origem para outra área de trabalho do Rational Application Developer facilmente; veja como:

  1. Clique em File > Import e selecione Project Interchange.
  2. Clique em Next, forneça o local do arquivo compactado, em seguida, selecione os projetos fornecidos.

Tabela 3. Lista de artefatos do aplicativo de amostra
Componente Tipo de projeto Nome do projeto Descrição
Arquivo EAR do provedor de serviços da WebArquivo EARSampleService.earEste projeto inclui o arquivo application.xml.
Terminal de serviço da Web J2EE 1.3WebSampleService13WebEste projeto inclui os arquivos web.xml e webservices.xml.
Terminal de serviço da Web J2EE 1.4WebSampleService14WebEste projeto inclui os arquivos web.xml e webservices.xml.
Biblioteca compartilhadaJavaSampleServiceJAR Este projeto inclui as classes de serviço da Web J2EE 1.4 a seguir:
  • Uma classe Java para o tipo de dados complexo no WSDL a ser transferida para e a partir do serviço, SampleOperationResponse
  • Uma interface de serviço da Web, classe SampleService_PortType
  • Um localizador de serviço, classe SampleServiceSOAPImpl
EJB de backendEJBSampleEJBServiceEste projeto inclui o bean de sessão EJB SampleEJBBean.
EJB de backendJavaSampleEJBServiceClient Este projeto inclui as seguintes classes:
  • Uma interface inicial remota do bean de sessão, SampleEJBHome
  • Uma interface inicial local do bean de sessão, SampleEJBLocalHome
  • Uma interface remota do bean de sessão, SampleEJB
  • Uma interface local do bean de sessão, SampleEJBLocal
Cliente J2EE 1.3WebSampleClient Este projeto inclui os dois tipos de classes a seguir:
  • Um servlet J2EE 1.3 criado com a especificação Servlet 2.3, SampleServlet2_3
  • Uma classe auxiliar para o servlet, ProviderAccessBean
Cliente J2EE 1.3Arquivo EARSampleClient.earEste projeto inclui os arquivos web.xml e webservices.xml.

Tarefas 2 - 4: Atualizar, empacotar e implementar a solução de amostra no ambiente de tempo de execução

Execute as etapas a seguir:

  1. O código de origem do aplicativo cliente deve ser customizado para refletir os nomes de hosts de seu ambiente de tempo de execução. Forneça um nome de host em dois dos arquivos, conforme mostrado na lista a seguir. Como uma conveniência, procure a cadeia de caractere localhost e substitua-a por um nome de host apropriado.
    • A classe de localizador localizada no projeto SampleClient, com.test.SampleService_ServiceLocator.java
    • O arquivo WSDL localizado no diretório META-INF/wsdl do projeto SampleClient, sampleService.wsdl
  2. Após customizar os arquivos necessários, você estará pronto para criar um pacote implementável para o servlet. Implemente o arquivo SampleService.ear fornecido para o aplicativo provedor de serviços da Web no WebSphere Application Server, assim como o servlet para o cliente, SampleClient.ear.

Tarefa 5. Executar a solução de amostra

Você agora está pronto para executar a solução seguindo estas etapas:

  1. Execute o servlet J2EE 1.3, que exibe a página de entrada, conforme mostrado na Figura 3.
  2. Quando for desafiado a autenticar no servlet, autentique usando qualquer ID de usuário que faça parte do registro usado para segurança global.
  3. Forneça uma cadeia de caractere de entrada no campo exibido na página, em seguida, clique no botão Send .

    Figura 3. Página de entrada


    O servlet chama o terminal de serviço da Web J2EE 1.3 com a cadeia de caractere de entrada a ser fornecida ao EJB de backend. Em seguida, exibe o resultado retornado do EJB de backend em uma página de saída, conforme mostrado na Figura 4:



    Figura 4. Página de saída


    O ID do usuário exibido na página de saída deve ser o mesmo usado para autenticação no servlet. Se esse for o caso, então pode estar confiante de que a identidade do usuário do cliente está sendo propagada com sucesso ao aplicativo provedor usando WS-Security.


Conclusão

Este artigo o guiou por como usar diversos terminais de serviços da Web para lidar com o problema de interoperabilidade do nível de especificação WS-Security e fornecer exemplos mostrando como lidar com algumas armadilhas em torno de trabalhar com classes de serviços da Web comuns. Como você aprendeu, este método é principalmente um exercício de desenvolvimento de aplicativo direto. Esta abordagem é mais adequada para situações de ambiente de simulação, teste ou prova de conceito, em que a atualização de aplicativos consumidores de serviços da Web para J2EE 1.4 não é uma opção e em que o custo de configurar um proxy de middleware é proibitivo.



Downloads

DescriçãoNomeTamanhoMétodo de download
Sample project files for this articleSampleProjects.zip72KBHTTP
Sample project files for this articleSampleService.ear74KBHTTP
Sample project files for this articleSampleClient.ear104KBHTTP

Informações sobre métodos de download


Recursos

Aprender

Obter produtos e tecnologias

Discutir

Sobre os autores

Photo of Zeynep Latif

Zeynep Latif é Software Engineer na organização Scenario Analysis Lab do IBM Software Group, localizada no Research Triangle Park, Carolina do Norte. Suas áreas de conhecimento incluem portlet e desenvolvimento de aplicativo J2EE, IBM Rational Application Developer e IBM Rational Software Architect para designa de aplicativo.

David Leigh

David Leigh é Senior Software Engineer na organização Scenario Analysis Lab do IBM Software Group, localizada no Research Triangle Park, Carolina do Norte. Suas áreas de conhecimento incluem o IBM WebSphere Process Choreographer, segurança de aplicativo e servidor, alta disponibilidade, monitoramento, IBM AIX® e Linux®.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Tecnologia Java
ArticleID=757464
ArticleTitle=Manejar Desafios de Interoperabilidade da Especificação WS-Security, Parte 4: Incluir um Terminal de Provedor J2EE 1.3 em um Serviço da Web J2EE 1.4
publish-date=09162011
author1-email=zeynep@us.ibm.com
author1-email-cc=
author2-email=dleigh@us.ibm.com
author2-email-cc=

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).