Eu tenho um UIPageViewController que carrega um UIViewController que por sua vez contém um WKWebView. O aplicativo permite-me deslizar indefinidamente. Após cerca de 30 ou mais swipes, o aplicativo morre sem nenhum log de falha. A memória era constante em cerca de 15 MB, por isso não parecia ser um problema de memória. Eu fiz, no entanto, encontrar isso no registro do dispositivo: Este foi no iOS 9.0.1 em um iPad mini 1. A única coisa que eu encontrei sobre ele é este: prod. lists. apple/archives/cocoa-dev/2017/Jul /msg00461.html (Im não usando um servidor web interno, embora). Qualquer opinião sobre o que pode causar isso ou como corrigi-lo. Criar mensagem WS-Trust Você pode configurar o Enterprise Gateway para criar vários tipos de mensagens WS-Trust. O Enterprise Gateway pode atuar como um cliente WS-Trust ao gerar uma mensagem RequestSecurityToken (RST), mas também como um serviço WS-Trust ou STS (Security Token Service) ao gerar as mensagens RequestSecurityTokenResponse (RSTR) e RequestSecurityTokenResponseCollection (RSTRC) . Um solicitador de token gera uma mensagem RST e envia para o STS, que gera o token requerido e retorna-o em uma mensagem RSTR. Se forem necessários vários tokens, o solicitante pode enviar várias mensagens RST em uma única solicitação RequestSecurityTokenCollection (RSTC). O STS gera um RSTR para cada RST na mensagem RSTC e retorna todos eles no modo batch em uma mensagem RSTRC. Para obter mais informações sobre os vários tipos de mensagens WS-Trust e sua semântica e formato, consulte a especificação WS-Trust. Criar tipo de mensagem WS-Trust O filtro Create WS-Trust Message pode criar os seguintes tipos de mensagem WS-Trust. Selecione o tipo de mensagem apropriado com base em seus requisitos: RST: RequestSecurityToken A mensagem RST contém uma solicitação para um único token a ser emitido pelo STS. RSTR: RequestSecurityTokenResponse A mensagem RSTR é enviada em resposta a uma mensagem RST de um solicitador de token. Ele contém o token emitido pelo STS. RSTRC: RequestSecurityTokenResponseCollection A mensagem RSTRC contém um RSTR (contendo um único token emitido) para cada RST que foi recebido em uma mensagem RSTC. Criação de mensagem As configurações nesta guia especificam características da mensagem WS-Trust. Os seguintes campos estão disponíveis: Inserir tipo de token: Selecione o tipo de token solicitado na lista suspensa. O tipo de token selecionado aqui é retornado na resposta do STS. Por padrão, o Security Token Context tipo é usado, que é identificado pelo URI schemas. xmlsoap. org/ws/2005/02/sc/sct. Exchange binário: Você pode usar um ltBinaryExchangegt ao negociar um canal seguro que envolve a transferência de blobs binários como parte de outro protocolo de negociação de segurança (por exemplo, SPNEGO). O conteúdo do blob é sempre codificado em Base64 para garantir uma transmissão segura. Selecione a opção Exchange binário se desejar usar um protocolo de tipo de negociação para troca de chaves, como SPNEGO. O URI selecionado no campo Tipo de Valor identifica o tipo de negociação em que o blob é usado. O URI é colocado no atributo ValueType do elemento ltBinaryExchangegt. Entropia: O cliente pode fornecer seu próprio material de chave (entropia) que o emissor de token pode usar ao gerar o token. O emissor pode usar essa entropia como a própria chave, pode derivar outra chave dessa entropia, ou pode optar por ignorar a entropia fornecida pelo cliente completamente em favor de gerar sua própria entropia. Selecione essa opção para gerar alguma entropia, que está incluída no elemento ltwst: entropygt do bloco ltwst: RequestSecurityTokengt. Inserir tamanho da chave: O cliente pode solicitar o tamanho da chave (em número de bits) necessário em uma solicitação ltRequestSecurityTokengt. No entanto, o emissor de token do WS-Trust não precisa usar o tamanho da chave solicitada. Trata-se apenas de uma indicação da força da segurança exigida. O tamanho da chave de solicitação padrão é de 256 bits. Inserir vida útil: selecione esta opção para inserir um elemento ltLifetimegt na mensagem WS-Trust. Use os campos associados para especificar quando a mensagem expira. O tempo de vida da mensagem WS-Trust é expresso em termos de elementos ltCreatedgt e ltExpiresgt. Formato de vida: A seqüência de caracteres de data / hora especificada determina o formato dos elementos ltCreatedgt e ltExpiresgt. O formato padrão é yyyy-MM-ddTHH: mm: ss. SSSZ. Que pode ser alterado se necessário. Para obter mais detalhes sobre como usar esse formato, consulte o Javadoc para a classe Java java. text. SimpleDateFormat na Plataforma Java, Standard Edition 6 API Specification. Inserir RequestedTokenCancelled: Selecione esta opção para inserir um elemento ltRequestedTokenCancelledgt na mensagem WS-Trust gerada. Criação de RST Os seguintes campos de configuração especificam a maneira pela qual uma mensagem WS-Trust RST é criada: Insert Request Type: Você pode criar dois tipos de mensagem RST. Selecione um dos seguintes tipos de solicitação na lista suspensa: Problema: Este tipo de mensagem RST é usado para solicitar que o STS emita um token para o solicitante. Cancelar: Este tipo de mensagem RST é usado para cancelar um token específico. Inserir Tipo de Chave: Selecione esta opção para inserir o tipo de chave na mensagem RST WS-Trust. Inserir algoritmo de chave calculada: Selecione esta opção para inserir o algoritmo da chave calculada na mensagem. Inserir referência de ponto de extremidade: selecione esta opção e insira um ponto de extremidade adequado se desejar incluir uma referência de ponto de extremidade na mensagem RST. Criação de RSTR Os seguintes campos de configuração determinam a maneira pela qual uma mensagem RSTR do WS-Trust é criada: Insert RequestedProofToken: Marque esta caixa de seleção para inserir um elemento ltRequestedProofTokengt na mensagem WS-Trust gerada. O tipo desse token pode ser definido como computedKey ou encryptedKey usando a lista suspensa associada. Inserir autenticador: Seleccione esta opção para inserir um autenticador na mensagem RSTR. Definições avançadas Esta secção permite-lhe configurar certos aspectos avançados da mensagem SOAP enviada para o WS-Trust Service. Espaço de nome WS-Trust: Insira o namespace WS-Trust para vincular todos os elementos WS-Trust neste campo. O namespace padrão é schemas. xmlsoap. org/ws/2005/02/trust. Espaço para nome WS-Addressing: Selecione a versão de namespace WS-Addressing para usar em todas as mensagens WS-Trust criadas. WS-Policy Namespace: Selecione o namespace WS-Policy apropriado na lista suspensa. A versão selecionada selecionada pode afetar o pedido de tokens que são inseridos no cabeçalho WS-Security da mensagem SOAP. Versão SOAP: Selecione a versão SOAP a ser usada ao criar a mensagem WS-Trust. Sobrescrever Método SOAP: Selecione esta opção se desejar que o token WS-Trust substitua o método SOAP na solicitação. Nesse caso, o token aparece como um filho direto do elemento SOAP Body. Você deve usar esta opção se desejar preservar o conteúdo do cabeçalho SOAP, se presente. Sobrepor SOAP Envelope: Seleccione esta opção se pretender que a mensagem WS-Trust gerada forme todo o conteúdo da mensagem. Em outras palavras, a mensagem WS-Trust gerada substitui a solicitação SOAP original. Content-Type: Especifique o tipo de conteúdo HTTP da mensagem WS-Trust. Por exemplo, para Microsoft Windows Communication Foundation (WCF), você deve usar application / soapxml. Gerar Autenticador Usando: Você pode verificar o autenticador usando a mensagem Gerado ou Consumido. Em qualquer dos casos, você deve selecionar o tipo apropriado de mensagem WS-Trust a partir das opções disponíveis. Implemente um provedor de serviços da Web e solicitante usando APIs nativas do CICS e IBM Rational Developer para System z Introdução IBM174 Rational174 Developer para System z8482 integra IBM174 CICS174 Web Assistente de Serviços (DFHWS2LS) para ajudar a simplificar o desenvolvimento de aplicativos CICS com base nas descrições de serviços da Web existentes (WSDL). Você pode desenvolver dois tipos de novos aplicativos: um provedor de serviços da Web ou um solicitador de serviços da Web. Este artigo mostra como desenvolver um provedor de serviços da Web CICS e solicitante com o auxílio da ferramenta Rational Developer para System z. Não é necessário nenhum tempo de execução especial, porque as implementações do provedor e do solicitante são executadas no próprio CICS usando APIs de serviços Web nativas. O Rational Developer para System z melhora a facilidade de uso do DFHWS2LS fornecendo uma interface gráfica e um modelo para ajudá-lo a gerar programas provedores e solicitantes. Os programas de modelo ajudam você a usar o suporte de Canais e Contêineres introduzido no CICS TS Versão 3.1, que é necessário para que os aplicativos interajam com o pipeline de serviços da Web do CICS. Descrição do serviço Web da calculadora existente Este artigo inclui um documento WSDL que descreve um serviço da Web da calculadora. O serviço tem várias operações e expõe a funcionalidade simples, como adição, multiplicação e divisão, como mostrado na Figura 1. Os esquemas XML no documento WSDL, que descrevem as mensagens de solicitação e resposta, não são verbosos, mas incluem o unbounded Matriz. O arquivo Calculator. wsdl é usado no Rational Developer para System z para gerar as estruturas de linguagem e os programas de modelo que formam a base da implementação. Os aplicativos de serviço da Web CICS implementados usando o Assistente de Serviços da Web se comunicam através de estruturas de linguagem com o SOAP como transporte subjacente. Figura 1. Operações e mensagens do serviço da Web da calculadora Versão do Rational Developer para System z usada neste exemplo O Rational Developer para System z Versão 7.1 inclui a perspectiva Enterprise Service Tools, que fornece desenvolvimento baseado em projeto para serviços da Web. Há muitos benefícios para esses projetos de serviço de um único serviço, um dos quais é que os assistentes de serviço da Web se lembrem de opções de geração especificadas anteriormente. Isso torna possível para você regenerar artefatos ou desenvolvê-los iterativamente. Mais informações sobre esse recurso estão disponíveis na ajuda do produto. Neste ponto, você deve alternar para a perspectiva Ferramentas de Serviços Corporativos, como mostrado na Figura 2. Figura 2. Alternar perspectiva Gerar artefatos do provedor de serviços da Web usando o Rational Developer para System z Incluído neste artigo é um arquivo zip chamado WebServicesforCICSTopDownSample Localize a Calculadora. Wsdl no conjunto de arquivos extraído e atualizar o URI de localização para coincidir com o local de uma região CICS TS (V3.1 ou posterior) em execução. Atualize o URI de localização no CalculatorBinding de acordo com este padrão: your. system. ip: cicstcpipserviceport / cics / services / calculator Agora é possível continuar com a geração dos artefatos do provedor de serviços, seguindo estas etapas. No Rational Developer para System z, abra a perspectiva Enterprise Service Tools Clique com o botão direito do mouse no Explorador de Projetos EST e selecione Novo projeto Web Services para CICS, conforme mostrado na Figura 3. Figura 3. Criar um novo projeto Dê ao projeto um nome adequado (Neste exemplo, Calculadora), como mostrado na Figura 4. Figura 4. Nome do projeto Na próxima página, especifique o arquivo Calculator. wsdl que foi incluído no arquivo. zip e clique em Concluir. Como mostrado na Figura 5. Figura 5. Especificar arquivo para importar Um novo projeto deve aparecer no Explorador de Projetos EST com o arquivo WSDL localizado no diretório / Source, como mostrado na Figura 6. Figura 6. O arquivo Calculator. wsdl Uma vez lá São arquivos de origem em um projeto de projeto simples de EST Project, você pode gerar artefatos de serviço da Web. Para fazer isso, clique com o botão direito do mouse no projeto Calculadora e selecione Gerar Serviços da Web para Recursos do CICS. Como mostrado na Figura 7. Figura 7. Gerar artefatos Especifique opções na caixa de diálogo Launchpad: aceite o Cenário padrão de Criar Nova Implementação de Serviço (de cima para baixo) e o Tipo de Conversão de Conversão XML Interpretativa, conforme mostrado na Figura 8. Figura 8. Especificar opções de lançamento Especifique as seguintes opções na guia Propriedades do aplicativo do assistente DFHWS2LS, conforme mostrado na Figura 9. Tipo de aplicativo. Idioma do aplicativo do provedor de serviços. COBOL Nome do programa. Interface do programa CALCPROV. CHANNEL Nome do recipiente. CALCPROV As opções nesta guia especificam os detalhes do aplicativo que implementará a descrição do serviço da Web, como provedor ou solicitante do serviço (neste exemplo, provedor de serviços aqui). Figura 9. Propriedades das Propriedades do Aplicativo Especifique as seguintes opções na guia Propriedades do Serviço do assistente DFHWS2LS, conforme mostrado na Figura 10: Elemento de ligação. CalculatorBinding Local URI. / Cics / services / calculator As opções nesta guia lidam com quais Binding no documento WSDL para implementar. Existe apenas uma ligação SOAP no ficheiro Calculator. wsdl. Uma vez que você está implementando um provedor, especifique um URI sob o qual seu serviço da Web estará visível para os clientes. Dado o seu URI especificado, o seu serviço estará localizado em: your. system. ip: cicstcpipserviceport / cics / services / calculator Figura 10. Opções de Propriedades do Serviço Especifique as seguintes opções na guia Estruturas do assistente DFHWS2LS, conforme mostrado na Figura 11. Prefixo do arquivo de solicitação. CALCI Response arquivo prefixo. CALCO Estas opções determinam os nomes dos arquivos das estruturas de idiomas geradas a partir dos esquemas XML no arquivo WSDL. Figura 11. Opções de Estruturas Especifique as seguintes opções na guia WSBind do assistente DFHWS2LS, conforme mostrado na Figura 12. Nome do arquivo WSBIND. CalculatorProvider Nome do arquivo de log. CalculatorProvider Essas opções determinam os nomes de arquivo do arquivo WSBind eo arquivo de log. O arquivo WSBind precisará ser colocado no diretório de pickup de um PIPELINE de modo provedor (após a conclusão do assistente). O arquivo de log fornece detalhes detalhados sobre o processamento interno do Assistente de serviços da Web. Figura 12. Opções do WSBind Especifique a seguinte opção na guia Modelo do assistente DFHWS2LS, conforme mostrado na Figura 13. Nome do arquivo do modelo. CALCPROV Esta guia permite especificar o nome do arquivo do modelo de aplicativo gerado. O modelo destina-se a ser usado como um ponto de partida para desenvolver o novo aplicativo de provedor de serviços da Web CICS. Ele contém lógica de exemplo para sugerir um padrão de programação para implementar um provedor de um serviço da Web multi-operação. Figura 13. Opções de modelo Clique em Concluir para concluir o assistente. O projeto Calculator será preenchido com vários artefatos, como mostrado na Figura 14. Os artefatos na pasta Targets são os artefatos de serviços Web gerados com os quais implementar o provedor de serviços da Web. Neste exemplo, foram gerados seis cadernos. Os copybooks sufixed com ampquotIamp contém as estruturas de linguagem para os dados de solicitação das três operações (AddOperation, MultiplyOperation e DivideOperation). Os sufixados com ampquotOampquot contêm as respectivas estruturas de linguagem para os dados de resposta. CALCPROV. cbl é o programa de modelo do provedor de serviços da Web gerado. A próxima seção se concentrará em como completar sua lógica na próxima seção. Figura 14. O projeto de Calculadora preenchido Implementando um provedor de serviços da Web usando o modelo O programa de modelo de provedor CALCPROV. cbl é gerado como um aplicativo COBOL completo com áreas nas quais o usuário deve preencher a lógica de negócios. No caso em que XML Schemas para uma determinada operação (como AddOperation) contêm uma matriz unbounded, codificação adicional é necessária para acessar o conteúdo desses arrays, uma vez que eles são armazenados em contêineres secundários. O processo de trabalhar com recipientes secundários deve ficar claro à medida que a codificação se desenrola. O programa do provedor de serviços começa com algumas informações que o identificam como implementação do provedor de serviços da Web do CICS, conforme mostrado na Listagem 1. Listagem 1. Divisão de Identificação Por razões que logo se tornarão óbvias, você declara algumas variáveis de trabalho na seção de armazenamento local do Como mostrado na Listagem 2. Listagem 2. Declarar variáveis de trabalho Os comentários nos copybooks gerados para AddOperation (CALCI01.cpy) e MultiplyOperation (CALCO02.cpy) indicam que o membro de dados que contém os operandos para encontrar a soma eo produto Estão localizados num recipiente secundário. Na seção de vinculação, você define algo que permitirá acessar as ocorrências individuais desses membros de dados no contêiner. Há muitas maneiras de realizar isso, mas você usará a técnica mais direta (não necessariamente eficiente). Esta sobreposição permite a leitura de até 512 operandos a partir da mensagem de pedido, como mostrado na Listagem 3. Listagem 3. Declarar uma sobreposição No programa de modelo, existem divisões lógicas para processar os dados de entrada (pedidos) e enviar os dados de saída Respostas), com base na operação invocada pelo cliente. Para a AddOperation cuja divisão lógica começa na linha 139, você preenche a lógica para calcular a SUM. Listagem 4. Lógica para calcular a soma Em seguida, você usa uma API CICS para obter um ponteiro para o armazenamento organizado como ocorrências do item de dados de nível 01 CALCI01-additionXoperand para a estrutura de linguagem AddOperation em CALCI01.cpy, conforme mostrado na Listagem 5. Listagem 5. Obter contêiner Usando o item de seção de vínculo que você declarou anteriormente, estabeleça endereçabilidade para cada ocorrência do item de dados de nível 01 CALCI01-additionXoperand configurando o item de seção de vinculação para o endereço do armazenamento de contêiner, conforme mostrado na Listagem 6 Listagem 6. Definir endereço Agora você pode iterar através de cada ocorrência no contêiner, como mostrado na Listagem 7. Você liga o loop usando a variável additionXoperand-num, que indica o número de ocorrências a serem encontradas no contêiner cujo nome é dado Além disso, Xoperand-cont. Listagem 7. Iterar por ocorrências de array Todas as operações no serviço da Web da Calculadora são bidirecionais (solicitação-resposta). Portanto, para concluir fornecendo a operação AddOperation, você precisará enviar dados de resposta. A seção do modelo para fazer isso começa com o comentário ampquotPopulate Response Language Structureampquot, como mostrado na Listagem 8. Listagem 8. Enviar dados de resposta A estrutura de linguagem em CALCO01.cpy representa os dados de resposta para o AddOperation. Agora, basta mover o resultado da soma calculada ao processar os dados da solicitação para o campo additionalXresult da estrutura da linguagem de resposta. O envio da resposta não está completo até que você PUT um recipiente com a estrutura de linguagem de resposta para o serviço Web PIPELINE, como mostrado na Listagem 9. Listagem 9. Resultado de adição de armazenamento Dado que a estrutura de linguagem de resposta é simples neste exemplo, você faz Não é necessário COLOCAR recipientes adicionais no PIPELINE para itens de comprimento variável ou não. O PUT gerado automaticamente da estrutura de linguagem de resposta é suficiente e não precisa ser atualizado (Listagem 10). Listagem 10. Enviar estrutura de linguagem de resposta A forma como você conclui o código para as operações MultiplyOperation e DivideOperation é semelhante à AddOperation, exceto que a DivideOperation não precisa lidar com arrays ilimitados. O código concluído para o provedor de serviços da Web está incluído no arquivo WebServicesforCICSTopDownSample. zip. Para ignorar as etapas de criação e geração do projeto, você pode importar o arquivo de intercâmbio de projeto CalculatorProj. zip, que está incluído no arquivo. zip. Testando o provedor de serviços da Web Após concluir as etapas a seguir, você pode testar o novo serviço da Web usando o Rational Developer para o System z Web Services Explorer (ou outros meios): Copie o CALCPROV. cbl, CALCI. cpy e CALCO. cpy Arquivos para o sistema MVS. Compile e edite link o aplicativo de provedor de serviços da Web CALCPROV. cbl em um conjunto de dados de carga dentro da concatenação DFHRPL do CICS Defina um recurso de PROGRAMA no CICS chamado CALCPROV e instale-o. Copie o arquivo CalculatorProvider. wsbind para um diretório de recolhimento PIPELINE do modo provedor CICS. Se você estiver usando ftp, certifique-se de que o arquivo é transferido no modo binário. Emitir uma varredura do PIPELINE do modo provedor para instalar o serviço da Web: CEMT PERFORM PIPELINE (PROVPIPE) SCAN Certifique-se de que o serviço da Web é ampquotinserviceampquot através da emissão CEMT INQUIRE WEBSERVICE () e procurando CalculatorProvider. Para testar o serviço da Web usando o explorador de serviços da Web, execute as seguintes etapas. Clique com o botão direito do mouse no arquivo Calculator. wsdl no diretório / Source do projeto Calculadora no Rational Developer para System z e selecione Serviços da Web gt Teste com o Web Services Explorer. Como mostrado na Figura 15. Figura 15. Iniciar o teste Selecione uma operação para testar na exibição em árvore exibida à esquerda e um formulário de entrada correspondente será exibido à direita, como mostrado na Figura 16. Certifique-se de que o URI completo O arquivo WSDL representa a localização física do sistema CICS onde o serviço da Web está sendo executado. Figura 16. Selecionar uma operação Selecione uma operação para testar na exibição em árvore exibida à esquerda e um formulário de entrada correspondente será exibido à direita, como mostrado na Figura 16. Certifique-se de que o URI completo no arquivo WSDL representa a operação física Local do sistema CICS onde o serviço da Web está sendo executado. Gerando artefatos do solicitador de serviços da Web usando o Rational Developer para System z Este artigo inclui um arquivo chamado WebServicesforCICSTopDownSample. zip. Por favor, extraia este arquivo para sua unidade C: antes de executar as etapas desta seção (se você ainda não o fez). Para poder executar o exemplo nesta seção, você terá que ter concluído a implementação do provedor de serviços da Calculadora descrita nas seções anteriores. Se o arquivo Calculator. wsdl no conjunto extraído ainda não tiver sido atualizado, é crítico fazê-lo agora. Atualize o URI de localização no CalculatorBinding de acordo com este padrão: your. system. ip: cicstcpipserviceport / cics / services / calculator. Agora é possível gerar os artefatos do solicitador de serviço seguindo estas etapas. Onde não há nenhuma figura, é porque os passos são os mesmos que os na arte de provedores de serviço de Web de geração usando Rational Developer para System z seção. No Rational Developer para System z, abra a perspectiva Enterprise Service Tools. Clique com o botão direito do mouse no Explorador de projetos EST e selecione Novo projeto de serviços da Web gt para CICS. Dê ao projeto um nome adequado (neste exemplo, Calculatorrequester), como mostrado na Figura 17. Figura 17. Escolha um nome de projeto Na próxima página, especifique o arquivo Calculator. wsdl que foi incluído no arquivo. zip e termine o novo Assistente de projeto. É muito importante que o URI de localização no ficheiro WSDL esteja correcto neste ponto, uma vez que não lhe será permitido anular no assistente. Um novo projeto deve ser exibido no Explorador de Projetos EST, com o arquivo WSDL localizado no diretório Source, como mostrado na Figura 18. Figura 18. Novo projeto Clique com o botão direito do mouse no projeto Calculatorrequester e selecione Gerar Serviços da Web para Recursos do CICS. Especifique opções no Launchpad: aceite o Cenário padrão de Criar Nova Implementação de Serviço (de cima para baixo) e o Tipo de Conversão de Conversão XML Interpretativa. Especifique as seguintes opções na guia Propriedades do aplicativo do assistente DFHWS2LS, conforme mostrado na Figura 19. Tipo de aplicativo. Idioma do aplicativo Requerente de serviço. COBOL Nome do programa. CALCRQST Figura 19. Opções de propriedades do aplicativo Especifique a seguinte opção na guia Propriedades do serviço do assistente DFHWS2LS, conforme mostrado na Figura 20. Elemento de ligação. CalculatorBinding Figura 20. Opções de Propriedades do Serviço Especifique as seguintes opções na guia Estruturas do assistente DFHWS2LS, conforme mostrado na Figura 21. Prefixo do arquivo de solicitação. RCALCI Arquivo de resposta prefixo. RCALCO Estas opções determinam os nomes de arquivos dos copybooks de estrutura de linguagem gerados. Observe que os copybooks têm nomes de arquivo diferentes do que aqueles no provedor de serviços da Web na seção anterior. Isso não ocorre automaticamente, mas você deve fazer isso para clareza. Figura 21. Opções Estruturas Especifique as seguintes opções na guia WSBind do assistente DFHWS2LS, conforme mostrado na Figura 22. Nome do arquivo WSBIND. Calculatorrequester Nome do arquivo de log. Calculatorrequester Essas opções determinam os nomes de arquivos do arquivo WSBind e do arquivo de log. Você precisará colocar o arquivo WSBind no diretório pickup de um PIPELINE de modo solicitante (depois de concluir o assistente). O arquivo de log fornece detalhes detalhados sobre o processamento interno do Assistente de serviços da Web. Figura 22. Opções do WSBind Especifique a seguinte opção na guia Modelo do assistente DFHWS2LS, conforme mostrado na Figura 23. Nome do arquivo do modelo. CALCRQST Esta guia permite especificar o nome do arquivo do modelo de aplicativo gerado. O modelo destina-se a ser usado como um ponto de partida para desenvolver o novo aplicativo de solicitador de serviços da Web do CICS. Ele contém lógica de exemplo para invocar a primeira operação no serviço da Web remoto. Figura 23. Opções do modelo O projeto Calculatorrequester será preenchido com vários artefatos. Os artefatos na pasta Destinos são os artefatos de serviços da Web gerados que são a base da implementação do solicitador de serviços da Web. Neste exemplo, foram gerados seis cadernos, como mostrado na Figura 24. Os copybooks sufixados com ampquotIamp contêm as estruturas de linguagem para os dados de solicitação das três operações (addOperation, multiplyOperation e divideOperation). Os sufixados com ampquotOampquot contêm as respectivas estruturas de linguagem para os dados de resposta. CALCRQST. cbl é o modelo de modelo de solicitador de serviço Web gerado. A próxima seção se concentrará em como completar sua lógica. Figura 24. Projeto preenchido Implementando um solicitador de serviço da Web usando o modelo O programa de modelo do solicitante CALCRQST. cbl é gerado como um aplicativo COBOL completo, com áreas nas quais o usuário deve preencher a lógica de negócios. No caso em que os esquemas XML para uma determinada operação (como AddOperation) contêm uma matriz ilimitada, codificação adicional é necessária para preencher o conteúdo dessas matrizes, porque eles precisam ser armazenados em contêineres secundários. Você vai entender mais sobre os recipientes secundários como a codificação se desenrola. Os fragmentos de código a seguir são retirados do arquivo CALCRQST. cbl fornecido com este documento. O programa começa com algumas informações que o identificam como uma implementação do solicitador de serviços da Web do CICS. Novamente, a lógica deste programa demonstra a invocação da primeira operação no serviço remoto da web. Neste exemplo, você estará chamando o AddOperation, como mostrado na Listagem 11. Listagem 11. Chamando AddOperation O solicitador do serviço começa com uma chamada de saída, ao contrário de consumir uma solicitação (como no exemplo do provedor). Para AddOperation, procure dentro de RCALCI01.cpy, onde é explicado que os operandos a somar precisam ser colocados em um container, cujo nome, por sua vez, deve ser colocado em additionalXoperand-cont. Um contêiner é criado usando o CICS PUT API. Normalmente, um contêiner é PUT de uma área de armazenamento no programa. Portanto, declare uma área (não na seção linkage) organizada como ocorrências de RCALCI01-additionXoperand de tal forma que ela possa ser usada para PUT uma matriz de operandos, como mostrado na Listagem 12. Listagem 12. Declarar uma estrutura de dados Quando uma web Serviço solicitante ou provedor é instalado no CICS, um recurso WEBSERVICE é criado. Para indicar ao CICS qual serviço da Web deve ser invocado, especifique o nome do recurso WEBSERVICE para o solicitante (não o provedor), conforme mostrado na Listagem 13. Além disso, escolha invocar a primeira operação. Ambos os campos de recebimento no snippet de código a seguir são usados com a API, EXEC CICS INVOKE WEBSERVICE. Lista 13. Especifique o serviço da Web Os seguintes segmentos de código preenchem a estrutura da linguagem de solicitação eo contêiner secundário. Na linha 125, inicialize a estrutura de linguagem primária para os dados de solicitação AddOperation, como mostrado na Listagem 14. Listagem 14. Preencher a estrutura da linguagem de solicitação Anteriormente, você definiu uma estrutura de comprimento variável chamada CALCULATOR-OPERANDS, organizada exatamente como o armazenamento Do recipiente secund�io que representa os operandos a serem somados. Nas linhas 129 a 135, os números a serem somados e sua contagem são armazenados em CALCULATOR-OPERANDS, como mostrado na Listagem 15. Listagem 15. Especifique números a serem somados Nas linhas 137 a 139, dê um nome ao container secundário, que Contém os operandos a serem somados, como mostrado na Listagem 16. Listagem 16. Nome do container secundário A linha 143 define o contador para o número de ocorrências de RCALCI01-additionXoperand que existem no contêiner secundário. Um contêiner não é auto-descrevente, por isso é necessário informar o consumidor do contêiner do número de instâncias da estrutura (para a qual o contêiner está mapeado) que estão contidos nele. As linhas 144 a 148 criam o contêiner AddOperands no canal atual a partir da estrutura CALCULATOR-OPERANDS em seu armazenamento de trabalho, conforme mostrado na Listagem 17. Você terminou de preencher os dados de solicitação para a operação AddOperation. Listagem 17. Crie o contêiner AddOperands Listagem 18. Chame o serviço da Web Listagem 19. Recuperar a resposta Isso é alcançado depois que a invocação de AddOperation no serviço Web remoto foi concluída e os resultados foram colocados no campo additionalXresult do idioma principal Estrutura no copybook RCALCO01.cpy. A lógica mostrada na Listagem 18 simplesmente exibe os resultados da chamada AddOperation para o terminal CICS. Listagem 20. Exibir os dados O código preenchido para o solicitador de serviços da Web está incluído no CalculatorrequesterProj. zip, que está disponível na seção de download. Testando o solicitador de serviço da Web Uma vez que as etapas a seguir foram concluídas, você pode testar o novo solicitador de serviço da Web usando o terminal CICS 3270 (ou outros meios): Copie o CALCRQST. cbl, RCALCI. cpy e RCALCO. cpy para o sistema MVS . Compile e edite link o aplicativo de solicitação de serviço da Web CALCRQST. cbl em um conjunto de dados de carga dentro da concatenação DFHRPL do CICS. Defina um recurso de PROGRAMA no CICS chamado CALCRQST e instale-o. Defina uma transação chamada RQST (ou qualquer coisa que você lembrar) e especifique CALCRQST como o programa que ele invoca. Copie o arquivo Calculatorrequester. wsbind para um diretório de recolhimento PIPELINE do modo solicitante CICS. Execute uma varredura do PIPELINE do modo solicitante para instalar o serviço da Web: CEMT PERFORM PIPELINE (REQPIPE) SCAN Certifique-se de que o solicitador e provedor de serviços da Web são inservice emitindo CEMT INQUIRE WEBSERVICE () e procure Calculatorrequester e CalculatorProvider. Os resultados devem ser semelhantes aos mostrados na Figura 25. Figura 25. Resultados mostrando CalculatorProvider e Calculatorrequester Para testar o solicitador de serviços da Web, efetue login no terminal CICS e invoque a transação RQST (Figura 26), que executará o aplicativo CALCRQST. cbl . Lembre-se de que o aplicativo solicitador de serviço da Web chama a operação AddOperation no CalculatorProvider WEBSERVICE. Os valores a serem somados são codificados no programa solicitador de serviço e devem ser iguais a 256. Figura 26. A transação RQST A Figura 27 mostra um teste de ponta a ponta bem-sucedido do solicitador para o provedor. Figure 27. CALCRQST addResult is 256 What you have learned Using Rational Developer for System z, you have developed two types of new applications: a Web service provider and a Web service requester. This article also showed you the improved usability of DFHWS2LS: a graphical interface and a template to help you generate provider and requestor programs. Visit the Rational software area on developerWorks for technical resources and best practices for Rational Software Delivery Platform products. Subscribe to the IBM developerWorks newsletter. a weekly update on the best of developerWorks tutorials, articles, downloads, community activities, webcasts and events. Subscribe to the developerWorks Rational zone newsletter. Keep up with developerWorks Rational content. Every other week, youll receive updates on the latest technical resources and best practices for the Rational Software Delivery Platform. Subscribe to the Rational Edge newsletter for articles on the concepts behind effective software development. Browse the technology bookstore for books on these and other technical topics. Get products and technologies Download trial versions of IBM Rational software . Download these IBM product evaluation versions and get your hands on application development tools and middleware products from DB2174, Lotus174, Tivoli174, and WebSphere174. developerWorks: Sign in Required fields are indicated with an asterisk ( ). The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name . You may update your IBM account at any time. All information submitted is secure. Choose your display name The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks. Please choose a display name between 3-31 characters . Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons. Required fields are indicated with an asterisk ( ). All information submitted is secure. Dig deeper into Rational software on developerWorks Exclusive tools to build your next great app. Aprender mais. Ask a technical question Tutorials amp training to grow your development skills ZoneRational, WebSphere, DevOps ArticleTitleImplement a Web service provider and requester using native CICS APIs and IBM Rational Developer for System z
No comments:
Post a Comment