A primeira opção de migração para a ligação SOAP/JMS do WebSphere Studio Application Developer
Integration Edition é tornar o serviço acessível para um cliente de serviços da Web.
A Exportação com Ligação de Serviço da Web torna um componente SCA acessível
por um cliente de serviços da Web externo. Para criar uma Exportação com Ligação de Serviço da Web:
- Abra o Editor de Montagem para o módulo criado pelo assistente de migração.
- Crie uma Exportação com Ligação SCA para cada interface de serviço que teve uma ligação do IBM
Web Service (SOAP/JMS) gerada para ela no WebSphere Studio Application Developer
Integration Edition:
- Clique com o botão direito do mouse no componente SCA no Editor de Montagem.
- Selecione Exportar….
- Selecione Ligação de Serviço da Web.
- Se houver várias interfaces para o componente, selecione as interfaces a serem exportadas com este tipo de ligação.
- Selecione o transporte soap/jms.
- Quando a Exportação de Serviços da Web for criada, selecione a exportação no
Editor de Montagem e, na visualização Propriedades, selecione a área de janela de conteúdo Descrição. O nome e a descrição da Exportação são listados e podem ser modificados se necessário.
- Salve o diagrama de montagem.
- Selecione a área de janela de conteúdo Ligação e verá que uma Ligação e o Serviço de Ligação WSDL do IBM Web Service
foram gerados diretamente na pasta do projeto do módulo.
Ele será denominado componente que foi exportado Exportar Nome
de PortType WSDL Jms_Service.wsdl. Se você inspecionar este arquivo, perceberá
que a ligação agrupada de Document/Literal é utilizada por padrão, pois é o
estilo preferido na 6.0. Este é o WSDL que os clientes IBM Web Service utilizarão para chamar
o serviço.
- Siga estas etapas para gerar um novo serviço e uma nova ligação de serviço da Web, se a preservação do código do cliente for desejada:
- Copie o arquivo WSDL da 5.1 do projeto EJB gerado da 5.1 em
ejbModule/META-INF/wsdl/nome do processo de negócios/nome do tipo de porta
da interface do processo de negóciosJMS.wsdl para o projeto de módulo do Business Integration.
- Depois de copiar sobre o arquivo e reconstruir o módulo, você poderá ver mensagens de erro porque os tipos de esquema XML, as mensagens do WSDL e os tipos de porta do WSDL utilizados pelo serviço da Web estão duplicados no arquivo WSDL do IBM Web Service na 5.1. Para corrigir isso, exclua essas definições duplicadas do WSDL de ligação/serviço do IBM Web Service e em seu lugar inclua uma importação do WSDL para o WSDL da interface real. Nota:
É importante observar que quando o WebSphere Studio Application Developer
Integration Edition gerou o código de implementação do IBM Web Service, ele modificou as definições de esquema em alguns casos. Isso poderá causar inconsistências para clientes existentes que utilizam o WSDL do IBM Web Service. Por exemplo, o atributo de esquema "elementFormDefault" foi definido para "qualified" no esquema seqüencial gerado no WSDL do IBM Web Service mesmo que a definição de esquema original não tenha sido qualificada. Isso causará a geração do seguinte erro durante o tempo de execução:
WSWS3047E: Erro: Não é possível desserializar o elemento.
- Clique com o botão direito do mouse neste arquivo WSDL recém-copiado para o módulo do Business Integration e selecione Abrir
com e, em seguida, Editor WSDL.
- Vá para a guia Origem. Exclua todos os
PortTypes e Mensagens WSDL definidos neste arquivo.
- Agora você verá o erro: O tipo de porta '<Tipo_de_porta>'
especificado para a ligação '<ligação>' está indefinido.
Para corrigir isso, no editor WSDL da guia Gráfico, clique com o botão direito do mouse na seção Importações
e selecione Incluir Importação.
- Na visualização Propriedades na guia
Geral, clique no botão … à direita
do campo Local. Procure o WSDL da interface no qual as definições de mensagem e de tipo de porta do WSDL estão localizadas e clique em OK para importar o WSDL da interface para o WSDL de serviço/ligação.
- Salve o arquivo WSDL.
- Atualize/reconstrua o projeto. Vá para a perspectiva Business Integration. Abra o Diagrama de Montagem do módulo no Editor de Montagem.
- Na visualização Explorador de Projeto, expanda o módulo que você está migrando e expanda a categoria lógica Portas de Serviço da Web. Você deve ver a porta existente no WSDL de ligação/serviço listado. Arraste-a e solte-a sobre o Editor de Montagem.
- Escolha a criação de uma Exportação com Ligação de Serviço da Web e selecione o nome de porta adequado. Isso criará a Exportação que utiliza a ligação/serviço antigo de forma que clientes de serviço da Web existentes não tenham de fazer alterações. Se você selecionar a exportação que acabou de criar no Editor de Montagem e for para a visualização Propriedades, na guia Ligação deverá ver que os nomes de porta e de serviço da 5.1 foram preenchidos.
- Salve todas as alterações.
- Pouco antes de implementar o aplicativo, você pode alterar a configuração do projeto da Web gerado para que corresponda ao endereço de serviço da 5.1 (você precisa fazer essas alterações toda vez que fizer alterações no módulo SCA, o que faz com que esse arquivo seja gerado novamente). Se você examinar a definição de Serviço do IBM Web Service WSDL
que está sendo reutilizada da 5.1, verá o endereço de serviço
para o qual o cliente 5.1 foi codificado:<wsdlsoap:address
location="http://localhost:9080/MyServiceWeb/services/MyServicePort"/>
- Para fazer com que os artefatos do projeto da Web gerado da 6.0 correspondam a esse endereço de serviço antigo, você deve modificar o descritor de implementação do projeto da Web gerado. Abra o descritor de implementação no WebSphere Integration Developer e na guia Servlets, inclua um Mapeamento de URL adicional que é muito similar ao mapeamento de URL existente para aquela exportação, com o mesmo nome de servlet, mas um padrão de URL diferente.
- Além disso, se precisar modificar a raiz de contexto desse projeto da Web de forma que ela corresponda à raiz de contexto no endereço de serviço original (nesse exemplo, a raiz de contexto é "MyServiceWeb"), então, você poderá abrir o descritor de implementação para o Aplicativo Corporativo J2EE no qual está esse projeto da Web e alterar a raiz de contexto desse módulo da Web para que corresponda à raiz de contexto do endereço de serviço antigo. Você poderá ver o seguinte erro que pode ser ignorado: CHKJ3017E:
Projeto da Web: <NOME DO PROJ DA WEB> está mapeado para uma raiz de Contexto inválida: <RAIZ DE CONTEXTO NOVO> no Projeto EAR: <NOME DO APLICATIVO>.