BRPI0417511B1 - PROXY AGNOSTIC SUPPORT METHOD AND SYSTEM FOR WEB SERVICES INTERMEDIATE DOOR TYPE - Google Patents

PROXY AGNOSTIC SUPPORT METHOD AND SYSTEM FOR WEB SERVICES INTERMEDIATE DOOR TYPE Download PDF

Info

Publication number
BRPI0417511B1
BRPI0417511B1 BRPI0417511B1 BR PI0417511 B1 BRPI0417511 B1 BR PI0417511B1 BR PI0417511 B1 BRPI0417511 B1 BR PI0417511B1
Authority
BR
Brazil
Prior art keywords
target service
request
response
endpoint
intermediary
Prior art date
Application number
Other languages
Portuguese (pt)
Publication date

Links

Description

(54) Título: MÉTODO E SISTEMA PARA SUPORTE DE PROXY AGNÓSTICO QUANTO AO TIPO DE PORTA PARA INTERMEDIÁRIOS DE SERVIÇOS DA WEB (51) lnt.CI.: H04L 29/08 (30) Prioridade Unionista: 12/12/2003 US 10/734,773,12/12/2003 US 10/734,770 (73) Titular(es): INTERNATIONAL BUSINESS MACHINES CORPORATION (72) Inventor(es): GREGORY ALAN FLURRY; SIMON ANTONY JAMES HOLDSWORTH; JAMES MICHAEL SNELL (85) Data do Início da Fase Nacional: 12/06/2006(54) Title: METHOD AND SYSTEM FOR SUPPORTING AGNOSTIC PROXY AS TO DOOR TYPE FOR WEB SERVICES INTERMEDIARIES (51) lnt.CI .: H04L 29/08 (30) Unionist Priority: 12/12/2003 US 10 / 734,773.12 / 12/2003 US 10 / 734,770 (73) Holder (s): INTERNATIONAL BUSINESS MACHINES CORPORATION (72) Inventor (s): GREGORY ALAN FLURRY; SIMON ANTONY JAMES HOLDSWORTH; JAMES MICHAEL SNELL (85) National Phase Start Date: 06/12/2006

1/631/63

MÉTODO E SISTEMA. PARA SUPORTE DE PROXY AGNÓSTICO QUANTO AOMETHOD AND SYSTEM. FOR AGNOSTIC PROXY SUPPORT AS TO

TIPO DE PORTA PARA INTERMEDIÁRIOS DE SERVIÇOS DA WEB .TYPE OF DOOR FOR WEB SERVICES INTERMEDIARIES.

Campo Técnico [0001] O campo da invenção é o processamento de dados ou, mais particularmente, métodos, sistemas e produtos para suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da web.Technical Field [0001] The field of the invention is data processing or, more particularly, methods, systems and products to support agnostic proxy as to the type of port for web service intermediaries.

Técnica Anterior [0002] O termo serviços da web refere-se a uma maneira padronizada de integrar aplicativos baseados na web. Os serviços da web tipicamente fornecem serviços de negócios mediante solicitação através de comunicação de dados em formatos padronizados denominados bindings. Um binding é uma especificação de um método de codificação de dados e um protocolo de comunicação de dados. O binding mais comum em uso para serviços da web é a codificação de dados em XML, de acordo com o protocolo SOAP e comunicações de dados com HTTP.Prior Art [0002] The term web services refers to a standardized way of integrating web-based applications. Web services typically provide business services upon request through data communication in standardized formats called bindings. A binding is a specification of a data encoding method and a data communication protocol. The most common binding in use for web services is the data encoding in XML, according to the SOAP protocol and data communications with HTTP.

[0003] Diferentemente dos modelos cliente/ servidor tradicionais, tal como um servidor HTTP que proporciona documentos HTML em resposta a solicitações dos clientes do navegador, os serviços da web não estão envolvidos com exibição. Os serviços da web, ao invés disso, compartilham a lógica de negócio, dados e processos através de uma interface programática através de uma rede. Os aplicativos de serviços da web realizam interface uns com os outros e não com os usuários. Uma vez que todas as comunicações de dados entre os serviços da web são feitas de acordo com bindings padronizados, os serviços da web não estão amarrados a qualquer sistema operacional ou linguagem de programação. Um cliente Java em execução em uma plataforma WindowsTM pode[0003] Unlike traditional client / server models, such as an HTTP server that provides HTML documents in response to requests from browser clients, web services are not involved with display. Web services, instead, share business logic, data and processes through a programmatic interface over a network. Web service applications interface with each other and not with users. Since all data communications between web services are done according to standardized bindings, web services are not tied to any operating system or programming language. A Java client running on a Windows TM platform can

Petição 870180049145, de 08/06/2018, pág. 9/71Petition 870180049145, of 06/08/2018, p. 9/71

2/63 chamar operações de serviço da web escritas em Perl e que rodam dentro do Unix. Um aplicativo Windows escrito em C++ pode chamar operações em um serviço da web implementado como um servlet de Java.2/63 call web service operations written in Perl and that run inside Unix. A Windows application written in C ++ can call operations on a web service implemented as a Java servlet.

[0004] Os serviços da web de hoje em dia estão crescendo por meio de muitas indústrias. À medida que os serviços da web crescem em importância, os intermediários de serviços da web são crescentemente reconhecidos como meios para fornecer muitos serviços de valor adicionado. Um intermediário de serviços da web, em geral, referido nessa descrição como um intermediário é um componente de serviço da web que fica entre um cliente de serviço da web e um provedor de serviços da web. Os intermediários operam, em geral, pela interceptação de uma solicitação de um cliente, fornecendo serviços intermediários e, então, encaminhando a solicitação do cliente para um provedor de serviços da web. Similarmente, respostas dos provedores de serviço da web são interceptadas, operadas e, então, retornadas para o cliente. Exemplos de produtos comercialmente disponíveis, com os quais intermediários de serviços da web podem ser implementados, incluem Web Services Gateway™ da IBM e Web Service Bus™ da IBM.[0004] Today's web services are growing across many industries. As web services grow in importance, web service intermediaries are increasingly recognized as a means to provide many value-added services. A web services intermediary, generally referred to in this description as an intermediary, is a web service component that lies between a web service client and a web services provider. Intermediaries generally operate by intercepting a customer request, providing intermediary services and then forwarding the customer's request to a web service provider. Similarly, responses from web service providers are intercepted, operated, and then returned to the customer. Examples of commercially available products, with which web services intermediaries can be implemented, include IBM's Web Services Gateway ™ and IBM's Web Service Bus ™.

[0005] Serviços fornecidos por intermediários incluem autenticação de fontes de solicitações para serviços alvo, validação de mensagens para conteúdo e para formulários e registro de mensagens para propósitos de auditoria. Os intermediários podem fornecer serviços de relatório de gerenciamento, número de acessos de serviços da web, quantidade e tempo dos serviços usados pelos clientes individuais e assim por diante. Os intermediários podem ser[0005] Services provided by intermediaries include authenticating request sources for target services, validating messages for content and forms, and recording messages for auditing purposes. Intermediaries can provide management reporting services, number of web service accesses, number and timing of services used by individual customers, and so on. Intermediaries can be

Petição 870180049145, de 08/06/2018, pág. 10/71Petition 870180049145, of 06/08/2018, p. 10/71

3/63 usados como caches em suporte do desempenho aperfeiçoado armazenando dados frequentemente alterados, mas frequentemente solicitados, tais como novas histórias, por exemplo. Os intermediários podem ser usados para aperfeiçoamento de desempenho no sentido do balanceamento de carga, armazenamento de solicitações para serviços de alguns clientes e encaminhamento das mesmas para um serviço alvo durante horas de serviço fora de pico. Os intermediários podem agregar serviços, tais como, por exemplo, um intermediário de contabilização que aceita solicitações para postagens de contas que, então, são encaminhadas para separar serviços alvo em contas pagáveis, contas recebíveis e serviços gerais de livro fiscal.3/63 used as caches in support of improved performance storing frequently changed but frequently requested data, such as new stories, for example. Intermediaries can be used to improve performance in the sense of load balancing, storing requests for services from some customers and forwarding them to a target service during off-peak service hours. Intermediaries can add services, such as, for example, an accounting intermediary that accepts requests for account postings that are then routed to separate target services into payable accounts, receivable accounts and general tax book services.

[0006] É comum no estado da técnica implementar intermediários de serviços da web de modo que eles sejam acoplados, firmemente, a seus serviços alvo. Isto é, um intermediário particular proporciona serviços intermediários apenas para serviços da web particulares. A necessidade disso é clara quando, por exemplo, o intermediário fornece validação de mensagem e deve, portanto, ter conhecimento preciso do conteúdo e formulário de mensagem adequados. Nessa terminologia de serviços da web, um grupo de operações é referido como um tipo de porta. Nessa terminologia, a restrição do meio de acoplamento alto que comumente no estado da técnica, um serviço intermediário e todos os serviços alvos servidos pelo serviço intermediário teriam o mesmo tipo de porta. Existem situações, no entanto, onde é útil para um serviço intermediário funcionar através de tipos de porta, por exemplo, uma função de autorização de identidade de cliente destinada a fornecer exatamente a mesma função de[0006] It is common in the state of the art to implement web service intermediaries so that they are firmly coupled to their target services. That is, a private broker provides intermediary services only for private web services. The need for this is clear when, for example, the intermediary provides message validation and must therefore have accurate knowledge of the appropriate message content and form. In this web services terminology, an operations group is referred to as a type of port. In this terminology, the restriction of the high coupling medium that commonly in the state of the art, an intermediate service and all target services served by the intermediate service would have the same type of port. There are situations, however, where it is useful for an intermediary service to work through port types, for example, a client identity authorization function designed to provide exactly the same

Petição 870180049145, de 08/06/2018, pág. 11/71Petition 870180049145, of 06/08/2018, p. 11/71

4/63 autenticação em mensagens direcionadas a qualquer serviço alvo, independentemente do tipo de porta. 0 estado da técnica força complexidade de configuração adicional em tais casos e existe uma necessidade em progresso para aperfeiçoamento de intermediários de serviços da web.4/63 authentication in messages directed to any target service, regardless of the type of port. The state of the art forces additional configuration complexity in such cases and there is an ongoing need for improvement of web service intermediaries.

Descrição da Invenção [0007] De acordo com um primeiro aspecto, é proporcionado um método de suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviço da web, o método compreendendo: -receber, em um intermediário de serviços da web, uma solicitação para execução de uma operação de serviços da web, em que a solicitação inclui informação de parâmetro a partir da qual um endpoint para um serviço alvo que suporta a operação pode ser identificado; identificar, na dependência dos dados paramétricos, o endpoint para um serviço alvo que suporta a operação, criar uma solicitação de serviço alvo para execução da operação do serviço alvo; e emitir a solicitação de serviço alvo para o serviço alvo.Description of the Invention [0007] According to a first aspect, an agnostic proxy support method is provided as to the type of port for web service intermediaries, the method comprising: -receiving, at a web services intermediary, a request to perform a web service operation, where the request includes parameter information from which an endpoint for a target service that supports the operation can be identified; identify, depending on the parametric data, the endpoint for a target service that supports the operation, create a target service request to perform the operation of the target service; and issue the target service request to the target service.

[0008] Em uma concretização, é determinado se a solicitação requer uma resposta sincrona; e uma resposta do serviço alvo é aguardada se a solicitação requer uma resposta sincrona.[0008] In one embodiment, it is determined whether the request requires a synchronous response; and a response from the target service is expected if the request requires a synchronous response.

[0009] Em concretizações tipicas, a determinação se a solicitação requer uma resposta sincrona é feita pela determinação na dependência da informação paramétrica se a solicitação requer uma resposta sincrona. Em concretizações tipicas, criar uma solicitação de serviço alvo para execução da operação no serviço alvo inclui criar a solicitação de serviço alvo na dependência de uma determinação se a[0009] In typical embodiments, the determination whether the request requires a synchronous response is made by determining depending on parametric information whether the request requires a synchronous response. In typical embodiments, creating a target service request to perform the operation on the target service includes creating the target service request depending on a determination whether the

Petição 870180049145, de 08/06/2018, pág. 12/71Petition 870180049145, of 06/08/2018, p. 12/71

5/63 solicitação requer uma resposta síncrona. Para uma solicitação que não requer uma resposta síncrona, algumas concretizações incluem receber a partir do serviço alvo uma confirmação da solicitação de serviço alvo e retornar a confirmação a um solicitante sem esperar uma mensagem de resposta.5/63 request requires a synchronous response. For a request that does not require a synchronous response, some embodiments include receiving a confirmation of the target service request from the target service and returning the confirmation to a requester without waiting for a response message.

[0010] Para uma solicitação que não requer uma resposta, algumas concretizações implementam a espera por uma resposta a partir do serviço alvo pelo recebimento síncrono no intermediário de uma resposta a partir do serviço alvo; criação no intermediário, na dependência da resposta a partir da solicitação de serviço, de uma resposta a partir do intermediário; e retornar a resposta a partir do intermediário para um solicitante. Nas concretizações típicas, o recebimento síncrono em um intermediário de uma resposta a partir do serviço alvo é feito pela invocação de uma função de recebimento de bloco em uma conexão de comunicação de dados entre o intermediário e o serviço alvo.[0010] For a request that does not require a response, some embodiments implement waiting for a response from the target service for synchronous receipt at the intermediary of a response from the target service; creation in the intermediary, depending on the response from the service request, of a response from the intermediary; and return the response from the intermediary to a requester. In typical embodiments, the synchronous receipt at a broker of a response from the target service is done by invoking a block receiving function on a data communication connection between the broker and the target service.

[0011] Em muitas concretizações, a solicitação de serviço alvo conforme criada e emitida para o serviço alvo leva conteúdos de mensagem não examinados e não modificados da solicitação recebida no intermediário de serviços da web. Concretizações exemplificativas tipicamente também incluem o caminho de retorno do processamento de solicitação resposta: receber no intermediário uma resposta do serviço alvo; criar no intermediário na dependência da resposta a partir do serviço alvo, uma resposta a partir do intermediário; e retornar a resposta a partir do intermediário para o cliente solicitante.[0011] In many embodiments, the target service request as created and issued to the target service takes unexamined and unmodified message contents from the request received at the web service intermediary. Exemplary embodiments typically also include the return path of response request processing: receiving a response from the target service at the intermediary; create in the intermediary depending on the response from the target service, a response from the intermediary; and return the response from the intermediary to the requesting customer.

Petição 870180049145, de 08/06/2018, pág. 13/71Petition 870180049145, of 06/08/2018, p. 13/71

6/63 [0012] Concretizações típicas da presente invenção também incluem identificar para um solicitante um endpoint do intermediário de serviços da web como um endpoint que suporta a operação. Em tais concretizações, informações paramétricas frequentemente incluem um tipo de porta para a operação. Além disso, identificar um endpoint para um serviço alvo que suporta uma operação frequentemente também inclui identificar na dependência de informação paramétrica, uma multiplicidade de endpoints de serviço alvo que suporta a operação e selecionar um endpoint a partir da multiplicidade de endpoints de acordo com as regras de seleção. A identificação de uma multiplicidade de endpoints dos serviços alvos que suportam uma operação pode ser feita pela identificação a partir de um registro na dependência de um tipo de porta, uma multiplicidade de serviços alvos para o tipo de porta. Selecionar um endpoint a partir da multiplicidade de endpoints pode incluir selecionar um endpoint a partir da multiplicidade de endpoints de acordo com as regras de seleção para balanceamento de carga entre serviços alvos.6/63 [0012] Typical embodiments of the present invention also include identifying for a requester an endpoint of the web services intermediary as an endpoint that supports the operation. In such embodiments, parametric information often includes a type of door for the operation. In addition, identifying an endpoint for a target service that supports an operation often also includes identifying, depending on parametric information, a multiplicity of target service endpoints that support the operation and selecting an endpoint from the multiplicity of endpoints according to the rules of selection. The identification of a multiplicity of endpoints of the target services that support an operation can be done by identifying from a record depending on a type of port, a multiplicity of target services for the type of port. Selecting an endpoint from the multiplicity of endpoints may include selecting an endpoint from the multiplicity of endpoints according to the selection rules for load balancing between target services.

[0013] A criação de uma solicitação de serviço alvo para execução da operação no serviço alvo pode ser realizada pela composição da solicitação em uma estrutura de dados útil em uma interface de binding neutra e chamada de interface de binding neutra, passar a solicitação como um parâmetro de chamada. Emitir a solicitação de serviço alvo para o serviço alvo pode incluir chamar um ou mais métodos de membro em uma interface de binding neutra.[0013] The creation of a target service request to perform the operation on the target service can be performed by composing the request in a useful data structure in a neutral binding interface and called a neutral binding interface, passing the request as a call parameter. Issuing the target service request to the target service may include calling one or more member methods on a neutral binding interface.

[0014] De acordo com um segundo aspecto, a invenção proporciona um sistema para suporte de proxy agnóstico quanto[0014] In accordance with a second aspect, the invention provides a system for supporting agnostic proxy regarding

Petição 870180049145, de 08/06/2018, pág. 14/71Petition 870180049145, of 06/08/2018, p. 14/71

7/63 ao tipo de porta para intermediários de serviço da web, o sistema compreendendo: meio para receber, em um intermediário de serviços da web, uma solicitação para execução de uma operação de serviços da web, em que a solicitação inclui informação de parâmetro a partir do qual um endpoint para um serviço alvo que suporta a operação pode ser identificado; meio para identificar, na dependência dos dados paramétricos, o endpoint para um serviço alvo que suporta a operação; meio para criar uma solicitação de serviço alvo para execução da operação do serviço alvo; e meio para emitir a solicitação de serviço alvo para o serviço alvo.7/63 to the type of port for web service intermediaries, the system comprising: means for receiving, at a web services intermediary, a request to perform a web services operation, where the request includes parameter information from which an endpoint for a target service that supports the operation can be identified; means to identify, depending on the parametric data, the endpoint for a target service that supports the operation; means for creating a target service request to perform the operation of the target service; and means for issuing the target service request to the target service.

[0015] De acordo com um terceiro aspecto, e proporcionado um produto de programa de computador para suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços alvos, o produto de programa de computador compreendendo: uma midia de gravação; meio, gravado em uma midia de gravação, para receber, em um intermediário de serviços da web, uma solicitação para execução de uma operação de serviços da web, em que a solicitação inclui informação de parâmetro a partir do qual uma extremidade para um serviço alvo que suporta a operação pode ser identificada; meio, gravado em uma midia de gravação, para identificar, na dependência dos dados paramétricos, o endpoint para um serviço alvo que suporta a operação; meio, gravado em uma midia de gravação, para criar uma solicitação de serviço alvo para execução da operação do serviço alvo; e meio, gravado em uma midia de gravação, para emitir a solicitação de serviço alvo para o serviço alvo.[0015] In accordance with a third aspect, a computer program product is provided to support agnostic proxy as to the type of port for target service intermediaries, the computer program product comprising: a recording medium; medium, recorded on a recording medium, to receive, at a web services intermediary, a request to perform a web services operation, where the request includes parameter information from which an end to a target service that supports the operation can be identified; medium, recorded on a recording medium, to identify, depending on the parametric data, the endpoint for a target service that supports the operation; medium, recorded on a recording medium, to create a target service request to perform the operation of the target service; and a half, recorded on a recording medium, to send the target service request to the target service.

Petição 870180049145, de 08/06/2018, pág. 15/71Petition 870180049145, of 06/08/2018, p. 15/71

8/63 [0016] A invenção pode ser implementada em um software computacional.8/63 [0016] The invention can be implemented in computational software.

Breve Descrição dos Desenhos [0017] Concretizações preferidas da presente invenção serão agora descritas par meio de exemplo somente e com referência aos seguintes desenhos:Brief Description of the Drawings [0017] Preferred embodiments of the present invention will now be described by way of example only and with reference to the following drawings:

As figuras IA e 1B apresentam desenhos de linha de arquiteturas exemplificativas para serviços da web, em que suporte de proxy agnóstico quanto ao tipo de porta para os intermediários dos serviços da web podem ser implementados de acordo com as concretizações da presente invenção.Figures IA and 1B show line drawings of exemplary architectures for web services, in which proxy support agnostic as to the type of port for web service intermediaries can be implemented in accordance with the embodiments of the present invention.

A figura 2A apresenta um desenho de linha de um diagrama de blocos de um intermediário exemplar de acordo com concretizações da presente invenção.Figure 2A shows a line drawing of a block diagram of an exemplary intermediate according to embodiments of the present invention.

A figura 2B apresenta um desenho de linha de um diagrama de blocos de um intermediário (202) implementando um canal SOAP - http de acordo com as concretizações da presente invenção.Figure 2B shows a line drawing of a block diagram of an intermediary (202) implementing a SOAP - http channel according to the embodiments of the present invention.

A figura 3 mostra um fluxograma ilustrando, de acordo com uma primeira concretização, um método de suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da web.Figure 3 shows a flowchart illustrating, according to a first embodiment, an agnostic proxy support method as to the type of port for web service intermediaries.

A figura 4 apresenta um fluxograma que ilustra, de acordo com uma segunda concretização, um método de suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da web.Figure 4 presents a flowchart that illustrates, according to a second embodiment, an agnostic proxy support method as to the type of port for web service intermediaries.

A figura 5 apresenta um fluxograma que ilustra, de acordo com uma segunda concretização, um método de espera (361) de uma resposta a partir de um serviço alvo quando uma solicitação requer uma resposta sincrona.Figure 5 shows a flowchart that illustrates, according to a second embodiment, a method of waiting (361) for a response from a target service when a request requires a synchronous response.

Petição 870180049145, de 08/06/2018, pág. 16/71Petition 870180049145, of 06/08/2018, p. 16/71

9/639/63

Modo para a Invenção [0018] A presente invenção é descrita por uma ampla extensão nessa especificação em termos de métodos para suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da web. Pessoas versadas na técnica, no entanto, reconhecerão que qualquer sistema de computador que inclua meios de programação para operação de acordo com os métodos divulgados também cairá dentro do escopo da presente invenção. Meios de programação adequados incluem quaisquer meios para direcionar um sistema de computador para executar as etapas do método da invenção, incluindo, por exemplo, sistemas compreendidos por unidades de processamento e circuitos de lógica aritmética acoplados à memória do computador, cujos sistemas têm a capacidade de armazenar na memória do computador, onde a memória do computador inclui circuitos eletrônicos configurados para armazenar dados e instruções de programa, etapas programadas do método da invenção para execução por uma unidade de processamento.Mode for the Invention [0018] The present invention is described by a wide extent in that specification in terms of methods for supporting agnostic proxy as to the type of port for web service intermediaries. Persons skilled in the art, however, will recognize that any computer system that includes programming means for operation in accordance with the disclosed methods will also fall within the scope of the present invention. Suitable programming means include any means for directing a computer system to perform the steps of the method of the invention, including, for example, systems comprised of processing units and arithmetic logic circuits coupled to the computer's memory, whose systems are capable of store in the computer's memory, where the computer's memory includes electronic circuits configured to store data and program instructions, programmed steps of the method of the invention for execution by a processing unit.

[0019] A invenção também pode ser concretizada em um produto de programa de computador, tal como um disquete ou outra midia de gravação para uso com qualquer sistema de processamento de dados adequado. Concretizações de um produto de programa de computador podem ser implementadas pelo uso de qualquer midia de gravação para informação legivel por máquina, incluindo midia magnética, midia óptica, ou outra midia adequada. Pessoas versadas na técnica reconhecerão imediatamente que qualquer computador tendo meios de programação adequados será capaz de executar as etapas do método da invenção conforme concretizado em um[0019] The invention can also be realized in a computer program product, such as a floppy disk or other recording medium for use with any suitable data processing system. Embodiments of a computer program product can be implemented by using any recording media for machine-readable information, including magnetic media, optical media, or other suitable media. Persons skilled in the art will immediately recognize that any computer having adequate programming means will be able to perform the steps of the method of the invention as embodied in a

Petição 870180049145, de 08/06/2018, pág. 17/71Petition 870180049145, of 06/08/2018, p. 17/71

10/63 produto de programa. Pessoas versadas na técnica reconhecerão imediatamente que, embora, a maioria das concretizações exemplificativas descritas nessa descrição são orientadas por softwares instalados e em execução do hardware computacional, no entanto, concretizações alternativas implementadas como firmware ou como hardware estão dentro do escopo da presente invenção.10/63 program product. Persons skilled in the art will immediately recognize that, although most of the exemplary embodiments described in this description are guided by software installed and running on the computer hardware, however, alternative embodiments implemented as firmware or as hardware are within the scope of the present invention.

Definições [0020] Um registro de negócios, como o termo usado nessa descrição, é um diretório da Internet de serviços da web contendo listagens de negócios e os serviços da web oferecidos pelas lojas. As listagens de serviços da web incluem operações suportadas, tipos de porta, endpoints, bindings, e assim por diante. Alguns registros empresariais são baseados em padrões abertos, tais como ebXML, e alguns são baseados em especificações conduzidas por consórcios industriais, tais como UDDI. As empresas podem se registrar com um registrador. As empresas podem submeter o material a ser compartilhado através de um registro e os clientes do registro podem buscar por material que outros tenham submetido. Registros empresariais podem ser acessados e pesquisados manualmente através de navegadores ou programaticamente através de APIs que podem ser serviços da rede. Os registros estão se tornando um componente cada vez mais importante de serviços da rede porque eles permitem que as empresas colaborem umas com as outras, dinamicamente, em uma maneira acoplada frouxamente.Definitions [0020] A business register, as the term used in this description, is an Internet directory of web services containing business listings and web services offered by stores. Web service listings include supported operations, port types, endpoints, bindings, and so on. Some business registries are based on open standards, such as ebXML, and some are based on specifications conducted by industrial consortia, such as UDDI. Companies can register with a registrar. Companies can submit material to be shared through a registry and customers of the registry can search for material that others have submitted. Business records can be accessed and searched manually through browsers or programmatically through APIs that can be network services. Records are becoming an increasingly important component of network services because they allow companies to collaborate with each other, dynamically, in a loosely coupled manner.

[0021] HTTP significa HyperText Transfer Protocol - Protocolo de Transferência de Hipertexto - o protocolo de comunicação de dados mais comum na rede. Nesta especificação,[0021] HTTP stands for HyperText Transfer Protocol - Hypertext Transfer Protocol - the most common data communication protocol on the network. In this specification,

Petição 870180049145, de 08/06/2018, pág. 18/71Petition 870180049145, of 06/08/2018, p. 18/71

11/63 o termo rede, porém, não está limitado às comunicações de HTTP, mas também pode incluir comunicações com outros protocolos que suportam modos similares de comunicação, tais como HDTP, o Handheld Device Transfer Protocol - Protocolo de Transferência para Dispositivos Portáteis - ou WAP, o Wireless Access Protocol - Protocolo de Acesso Sem Fio e outros, como ocorrerá àqueles versados na técnica.11/63 the term network, however, is not limited to HTTP communications, but it can also include communications with other protocols that support similar modes of communication, such as HDTP, the Handheld Device Transfer Protocol - or WAP, the Wireless Access Protocol - Wireless Access Protocol and others, as will occur to those skilled in the art.

[0022] SOAP significa Simple Object Access Protocol ou Protocolo Simples de Acesso a Objetos, um protocolo leve de mensagens baseado em XML usado para codificar a informação em mensagens de solicitação de serviços e resposta da Rede, antes de enviá-las através de uma rede. As mensagens de SOAP são independentes de qualquer sistema ou protocolo operacional e podem ser transportadas usando uma variedade de protocolos de Internet, incluindo SMTP, MIME e http.[0022] SOAP stands for Simple Object Access Protocol or Simple Object Access Protocol, a lightweight XML-based messaging protocol used to encode information in network service request and response messages, before sending them over a network . SOAP messages are independent of any operating system or protocol and can be transported using a variety of Internet protocols, including SMTP, MIME and http.

[0023] UDDI significa Universal Description, Discovery and Integration - Descrição, Descoberta e Integração Universal, um diretório distribuído com base na rede, que permite às empresas se relacionar na Internet e descobrirem umas às outras, similar às páginas amarelas e brancas da lista telefônica tradicional.[0023] UDDI stands for Universal Description, Discovery and Integration - Description, Discovery and Universal Integration, a distributed directory based on the network, which allows companies to connect on the Internet and discover each other, similar to the yellow and white pages of the phone book traditional.

[0024] WSDL significa Web Services Description Language - Linguagem para Descrição de Serviços de Rede. WSDL é uma linguagem formatada em XML, que foi desenvolvida conjuntamente - pela Microsoft e pela IBM e é usada para descrever as capacidades de serviços da Rede como coleções de endpoints de comunicação capazes de trocar mensagens. WSDL é uma parte integral de UDDI pelo fato de UDDI usar a USDL para descrever as capacidades dos serviços da rede.[0024] WSDL stands for Web Services Description Language - Language for Description of Network Services. WSDL is an XML formatted language, which was developed jointly - by Microsoft and IBM and is used to describe the network's service capabilities as collections of communication endpoints capable of exchanging messages. WSDL is an integral part of UDDI because UDDI uses USDL to describe the capabilities of network services.

Petição 870180049145, de 08/06/2018, pág. 19/71Petition 870180049145, of 06/08/2018, p. 19/71

12/63 [0025] ebXML significa electronic business Extensible Markup Language - Linguagem de Marcação Extensível de negócios eletrônicos, um conjunto modular de especificações para padronização de descrições de serviços da rede em XML para facilitar o comércio eletrônico. Como UDDI, a especificação de ebXML dá às empresas um método padrão de comércio eletrônico. Como UDDI, a especificação de ebXML da as empresas um método padrão para definir e registrar serviços da rede.12/63 [0025] ebXML stands for electronic business Extensible Markup Language - Extensible Markup Language for electronic business, a modular set of specifications for standardizing network service descriptions in XML to facilitate electronic commerce. Like UDDI, the ebXML specification gives companies a standard method of e-commerce. Like UDDI, the ebXML specification gives companies a standard method for defining and registering network services.

[0026] Esta especificação, em geral, descreve componentes de serviços da rede com uma terminologia similar àquela de WSDL. Os serviços da rede são descritos como coleções de endpoints de rede, endpoints de comunicações de dados, capazes de trocar mensagens. Os endpoints são referidos, algumas vezes, como portas. Nesta especificação em geral, porém, o termo endpoint é preferido à porta, para reduzir o risco de confusão com o termo tipo de porta. Um tipo de porta não é um tipo da porta ou um tipo de endpoint. Um tipo de porta é uma coleção de operações, isto é, ações ou funções de software, suportada por um serviço.[0026] This specification, in general, describes network service components with terminology similar to that of WSDL. Network services are described as collections of network endpoints, data communications endpoints, capable of exchanging messages. Endpoints are sometimes referred to as ports. In this general specification, however, the term endpoint is preferred to the port, to reduce the risk of confusion with the term port type. A port type is not a port type or an endpoint type. A port type is a collection of operations, that is, software actions or functions, supported by a service.

[0027] Um protocolo de comunicação particular e uma especificação de formato de dados para um tipo de porta constituem um binding. Um exemplo de binding é SOAP/HTTP, com dados de mensagens codificados de acordo com SOAP e mensagens comunicadas entre endpoints de acordo com HTTP. Outro exemplo de um binding é GET/POST/HTTP, com dados de mensagens codificados em mensagens de GET ou POST e comunicações de dados realizados de acordo com HTTP.[0027] A particular communication protocol and a data format specification for a port type constitute a binding. An example of binding is SOAP / HTTP, with message data encoded according to SOAP and messages communicated between endpoints according to HTTP. Another example of a binding is GET / POST / HTTP, with message data encoded in GET or POST messages and data communications performed according to HTTP.

Petição 870180049145, de 08/06/2018, pág. 20/71Petition 870180049145, of 06/08/2018, p. 20/71

13/63 [0028] Cada tipo de porta pode ter mais de um binding. Um endpoint é definido pela associação de um endereço de rede com uma binding e, como mencionado, uma coleção de endpoints define um serviço. A comunicação de dados e as solicitações de operações em serviços da rede são realizadas através de estruturas de dados chamadas mensagens, que, por sua vez, são compostas de partes. Os termos solicitação e resposta são, em geral, indicações da direção de fluxo de mensagens. As mensagens de solicitação e as mensagens de resposta para um binding particular podem ter a mesma estrutura.13/63 [0028] Each type of port can have more than one binding. An endpoint is defined by the association of a network address with a binding and, as mentioned, a collection of endpoints defines a service. Data communication and requests for operations in network services are carried out through data structures called messages, which, in turn, are composed of parts. The terms request and response are generally indications of the direction of message flow. Request messages and response messages for a particular binding can have the same structure.

Suporte de Proxy Agnóstico quanto ao tipo de porta paraAgnostic Proxy Support as to the type of port for

Intermediários de Serviços de Rede.Network Service Intermediaries.

[0029] Com referência aos desenhos anexos, métodos, sistemas e produzidos são descritos para suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da rede, começando com as figuras IA e 1B. A figura IA apresenta uma linha desenho de uma arquitetura exemplificativa para serviços da rede em que suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da rede pode ser implementado de acordo com as modalidades da presente invenção. Na arquitetura da figura IA, o intermediário (202) é capaz de conexão para comunicação de dados através de um protocolo ao solicitante (102) e serviço alvo (118) . Um componente de serviços da rede na posição de solicitante (102) algumas vezes referido como um cliente. Similarmente, um componente na posição de intermediário (202), em particular quando observado do ponto de vista de um solicitante, e algumas vezes referido como um servidor.[0029] With reference to the attached drawings, methods, systems and products are described to support agnostic proxy as to the type of port for network service intermediaries, starting with figures IA and 1B. Figure IA presents a line drawing of an exemplary architecture for network services in which proxy support agnostic as to the type of port for network service intermediaries can be implemented in accordance with the modalities of the present invention. In the architecture of figure IA, the intermediary (202) is capable of connecting data communication through a protocol to the requester (102) and target service (118). A service component of the network in the position of requester (102) sometimes referred to as a customer. Similarly, a component in the middle position (202), in particular when viewed from the point of view of a requester, and sometimes referred to as a server.

Petição 870180049145, de 08/06/2018, pág. 21/71Petition 870180049145, of 06/08/2018, p. 21/71

14/63 [0030] A distinção cliente/ servidor deve ser usada cuidadosamente no contexto de serviços da rede. Na arquitetura da figura IB, por exemplo, o serviço alvo (118) , no processo de preparo de uma resposta para uma solicitação do solicitante (102) pode, por sua vez, solicitar serviços da rede do serviço alvo (119) através do intermediário (203) . Em assim fazendo, o serviço alvo (118) está atuando como um cliente. Se um componente particular é considerado um cliente ou um servidor em qualquer momento particular depende da função particular que está sendo realizada pelo componente no momento. Isto é, um componente de serviços da rede pode ser um cliente em um momento, e um servidor em seguida. Para reduzir o risco de confusão de terminologia, portanto, componentes de serviços da rede, usualmente, são descritos nesta especificação pelo uso dos termos solicitante, intermediário e serviço alvo em lugar de cliente ou servidor.14/63 [0030] The client / server distinction should be used carefully in the context of network services. In the architecture of figure IB, for example, the target service (118), in the process of preparing a response to a request from the requester (102) can, in turn, request services from the target service network (119) through the intermediary (203). In doing so, the target service (118) is acting as a customer. Whether a particular component is considered a client or a server at any particular time depends on the particular function being performed by the component at the moment. That is, a service component of the network can be a client at a time, and a server afterwards. To reduce the risk of confusion of terminology, therefore, network service components are usually described in this specification by using the terms requester, intermediary and target service instead of client or server.

[0031] A fim de que o intermediário (202) proporcione serviços intermediários em nome do serviço alvo (118), o intermediário (202) deve conhecer um endpoint no serviço alvo (118). Conforme mencionado acima, no estado da técnica, um serviço, chamado de proxy, executando no intermediário (202), suportará o mesmo tipo de porta que o serviço alvo (118) e terá em seus dados de configuração um endpoint para serviço alvo (118). Na arquitetura da figura 1, porém, o proxy é 'agnóstico quanto ao tipo de porta’, significando que nenhum dado de configuração disponível para o proxy descreve um endpoint do serviço alvo e que o solicitante (102) pode submeter solicitações para operações em tipos porta completamente desconhecidos para o intermediário.[0031] In order for the intermediary (202) to provide intermediary services on behalf of the target service (118), the intermediary (202) must know an endpoint in the target service (118). As mentioned above, in the state of the art, a service, called a proxy, running at the intermediary (202), will support the same type of port as the target service (118) and will have in its configuration data an endpoint for the target service (118 ). In the architecture of figure 1, however, the proxy is 'port type agnostic', meaning that no configuration data available to the proxy describes an endpoint of the target service and that the requester (102) can submit requests for operations on types port completely unknown to the middleman.

Petição 870180049145, de 08/06/2018, pág. 22/71Petition 870180049145, of 06/08/2018, p. 22/71

15/63 [0032] A figura 2A apresenta um desenho de linha de um diagrama em blocos de um intermediário (202) exemplificativo de acordo com as concretizações da presente invenção. O intermediário (202) compreende máquinas de computação automatizadas, um sistema de computador, incluindo pelo menos uma unidade central de processamento, memória de computador, um barramento de sistema e assim por diante. Os blocos no diagrama em blocos da figura 2A representam módulos de aplicação de software operáveis em um sistema de computador de intermediário (202) . As setas na figura 2A representam o fluxo de dados entre módulos de software.15/63 [0032] Figure 2A shows a line drawing of a block diagram of an exemplary intermediate (202) according to the embodiments of the present invention. Intermediate (202) comprises automated computing machines, a computer system, including at least one central processing unit, computer memory, a system bus, and so on. The blocks in the block diagram of figure 2A represent software application modules operable in an intermediary computer system (202). The arrows in figure 2A represent the data flow between software modules.

[0033] O intermediário (202) inclui um agente de entrada (208) capaz de receber de um solicitante (102) uma solicitação (106), incluindo informação paramétrica (107), para execução de uma operação de serviços da rede. Aqui está um exemplo dessa solicitação para binding SOAP-HTTP:[0033] The intermediary (202) includes an input agent (208) capable of receiving a request (102) from a requestor (102), including parametric information (107), to perform a network service operation. Here is an example of this request for SOAP-HTTP binding:

POST/Channel/proxy? portType=A HTTP/1.1POST / Channel / proxy? portType = A HTTP / 1.1

Host: www.myhtermediary.comHost: www.myhtermediary.com

Content-Type: text/xml; charset= utf-8Content-Type: text / xml; charset = utf-8

Content-Length: nnnnContent-Length: nnnn

SOAPAction: Some-URI <SOAP-ENV: Envelope xmlns:SOAP-ENV = http://schemas.xmlscap.org/ scap/envelope/SOAPAction: Some-URI <SOAP-ENV: Envelope xmlns: SOAP-ENV = http://schemas.xmlscap.org/ scap / envelope /

SOAP-ENV:encodingStyle=http://schemas.xmlsoap.org/ scap/encoding/”>SOAP-ENV: encodingStyle = http: //schemas.xmlsoap.org/ scap / encoding / ”>

<SOAP-ENV: Body><SOAP-ENV: Body>

<m: myOp xmlns:m=Some-URI><m: myOp xmlns: m = Some-URI>

</m: myOp></ m: myOp>

Petição 870180049145, de 08/06/2018, pág. 23/71Petition 870180049145, of 06/08/2018, p. 23/71

16/6316/63

C/SOAP-ENV: Body>C / SOAP-ENV: Body>

</SOAP-ENV: Envelope></ SOAP-ENV: Envelope>

[0034] Essa mensagem POST exemplificativa inclui um envelope SOAP, solicitando a operação ’myOp’ do intermediário. Isto é, o nome da operação a ser executada em um serviço alvo (118) é identificado internamente dentro da mensagem soap. A operação myOp, seu tipo de porta e seu endpoint são todos conhecidos para o intermediário (202) antes que a solicitação seja recebida. Neste exemplo, a informação paramétrica (107) da qual um endpoint para um serviço alvo (118), que suporta a operação, pode ser identificado é apresentada em um par nome-valor na cadeia de consultas de URI-codifiçada na primeira linha de POST:portType=A.[0034] This example POST message includes a SOAP envelope, requesting the ‘myOp’ operation from the broker. That is, the name of the operation to be performed on a target service (118) is identified internally within the soap message. The myOp operation, its port type and its endpoint are all known to the broker (202) before the request is received. In this example, the parametric information (107) from which an endpoint for a target service (118), which supports the operation, can be identified is presented in a name-value pair in the URI-coded query string on the first line of POST : portType = A.

[0035] Em uma segunda concretização, a primeira linha da solicitação exemplificativa deve ser:[0035] In a second embodiment, the first line of the example request must be:

POST/Channel/proxy?portType=A&synchRespReqd=TruePOST / Channel / proxy? PortType = A & synchRespReqd = True

HTTP/1.1 HTTP / 1.1 [0036] Nesta [0036] In this segunda Monday modalidade, a modality, the informação information paramétrica (107) parametric (107) inclui includes um par a couple nome-valor name-value synchRespReqd=True synchRespReqd = True do qual um proxy agnóstico of which an agnostic proxy quanto ao about the

tipo de porta de acordo com uma concretização da presente invenção pode determinar se a solicitação requer uma resposta sincrona.type of door according to an embodiment of the present invention can determine whether the request requires a synchronous response.

[0037] Além de receber de um solicitante (102) uma solicitação (106), incluindo informação paramétrica (107), para serviços da rede, o agente de entrada (208) também tem uma capacidade de fornecer a solicitação, incluindo seus dados paramétricos, para o proxy agnóstico quanto ao tipo de porta (212) . Consideremos como um exemplo de operação de[0037] In addition to receiving a request (102) from a requestor (106), including parametric information (107), for network services, the input agent (208) also has an ability to provide the request, including its parametric data , for the agnostic proxy regarding the type of port (212). Let us consider as an example of

Petição 870180049145, de 08/06/2018, pág. 24/71Petition 870180049145, of 06/08/2018, p. 24/71

17/63 agente de entrada, a solicitação exemplificativa apresentada acima. Aquela solicitação exemplificativa é introduzida como SOAP-HTTP. Para essa solicitação (106), portanto, o agente de entrada pode ser um servidor de HTTP SOAP-ativado que transfere uma solicitação de entrada para um proxy (212) implementado como qualquer espécie de aplicação do tipo servidor, incluindo, por exemplo, script Java Bean, Java servlet ou CGI (Common Gateway Interface) escrito em Perl. Scripts Java servlets e CGI são mencionados apenas para explanação, não para limitação. Dentro do escopo da presente invenção, qualquer espécie de funcionalidade do lado do servidor como ocorrerá para aqueles versados na técnica pode ser usada para implementar funções de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da rede.17/63 incoming agent, the example request presented above. That example request is introduced as SOAP-HTTP. For this request (106), therefore, the incoming agent can be a SOAP-enabled HTTP server that transfers an incoming request to a proxy (212) implemented as any kind of server-type application, including, for example, script Java Bean, Java servlet or CGI (Common Gateway Interface) written in Perl. Java servlets and CGI scripts are mentioned for explanation only, not for limitation. Within the scope of the present invention, any kind of server-side functionality as will occur for those skilled in the art can be used to implement agnostic proxy functions as to the type of port for network service intermediaries.

[0038] O proxy agnóstico quanto ao tipo de porta (212) pode ter um código rígido para operar exclusivamente como um proxy agnóstico quanto ao tipo de porta ou, alternativamente, o proxy agnóstico quanto ao tipo de porta (212) pode operar modalmente na dependência de parâmetros de configuração (223) . Um parâmetro de configuração pode ser proporcionado para indicar se o proxy agnóstico quanto ao tipo de porta (212) deve operar como um serviço intermediário tradicional ou em um modo agnóstico quanto ao tipo de porta. Esse parâmetro de configuração, vantajosamente, promove codificação de programa eficiente, incluindo, particularmente, a reutilização de segmentos de código que poderíam ser utilizados em ambos os modos. Outro parâmetro de configuração, suportando uso eficiente de código de programa é um parâmetro identificando uma binding ou 'tipo de canal' para um proxy. Como explicado em mais detalhes[0038] The agnostic proxy for the type of port (212) can have a hard code to operate exclusively as an agnostic proxy for the type of port or, alternatively, the agnostic proxy for the type of port (212) can operate modally in the dependency on configuration parameters (223). A configuration parameter can be provided to indicate whether the agnostic proxy for the type of port (212) should operate as a traditional intermediate service or in an agnostic mode for the type of port. This configuration parameter advantageously promotes efficient program coding, including, in particular, the reuse of code segments that could be used in both modes. Another configuration parameter, supporting efficient use of program code is a parameter identifying a binding or 'channel type' for a proxy. As explained in more detail

Petição 870180049145, de 08/06/2018, pág. 25/71Petition 870180049145, of 06/08/2018, p. 25/71

18/63 abaixo, o proxy agnóstico quanto ao tipo de porta pode operar com qualquer binding suportada por serviços da rede, SOAP, MIME, GET/POST/HTTP, e assim por diante. 0 proxy agnóstico quanto ao tipo de porta pode ser codificado para operar com qualquer tipo de binding ou canal e, então, configurado com um parâmetro recomendando o proxy de seu tipo de binding ou canal para operações em tempo de processamento. Além disso, um parâmetro de configuração pode ser proporcionado para ligar ou desligar serviços de intermediários no proxy, o que requererá a análise dos conteúdos de uma mensagem de solicitação ou de resposta. Esse parâmetro, vantajosamente, pode ser usado para otimizar o desempenho porque a análise dos conteúdos da mensagem em uma tendência a reduzir o desempenho do intermediário. Muitos proxies agnósticos quanto ao tipo de porta bem como outros serviços intermediários podem operar simultaneamente no intermediário (202) e os nomes para cada um podem ser atribuídos como parâmetros de configuração. Manipuladores e filtros de mensagens podem ser atribuídos a proxies em parâmetros de configuração. Esse parágrafo descreve diversos parâmetros de configuração para proxies agnósticos quanto ao tipo de porta por meio de explanação, não de limitação. O uso de quaisquer parâmetros de configuração como ocorrerá para aqueles versados na técnica está dentro do escopo da presente invenção.18/63 below, the port type agnostic proxy can operate with any binding supported by network services, SOAP, MIME, GET / POST / HTTP, and so on. The port type agnostic proxy can be coded to operate with any type of binding or channel and then configured with a parameter recommending the proxy of its type of binding or channel for processing time operations. In addition, a configuration parameter can be provided to turn on or off intermediary services in the proxy, which will require the analysis of the contents of a request or response message. This parameter can advantageously be used to optimize performance because the analysis of the message contents in a tendency to reduce the performance of the intermediary. Many agnostic proxies as to the type of port as well as other intermediate services can operate simultaneously on the intermediate (202) and the names for each one can be assigned as configuration parameters. Message handlers and filters can be assigned to proxies in configuration parameters. This paragraph describes several configuration parameters for agnostic proxies as to the type of port by way of explanation, not limitation. The use of any configuration parameters as will occur for those skilled in the art is within the scope of the present invention.

[0039] A figura 2B apresenta um desenho de linha de um diagrama em blocos de um intermediário (202) exemplificativo, implementando um canal de SOAP-HTTP de acordo com concretizações da presente invenção. Como mencionado, um agente de entrada (208), capaz de proporcionar[0039] Figure 2B shows a line drawing of a block diagram of an exemplary intermediate (202), implementing a SOAP-HTTP channel according to embodiments of the present invention. As mentioned, an input agent (208), capable of providing

Petição 870180049145, de 08/06/2018, pág. 26/71Petition 870180049145, of 06/08/2018, p. 26/71

19/63 a solicitação, incluindo dados paramétricos, para o proxy agnóstico quanto ao tipo de porta (212) para uma solicitação com um binding SOAP, pode ser implementado como um servidor de HTTP SOAP ativado. Esse agente de entrada pode ser configurado com um número de referências para objetos de SOAPHandler (210) para o proxy, onde cada objeto (210) de SOAPHandler é configurado para proporcionar uma tarefa de processamento de dados na solicitação para o proxy. Esse agente de entrada, tipicamente, opera pelo encapsulamento da solicitação de entrada junto com sua informação paramétrica (107) em um objeto de SOAPContext (209), passagem de uma referência ao objeto de SOAPContext, por sua vez, para cada SOAPHandler (210) configurado para o proxy e, então, passando o SOAPContext (209) em sua totalidade para o proxy (212). Em um sentido geral, é um proxy agnóstico quanto ao tipo de porta que identifica o endpoint, mas um nivel de implementação detalhado pode incluir funcionalidade de proxy nos manipuladores, como é o caso para SOAP. Isto é, o agente de entrada pode estabelecer uma propriedade em um SOAPContext (209) que pode ser estabelecido para um endpoint de um serviço alvo, uma URL no caso de SOAP-HTTP. Nessa modalidade, um dos objetos de SOAPHandler (210), de modo útil, pode ser programado para extrair a informação paramétrica da solicitação e colocá-la em pares de nome-valor no SOAPContext de modo que o proxy pode usá-la para identificar um endpoint para um serviço alvo (118), que suporta uma operação solicitada de serviços da rede.19/63 the request, including parametric data, to the agnostic proxy as to the type of port (212) for a request with a SOAP binding, can be implemented as an HTTP SOAP enabled server. This input agent can be configured with a number of references to SOAPHandler objects (210) for the proxy, where each SOAPHandler object (210) is configured to provide a data processing task in the request to the proxy. This input agent typically operates by encapsulating the input request along with its parametric information (107) in a SOAPContext object (209), passing a reference to the SOAPContext object, in turn, for each SOAPHandler (210) configured for the proxy and then passing the SOAPContext (209) in its entirety to the proxy (212). In a general sense, it is an agnostic proxy as to the type of port that identifies the endpoint, but a detailed implementation level may include proxy functionality in the handlers, as is the case for SOAP. That is, the input agent can establish a property in a SOAPContext (209) that can be established for an endpoint of a target service, a URL in the case of SOAP-HTTP. In this modality, one of the SOAPHandler objects (210) can be usefully programmed to extract the parametric information from the request and place it in name-value pairs in SOAPContext so that the proxy can use it to identify a endpoint for a target service (118), which supports a requested operation of network services.

[0040] Alternativamente, uma solicitação de entrada pode ser ligada com GET/HTTP em lugar de SOAP. Nesse exemplo, o proxy (212), na figura 2A, pode ser implementado como Java[0040] Alternatively, an incoming request can be linked with GET / HTTP instead of SOAP. In this example, the proxy (212), in figure 2A, can be implemented as Java

Petição 870180049145, de 08/06/2018, pág. 27/71Petition 870180049145, of 06/08/2018, p. 27/71

20/63 servlet, o agente de entrada (208) pode ser implementado como um servidor de HTTP Java-ativado, que encapsula a solicitação, incluindo sua informação paramétrica (107), em um objeto de HTTPServletRequest e proporciona para o proxy uma referência àquele objeto de HTTPServletRequest. 0 proxy pode, então, obter a informação paramétrica através de uma chamada para HTTPServletRequest.getQueryString() , que retorna a cadeia de consulta da URL de solicitação, isto é, tudo na URL de solicitação após a marca em questão. Tendo toda a cadeia de consulta, esse proxy exemplificativo e programado para extrair os dados paramétricos da cadeia de consulta, isto é, neste exemplo, portType=A e usar a informação assim extraída para identificar um endpoint para um serviço alvo (118) que suporta uma operação de serviços da rede solicitados. Uma maneira em que o proxy pode identificar um endpoint para um serviço alvo que suporta uma operação de serviços da rede solicitados é recuperar uma descrição de endpoint de um registro empresarial (211) , tal como um registro de UDDI ou um registro de ebXML. Os serviços alvo (118), tipicamente, fazem essas descrições, incluindo, por exemplo, descrições expressas como documentos de WSDL, pelo registro (224) das mesmas em um registro empresarial (211) .20/63 servlet, the input agent (208) can be implemented as a Java-enabled HTTP server, which encapsulates the request, including its parametric information (107), in an HTTPServletRequest object and provides the proxy with a reference to that HTTPServletRequest object. The proxy can then obtain parametric information by calling HTTPServletRequest.getQueryString (), which returns the query string from the request URL, that is, everything in the request URL after the tag in question. Having the entire query chain, this exemplary proxy is programmed to extract the parametric data from the query chain, that is, in this example, portType = A and use the information thus extracted to identify an endpoint for a target service (118) that it supports an operation of requested network services. One way in which the proxy can identify an endpoint for a target service that supports an operation of requested network services is to retrieve an endpoint description from a business record (211), such as a UDDI record or an ebXML record. Target services (118) typically make these descriptions, including, for example, descriptions expressed as WSDL documents, by registering (224) them in a business registry (211).

[0041] [0041] Em In serviços da rede network services baseados em SOAP, based on SOAP, a The própria mensagem own message de SOAP contém o SOAP contains the nome da operação e operation name and os the parâmetros parameters para for a operação, eles the operation, they não estão na URL are not in the URL de in endpoint. É endpoint. IS útil useful para o intermediário receber informação for the intermediary to receive information

paramétrica, tal como o parâmetro portType. Aquele parâmetro pode ser algo tão simples quanto o nome do portType. Se for esse o caso, então, alguma lógica empresarial, que executaparametric, such as the portType parameter. That parameter can be something as simple as the name of the portType. If that is the case, then some business logic, which performs

Petição 870180049145, de 08/06/2018, pág. 28/71Petition 870180049145, of 06/08/2018, p. 28/71

21/63 no servidor (em um manipulador, por exemplo, ou mesmo na própria função de proxy) deve escolher a URL de endpoint real para o serviço alvo (118) com base no tipo de porta ou outra informação paramétrica. A informação paramétrica pode mesmo incluir uma URL de endpoint real. Naquele caso, 'lógica empresarial' poderia finalmente enviar a solicitação para aquela URL. Tanto o tipo de porta quanto a URL de endpoint poderiam estar presentes na informação paramétrica e a 'lógica empresarial’ pode, então, tentar determinar uma URL de endpoint e usar uma na solicitação como um padrão, se nada melhor for encontrado. A invenção, de preferência, permite todos os três cenários bem como quaisquer variantes que possam ser controladas pela 'lógica empresarial’. Sempre pode haver outros parâmetros que ajudam a controlar a 'lógica empresarial’.21/63 on the server (in a handler, for example, or even in the proxy function itself) must choose the actual endpoint URL for the target service (118) based on the type of port or other parametric information. Parametric information can even include an actual endpoint URL. In that case, 'business logic' could finally send the request to that URL. Both the port type and the endpoint URL could be present in the parametric information and 'business logic' can then try to determine an endpoint URL and use one in the request as a standard, if nothing better is found. The invention, preferably, allows all three scenarios as well as any variants that can be controlled by 'business logic'. There can always be other parameters that help to control 'business logic'.

[0042] Embora essa especificação tenda a discutir bindings exemplificativas em termos da binding SOAP-HTTP e algumas vezes em termos da binding GET/POST/HTTP, a discussão dessas bindings exemplificativas para conveniência de explanação e não como uma limitação. Bindings exemplificativas alternativas úteis de acordo com as várias concretizações da invenção incluem MIME/SMTP (Multipart Internet Mail Extensions através do Small Message Transport protocol) e RML/IIOP (Java's Remote Method Invocation over the Common Object Request Broker Architecture's Internet Inter-ORB Protocol) . De fato, uma classe Java arbitrária pode ser tratada como um serviço de Rede, com invocações de Java nativa como o protocolo de acesso e o uso nos proxies agnósticos do tipo de porta de qualquer outra binding, como ocorrerá para aqueles versados na técnica, está dentro do[0042] Although this specification tends to discuss exemplary bindings in terms of the SOAP-HTTP binding and sometimes in terms of the GET / POST / HTTP binding, the discussion of these exemplary bindings for convenience of explanation and not as a limitation. Exemplary alternative bindings useful according to the various embodiments of the invention include MIME / SMTP (Multipart Internet Mail Extensions via Small Message Transport protocol) and RML / IIOP (Java's Remote Method Invocation over the Common Object Request Broker Architecture's Internet Inter-ORB Protocol) . In fact, an arbitrary Java class can be treated as a Network service, with invocations of native Java as the access protocol and use in agnostic proxies of the port type of any other binding, as will occur for those skilled in the art, is inside

Petição 870180049145, de 08/06/2018, pág. 29/71Petition 870180049145, of 06/08/2018, p. 29/71

22/63 escopo da presente invenção, de acordo com concretizações preferidas.22/63 scope of the present invention, according to preferred embodiments.

[0043] No intermediário (202) exemplificativo da figura 2A, o proxy (212) é um proxy agnóstico quanto ao tipo de porta que é executado quaisquer que sejam os serviços intermediários para o qual ele é designado, autenticação de solicitante, validação de mensagem, logging de mensagem, serviços de relato de gerenciamento e assim por diante, identifica um endpoint de um serviço alvo (118) que suporta uma operação solicitada e, então, transmite a solicitação para o serviço alvo (118) através de interface de binding neutra (218) . Como explicado em mais detalhes abaixo, a interface de binding neutra (218) e uma interface cuja forma de uso não depende do binding de solicitação.[0043] In the exemplary intermediary (202) of figure 2A, the proxy (212) is an agnostic proxy as to the type of port that is executed whatever the intermediary services for which it is designated, requester authentication, message validation , message logging, management reporting services and so on, identifies an endpoint of a target service (118) that supports a requested operation and then transmits the request to the target service (118) through a neutral binding interface (218). As explained in more detail below, the neutral binding interface (218) is an interface whose form of use does not depend on the request binding.

[0044] No intermediário (202) exemplificativo (202) da figura 2A, a interface de binding neutra (218) opera um provedor (22 0) , que, por sua vez, chama um agente de saída (222) para encaminhar a solicitação (106) para um serviço alvo (118) . É possível que a interface (218) opere em um modo de binding neutra porque é recuperada pelo código no provedor (220), que é de protocolo específico. O provedor (220) realiza as trocas de mensagens reais de acordo com os específicos de um protocolo particular, SOAP, HTTP e assim por diante. O desacoplamento da interface de binding neutra do provedor que realiza a comunicação de dados real suporta registro dinâmico de novos provedores, de modo que um intermediário pode acentuar sua capacidade de comunicação de dados sem necessidade de recompilar ou redispor. Um provedor pode ser implementado como um objeto, frequentemente proporcionado por um serviço alvo suportado pelos protocolos[0044] In the example intermediary (202) (202) of figure 2A, the neutral binding interface (218) operates a provider (22 0), which, in turn, calls an outbound agent (222) to forward the request (106) for a target service (118). It is possible that the interface (218) operates in a neutral binding mode because it is retrieved by the code in the provider (220), which is protocol specific. The provider (220) performs the exchange of real messages according to the specifics of a particular protocol, SOAP, HTTP and so on. The decoupling of the provider's neutral binding interface that performs the actual data communication supports dynamic registration of new providers, so that an intermediary can enhance their data communication capacity without the need to recompile or redeploy. A provider can be implemented as an object, often provided by a target service supported by protocols

Petição 870180049145, de 08/06/2018, pág. 30/71Petition 870180049145, of 06/08/2018, p. 30/71

23/63 do provedor, com uma referência ao provedor dinamicamente instalado em uma interface de binding neutra. 0 agente de saida (222) é o agente real de comunicações de dados para o protocolo implementado pelo provedor (222) . Quando o protocolo é tomado como SOAP-HTTP, por exemplo, o agente de saida (222) é um agente de SOAP/HTTP capaz de enviar e receber mensagem de solicitação e de resposta de SOAP-HTTP para e dos serviços da rede alvos. Quando o protocolo é HTTP, por exemplo, o agente de saida é um módulo de cliente de comunicação de dados de HTTP, similar de um navegador de rede.23/63 of the provider, with a reference to the provider dynamically installed on a neutral binding interface. The outbound agent (222) is the actual data communications agent for the protocol implemented by the provider (222). When the protocol is taken as SOAP-HTTP, for example, the outbound agent (222) is a SOAP / HTTP agent capable of sending and receiving SOAP-HTTP request and response messages to and from the target network services. When the protocol is HTTP, for example, the outbound agent is an HTTP data communication client module, similar to a web browser.

[0045] A fim de proporcionar seus serviços intermediários, o intermediário, vantajosamente, é capaz de identificr um endpoint para uma solicitação. Um método para assim fazer é discutido com referência à figura 3. A figura 3 apresenta um fluxograma, ilustrando um método de suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da rede que inclui recebimento (104) em um intermediário (202) de serviços da rede de uma solicitação (106) para execução de uma operação de serviços da rede, em que a solicitação inclui informação paramétrica (107) da qual um endpoint para um serviço alvo, que suporta a operação, pode ser identificado.[0045] In order to provide its intermediary services, the intermediary is advantageously able to identify an endpoint for a request. A method for doing so is discussed with reference to figure 3. Figure 3 presents a flowchart, illustrating a method of agnostic proxy support as to the type of port for network service intermediaries that includes receiving (104) at an intermediary (202 ) network services of a request (106) to perform a network services operation, where the request includes parametric information (107) from which an endpoint for a target service, which supports the operation, can be identified.

[0046] Aqui está, mais uma vez, um exemplo dessa solicitação para a binding SOAP-HTTP:[0046] Here, again, is an example of this request for SOAP-HTTP binding:

POST/Channel/proxy?portType=A HTTP/1.1POST / Channel / proxy? PortType = A HTTP / 1.1

Host: www.myhtermediary.comHost: www.myhtermediary.com

Content-Type: text/xml; charset=utf-8Content-Type: text / xml; charset = utf-8

Content-Length: nnnnContent-Length: nnnn

SOAPAction:Some-URISOAPAction: Some-URI

Petição 870180049145, de 08/06/2018, pág. 31/71Petition 870180049145, of 06/08/2018, p. 31/71

24/63 <SOAP-ENV: Envelope xmlns: SOAP-ENV = http://schemas.xmlsoap.org/soap/ envelope/24/63 <SOAP-ENV: Envelope xmlns: SOAP-ENV = http://schemas.xmlsoap.org/soap/ envelope /

SOAP-ENV:encodingstyle=http://schemas.xmlsoap. org/soap/encoding/>SOAP-ENV: encodingstyle = http: //schemas.xmlsoap. org / soap / encoding />

<SOAP-ENV: Body><SOAP-ENV: Body>

<m: myOp xmlns: m=Some-URI><m: myOp xmlns: m = Some-URI>

</m: myOp></ m: myOp>

<SOAP-ENV: Body><SOAP-ENV: Body>

</SOAP-ENV: Envelope></ SOAP-ENV: Envelope>

[0047] Esta mensagem de POST exemplificativa inclui um envelope SOAP, solicitando a operação de ’myOp’ do intermediário (202) . A operação MyOp, seu tipo de porta, seu endpoint são todos conhecidos para o intermediário antes da solicitação ser recebida. Neste exemplo, a mensagem é tomada como o envelope SOAP e a informação paramétrica (107) da qual um endpoint para um serviço alvo, que suporta a operação, pode ser identificado é o parâmetro de HTTP portType=A. Neste exemplo, como o nome da operação no serviço alvo já está codificado no envelope SOAP, o único dado paramétrico a ser adicionado é o tipo de porta A, um tipo de porta que inclui a operação no serviço alvo.[0047] This example POST message includes a SOAP envelope, requesting the ‘myOp’ operation from the broker (202). The MyOp operation, its port type, its endpoint are all known to the intermediary before the request is received. In this example, the message is taken as the SOAP envelope and the parametric information (107) from which an endpoint for a target service, which supports the operation, can be identified is the HTTP parameter portType = A. In this example, as the name of the operation in the target service is already encoded in the SOAP envelope, the only parametric data to be added is the type of port A, a type of port that includes the operation in the target service.

[0048] 0 método da figura 3 também inclui identificar (108), na dependência dos dados paramétricos, o endpoint (110) de um serviço alvo que suporta a operação. Neste exemplo de SOAP-HTTP, identificação (108) do endpoint (110) de um serviço alvo (118) que suporte a operação é realizada pela recuperação de uma descrição de endpoint de um registro empresarial, tal como um registro de UDDI ou um registro de ebXML. Neste exemplo, o intermediário recupera de um registro[0048] The method of figure 3 also includes identifying (108), depending on the parametric data, the endpoint (110) of a target service that supports the operation. In this SOAP-HTTP example, identification (108) of the endpoint (110) of a target service (118) that supports the operation is accomplished by retrieving an endpoint description from a business record, such as a UDDI record or record of ebXML. In this example, the intermediary retrieves from a record

Petição 870180049145, de 08/06/2018, pág. 32/71Petition 870180049145, of 06/08/2018, p. 32/71

25/63 de um endpoint de tipo de porta A descrito como ligado por25/63 of a port type A endpoint described as connected by

SOAP-HTTP em endereço de rede http://www.myTarget.com/SOAP-SOAP-HTTP at http://www.myTarget.com/SOAP- network address

HTTP/servlets/.HTTP / servlets /.

[0049] 0 método ilustrado inclui a criação (112) de uma solicitação de serviço alvo (114) para execução da operação no serviço alvo. Neste exemplo, o intermediário é programado para criar uma solicitação de serviço alvo como na mensagem de HTTP POST, usando o endpoint no serviço alvo (118). Os dados paramétricos para identificação de um endpoint são cancelados e a solicitação é dirigida para um script para manipulação de mensagens SOAP as quais identificarão a operação do nome de operação no envelope[0049] The illustrated method includes the creation (112) of a target service request (114) to perform the operation on the target service. In this example, the broker is programmed to create a target service request as in the HTTP POST message, using the endpoint in the target service (118). Parametric data for identifying an endpoint is canceled and the request is directed to a script for handling SOAP messages which will identify the operation name operation on the envelope

SOAP.SOAP.

[0050] A solicitação de serviço alvo resultante é a seguinte:[0050] The resulting target service request is as follows:

POST/SOAP-HTTP/servlets/QuoteServiceservlet HTTP/1.1POST / SOAP-HTTP / servlets / QuoteServiceservlet HTTP / 1.1

Host: www.myTarget.comHost: www.myTarget.com

Content-Type: text/xml; charset= utf-8Content-Type: text / xml; charset = utf-8

Content-Length: nnnnContent-Length: nnnn

SOAPAction:Some-URI <S0AP-ENV: Envelope xmlns: SOAP-ENV = http://schemas.xmlsoap.org/soap/ envelope/SOAPAction: Some-URI <S0AP-ENV: Envelope xmlns: SOAP-ENV = http://schemas.xmlsoap.org/soap/ envelope /

SOAP-ENV: encodingStyle = http://schemas.xmlsoap.org/ soap/encoding/>SOAP-ENV: encodingStyle = http://schemas.xmlsoap.org/ soap / encoding />

<SOAP-ENV: Body><SOAP-ENV: Body>

<m:my0p xmlns:m=Some-URI><m: my0p xmlns: m = Some-URI>

</m:my0p></ m: my0p>

C/SOAP-ENV: Body>C / SOAP-ENV: Body>

</SOAP-ENV: Envelope></ SOAP-ENV: Envelope>

Petição 870180049145, de 08/06/2018, pág. 33/71Petition 870180049145, of 06/08/2018, p. 33/71

26/63 [0051] O método da figura 3 também inclui a emissão (116) da solicitação (114) de serviço alvo para o serviço alvo (118) . Neste exemplo, a solicitação de serviço alvo inclui a abertura de uma conexão de TCP/IP para o endpoint de serviço alvo (118) em http://www.myTarget.com/ e enviar a mensagem de HTTP POST através da conexão de TCP/IP ao serviço alvo.26/63 [0051] The method of figure 3 also includes the issue (116) of the target service request (114) to the target service (118). In this example, the target service request includes opening a TCP / IP connection to the target service endpoint (118) at http://www.myTarget.com/ and sending the HTTP POST message over the TCP connection / IP to the target service.

[0052] É útil notar que em pelo menos algumas concretizações da presente invenção, em métodos de suporte de proxy agnóstico quanto ao tipo de porta, tal como um ilustrado na figura 3, a solicitação do serviço alvo, conforme criada e emitida para o serviço alvo porta conteúdos de mensagem não examinados da solicitação recebida no intermediário de serviços da rede. No exemplo sob discussão exatamente acima, o serviço de proxy no intermediário identificou um endpoint de um serviço alvo dos dados paramétricos portType=A e redirecionou a mensagem para o endpoint assim identificado, tudo sem tocar, abrir, examinar, analisar ou de outra maneira perturbar o corpo de mensagem, o envelope SOAP, que permaneceu não examinado e inalterado por todo o processo de distribuição desde seu solicitante até seu serviço alvo. No processo, o serviço de proxy proporcionou um ou mais dos serviços intermediários, autenticação, relato de gerenciamento, equilíbrio de carga, agregação de serviço e assim por diante.[0052] It is useful to note that in at least some embodiments of the present invention, in support methods of agnostic proxy regarding the type of port, such as one illustrated in figure 3, the target service request, as created and issued for the service target carries unexamined message contents of the request received at the network service intermediary. In the example just discussed above, the proxy service at the broker identified an endpoint of a target service from the parametric data portType = A and redirected the message to the endpoint thus identified, all without touching, opening, examining, analyzing or otherwise disturbing the message body, the SOAP envelope, which remained unexamined and unchanged throughout the distribution process from its requester to its target service. In the process, the proxy service provided one or more of the intermediary services, authentication, management reporting, load balancing, service aggregation, and so on.

[0053] À guisa de explanação adicional, uma solicitação exemplificativa é apresentada para a binding GET/HTTP, dirigido para um endpoint em http://www.myintermediary/channelApps/GET-[0053] As an additional explanation, an example request is presented for the GET / HTTP binding, directed to an endpoint at http: //www.myintermediary/channelApps/GET-

Petição 870180049145, de 08/06/2018, pág. 34/71Petition 870180049145, of 06/08/2018, p. 34/71

27/6327/63

HTTP/servlets/Proxy. A mensagem de solicitação de entrada exemplificativa tem esta forma:HTTP / servlets / Proxy. The example entry request message takes this form:

GET/servlets/proxy?message=messageContentString& operation=myOp&portType=A HTTP/1.1 [0054] E no espaço URI, a solicitação exemplificativa pode ser mostrada como:GET / servlets / proxy? Message = messageContentString & operation = myOp & portType = A HTTP / 1.1 [0054] And in the URI space, the example request can be shown as:

http://www. mylntermediary.com/servlets/ proxy?message=messageContentString&operation=myOp&portType=http: // www. mylntermediary.com/servlets/ proxy? message = messageContentString & operation = myOp & portType =

A [0055] Neste exemplo, a mensagem é tomada como os dados de consulta URI-codifiçados message = messageContentString codificado como um par de nome-valor. o conteúdo da mensagem é uma cadeia URI-codifiçada. Neste exemplo, a informação paramétrica (107) da qual um endpoint para um serviço alvo que suporta a operação pode ser identificado e todo o dado de consulta seguindo a cadeia de conteúdo de mensagem. Neste exemplo, o dado de consulta inclui ambos o tipo de porta A e o nome de uma operação em serviço alvo.A [0055] In this example, the message is taken as the URI-encoded query data message = messageContentString encoded as a name-value pair. the message content is a URI-encoded chain. In this example, the parametric information (107) from which an endpoint for a target service that supports the operation can be identified and all query data following the message content chain. In this example, the query data includes both type of port A and the name of a target service operation.

[0056] Neste exemplo, a identificação (108) do endpoint (110) de um serviço alvo que suporta a operação é realizada pela recuperação de uma descrição de endpoint de um registro empresarial, tal como um registro de UDDI ou um registro de ebXML. Neste exemplo, o intermediário (202) recupera a partir de um registro um endpoint de tipo de porta A descrito como ligado por GET/HTTP em endereço de rede http://www.myTarget.com.[0056] In this example, the identification (108) of the endpoint (110) of a target service that supports the operation is performed by retrieving an endpoint description from a business record, such as a UDDI record or an ebXML record. In this example, the intermediary (202) retrieves a port type A endpoint from a record described as connected by GET / HTTP at network address http://www.myTarget.com.

[0057] O método da figura 3 também inclui a criação (112) de uma solicitação (114) de serviço alvo para execução da operação no serviço alvo. Neste exemplo, o intermediário[0057] The method of figure 3 also includes the creation (112) of a target service request (114) to perform the operation on the target service. In this example, the middleman

Petição 870180049145, de 08/06/2018, pág. 35/71Petition 870180049145, of 06/08/2018, p. 35/71

28/63 (202) é programado para criar uma solicitação de serviço alvo como uma mensagem de HTTP GET por concatenação do endereço de endpoint para a solicitação de serviço alvo com o nome da operação e as partes da mensagem. A solicitação de serviço alvo resultante, expressa no espaço URI é:28/63 (202) is programmed to create a target service request as an HTTP GET message by concatenating the endpoint address to the target service request with the operation name and parts of the message. The resulting target service request, expressed in the URI space is:

http://www.myTarget.com/servlets/myOp?message=messageC ontentString [0058] O método da figura 3 também inclui a emissão (116) da solicitação (114) de serviço alvo para o serviço alvo (118) . Neste exemplo, a emissão da solicitação de serviço alvo inclui a abertura de uma conexão de TCP/IP com o endpoint de serviço alvo em http://www.myTarget.com/ e enviar a mensagem de HTTP GET:http://www.myTarget.com/servlets/myOp?message=messageC ontentString [0058] The method in figure 3 also includes the issue (116) of the target service request (114) for the target service (118). In this example, issuing the target service request includes opening a TCP / IP connection to the target service endpoint at http://www.myTarget.com/ and sending the HTTP GET message:

GET /servlets/myOp?message=messageContentString HTTP/1.1 [0059] Leitores de habilidade na técnica estão admirados como o solicitante sabe enviar para o intermediário uma solicitação para uma operação no serviço alvo. A resposta é que o intermediário ou um desenvolvedor do intermediário identifica para o solicitante um endpoint do intermediário de serviços da rede como um endpoint que suporta a operação no serviço alvo. Uma identificação de um endpoint do intermediário como um endpoint que suporta a operação no serviço alvo pode ser implementada em um documento de WSDL, que é registrado em um diretório empresarial para descoberta pelo solicitante. Alternativamente, essa identificação pode ser baixada do intermediário para o solicitante ou mesmo simplesmente enviado por e-mail para o solicitante ou para o administrador do solicitante, para instalação por umGET / servlets / myOp? Message = messageContentString HTTP / 1.1 [0059] Readers of skill in the art are amazed at how the requester knows how to send a request to the intermediary for an operation on the target service. The answer is that the broker or a developer of the broker identifies for the requester an endpoint of the network services broker as an endpoint that supports the operation on the target service. An identification of an intermediary's endpoint as an endpoint that supports the operation on the target service can be implemented in a WSDL document, which is registered in a corporate directory for discovery by the requester. Alternatively, this identification can be downloaded from the intermediary to the requester or even simply sent by email to the requester or to the administrator of the requester for installation by a

Petição 870180049145, de 08/06/2018, pág. 36/71Petition 870180049145, of 06/08/2018, p. 36/71

29/63 administrador nos dados de configuração dos serviços alvo do solicitante (102).29/63 administrator in the configuration data of the requester's target services (102).

[0060] Consideremos um exemplo em que um serviço alvo é descrito pelo segmento a seguir de pseudocódigo de WSDL:[0060] Consider an example in which a target service is described by the following WSDL pseudocode segment:

<definitions targetNanespace= ...><definitions targetNanespace = ...>

<message name=GetQuoteInput> ...</message><message name = GetQuoteInput> ... </message>

<message name= GetQuoteOutput>... </message><message name = GetQuoteOutput> ... </message>

<portType name=StockquotePT>... </portType><portType name = StockquotePT> ... </portType>

Cbinding nane=SOAPBinding... >Cbinding nane = SOAPBinding ...>

<operation name=getQuote>... </operation>...<operation name = getQuote> ... </operation> ...

</binding></binding>

<Service name=StockquoteService><Service name = StockquoteService>

<port nane=SOAPPort binding=tns:SOAPBinding><port nane = SOAPPort binding = tns: SOAPBinding>

<soap:address location= http://myTargetService/soap/servlet/getQuote/><soap: address location = http: // myTargetService / soap / servlet / getQuote />

</port></port>

</service></service>

</definitions></definitions>

[0061] Um intermediário para aquele serviço alvo pode identificar para um solicitante um endpoint de intermediário de serviços da rede como um endpoint que suporta operação no serviço alvo pela substituição do atributo de localização do elemento de extensão de endereço na descrição de serviço alvo segue-se:[0061] An intermediary for that target service can identify to a requester a network service intermediary endpoint as an endpoint that supports operation on the target service by replacing the location attribute of the address extension element in the description of the target service below. if:

<soap: address location = http://www.myintermediary.com/<soap: address location = http://www.myintermediary.com/

Channel/SOAP/proxy?portType=StockquotePT/>Channel / SOAP / proxy? PortType = StockquotePT />

[0062] Assim, criando um documento de WSDL exemplificado pelo seguinte segmento:[0062] Thus, creating a WSDL document exemplified by the following segment:

<definitions targetNamespace= ...><definitions targetNamespace = ...>

Petição 870180049145, de 08/06/2018, pág. 37/71Petition 870180049145, of 06/08/2018, p. 37/71

30/63 <message name=GetQuoteInput>... </message>30/63 <message name = GetQuoteInput> ... </message>

<message name=GetQuoteOutput>... </message><message name = GetQuoteOutput> ... </message>

<portType nane=StockquotePT>... </portType><portType nane = StockquotePT> ... </portType>

Cbinding name=SOAPBinding ... >Cbinding name = SOAPBinding ...>

<operation name=getQuote> ... </operation> ...<operation name = getQuote> ... </operation> ...

<binding><binding>

<Service name=portTypeAgnosticProxy><Service name = portTypeAgnosticProxy>

<port name = intermediaryEndpoint binding=SOAPBinding>;<port name = intermediaryEndpoint binding = SOAPBinding>;

<soap: address location = http://www.myintermediary.com/Channel/SOAP/proxy?portType= StockquotePT/><soap: address location = http://www.myintermediary.com/Channel/SOAP/proxy?portType= StockquotePT />

</port></port>

</service></service>

</definitions></definitions>

que identifica um endpoint de um intermediário de serviços da rede como um endpoint que suporta a operação de getQuote no serviço alvo. O fornecimento de WSDL da espécie exemplificada por este último segmento para um solicitante, através de um registro, um download, e-mail ou por outros meios conforme ocorra aqueles habilitados na técnica, identifica para o solicitante um endpoint do intermediário de serviços alvo como um endpoint, que suporta a operação no serviço alvo.which identifies an endpoint of a network service broker as an endpoint that supports the getQuote operation on the target service. The provision of WSDL of the species exemplified by this last segment to a requester, through a registration, a download, e-mail or by other means depending on those skilled in the art, identifies for the requester an endpoint of the target service intermediary as a endpoint, which supports operation on the target service.

[0063] No método da figura 3, a identificação (108), na dependência da informação paramétrica (107), o endpoint para um serviço alvo que suporte a operação frequentemente pode incluir a identificação não exatamente de um endpoint para um serviço alvo, mas dois ou mais endpoints de serviços alvo que suportam a operação. Consideremos um exemplo em que[0063] In the method of figure 3, the identification (108), depending on the parametric information (107), the endpoint for a target service that supports the operation can often include the identification not exactly of an endpoint for a target service, but two or more target service endpoints that support the operation. Consider an example where

Petição 870180049145, de 08/06/2018, pág. 38/71Petition 870180049145, of 06/08/2018, p. 38/71

31/63 um proxy agnóstico quanto ao tipo de porta de acordo com uma modalidade do método da presente invenção recebe como informação paramétrica (107) um tipo de porta para uma operação, consulta um registro empresarial com o tipo de porta como um parâmetro de consulta e, assim, identifica dois ou mais endpoints de serviços alvo que suportam a operação. Essa identificação de dois ou mais endpoints pode ser realizada, por exemplo, pela consulta de um registro de UDDI com o tipo de porta e recebimento em resposta de dois ou mais documentos de WSDL que descrevem serviços alvo para o tipo de porta.31/63 a proxy agnostic as to the type of door according to a modality of the method of the present invention receives as a parametric information (107) a type of door for an operation, queries a business register with the type of door as a query parameter and thus identifies two or more target service endpoints that support the operation. This identification of two or more endpoints can be accomplished, for example, by querying a UDDI record with the port type and receiving in response two or more WSDL documents that describe target services for the port type.

[0064] Quando dois ou mais endpoints são assim identificados, métodos para suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da rede de acordo com as modalidades da presente invenção, tipicamente, incluem a seleção de um dos endpoints de acordo com as regras de seleção. Em um caso trivial, uma regra de seleção pode ser selecionar o primeiro dos endpoints assim identificados e negligenciar os outros. As regras de seleção podem ser mais complexas, incluindo, por exemplo, regras de seleção para equilíbrio de carga. As regras para equilíbrio de carga podem ser implementadas pelo uso de uma estrutura de dados similar àquela mostrada na Tabela 1.[0064] When two or more endpoints are so identified, methods for supporting agnostic proxy as to the type of port for network service intermediaries according to the modalities of the present invention, typically include the selection of one of the endpoints according to selection rules. In a trivial case, a selection rule may be to select the first of the endpoints thus identified and neglect the others. Selection rules can be more complex, including, for example, selection rules for load balancing. Load balancing rules can be implemented using a data structure similar to that shown in Table 1.

Tabela 001Table 001

Tabela 1. Rastreamento de LatênciaTable 1. Latency tracking

Tip Tip URI de endpoint Endpoint URI Tempo Time Tempo Time Latê Latê Latênc Latent o O de in de in ncia ncia ia was going de in envio send recebi I received de in Cumula Cumula mento ment Viag Viag

Petição 870180049145, de 08/06/2018, pág. 39/71Petition 870180049145, of 06/08/2018, p. 39/71

32/6332/63

Por ta Per OK em (ms) in (ms) tiva (ms) tiva (ms) A THE http://www.ibm.com/aTar getService http://www.ibm.com/aTar getService 12:01: 01.1 12:01: 01.1 12:01: 01.2 12:01: 01.2 100 100 100 100 A THE http://www.ibm.com/aTar getService http://www.ibm.com/aTar getService 12:05: 02.3 12:05: 02.3 12:05: 02.45 12:05: 02.45 150 150 250 250 A THE http://www.ibm.com/anot herTargetService http://www.ibm.com/anot herTargetService 01:10: 01.5 01:10: 01.5 01:10: 01.57 01:10: 01.57 70 70 70 70 A THE http://www.ibm.com/anot herTargetService http://www.ibm.com/anot herTargetService 01:15: 02.5 01:15: 02.5 01:15: 02.8 01:15: 02.8 30 30 100 100 - - - - - - - - - - - -

[0065] Cada fileira na Tabela 1 representa uma medição de latência para uma viagem de ida e volta de solicitação - resposta em comunicações de dados de serviços da rede entre um intermediário e um serviço alvo. A Tabela 1 proporciona colunas para o tipo de porta e o URI de endpoint para cada ciclo de solicitação e resposta. A coluna Tempo de Envio registra o tempo em que uma mensagem de solicitação é emitida do intermediário para um endpoint em um serviço alvo para uma operação de um tipo de porta. A coluna Tempo de recebimento registra o tempo em que uma mensagem de resposta correspondente é recebida do serviço alvo. A Latência de Viagem e a diferença entre o Tempo de Recebimento e o Tempo de Envio. A Latência Cumulativa é uma soma de execução de Latências de Viagem para cada endpoint representado na tabela. Com uma estrutura similar de Latências de Viagem para cada endpoint representado na tabela. Com uma estrutura[0065] Each row in Table 1 represents a measurement of latency for a round trip request - response in data communications from network services between an intermediary and a target service. Table 1 provides columns for the port type and the endpoint URI for each request and response cycle. The Send Time column records the time that a request message is sent from the broker to an endpoint on a target service for an operation of a type of port. The Receiving time column records the time that a corresponding reply message is received from the target service. Travel Latency and the difference between Receiving Time and Shipping Time. Cumulative Latency is a sum of Travel Latencies for each endpoint represented in the table. With a similar structure of Travel Latencies for each endpoint represented in the table. With a structure

Petição 870180049145, de 08/06/2018, pág. 40/71Petition 870180049145, of 06/08/2018, p. 40/71

33/63 similar à Tabela 1, as regras de seleção para uso quando mais de um endpoint para uma solicitação é identificada pode ser implementado como as regras exemplificativas a seguir:33/63 similar to Table 1, the selection rules for use when more than one endpoint for a request is identified can be implemented as the following example rules:

- como cada vez mais solicitações para operações no mesmo tipo de porta chegam no intermediário, usar um de cada vez cada um de mais de um dos endpoints identificados;- as more and more requests for operations on the same type of port arrive at the intermediary, use one at a time each one of more than one of the identified endpoints;

- registrar dados de latência para cada um desses usos;- record latency data for each of these uses;

- para solicitações subsequentes para operações do mesmo tipo de porta, selecionar da tabela de latência o endpoint tendo a menor Latência cumulativa, enviar a solicitação para aquele endpoint e registrar os dados de Latência pertinentes, quando a mensagem é enviada para o serviço alvo e quando a resposta correspondente é recebida no intermediário.- for subsequent requests for operations of the same type of port, select the endpoint having the lowest cumulative Latency from the latency table, send the request to that endpoint and record the relevant Latency data, when the message is sent to the target service and when the corresponding response is received at the intermediary.

[0066] Os dados exemplificativos na Tabela 1 mostram latência cumulativa para solicitações recentemente enviadas para o tipo de porta A para dois endpoints, um primeiro endpoint em URI http:/www.ibm.com/anotherTargetService. O primeiro tem uma latência de solicitação cumulativa de 250 milissegundos e o segundo tem uma latência de solicitação cumulativa de 100 milissegundos. Usando as regras de seleção exemplificativas apresentadas acima, uma solicitação corrente para uma operação no tipo de porta A será roteada para o segundo endpoint, um em URI http:/www.ibm.com/anotherTargetService.[0066] The sample data in Table 1 shows cumulative latency for requests recently sent to port type A for two endpoints, a first endpoint at URI http: /www.ibm.com/anotherTargetService. The first has a cumulative request latency of 250 milliseconds and the second has a cumulative request latency of 100 milliseconds. Using the exemplary selection rules presented above, a current request for an operation on port type A will be routed to the second endpoint, one at URI http: /www.ibm.com/anotherTargetService.

[0067] No método da figura 3, a criação (112) de uma solicitação (114) de serviço alvo para execução da operação no serviço alvo pode ser realizada pela composição da solicitação em uma estrutura de dados úteis em uma interface de binding neutra e chamando a interface de binding neutra,[0067] In the method of figure 3, the creation (112) of a target service request (114) to perform the operation on the target service can be performed by composing the request in a useful data structure in a neutral binding interface and calling the interface neutral binding,

Petição 870180049145, de 08/06/2018, pág. 41/71Petition 870180049145, of 06/08/2018, p. 41/71

34/63 passagem da solicitação como um parâmetro de chamada.34/63 passing the request as a call parameter.

Similarmente, a emissão (116) da solicitação (114) de serviço alvo para o serviço alvo compreende a chamada de um ou mais elementos em uma interface de binding neutra.Similarly, issuing (116) the target service request (114) to the target service comprises calling one or more elements on a neutral binding interface.

[0068] Uma interface de binding neutra é uma em que o uso da interface não depende de solicitação de binding de mensagem. Isto é, os métodos de estruturas de dados e de chamada usados para implementar a interface e realizar comunicações de dados através dela, não dependem do tipo de codificação de dados usado em uma mensagem nem dependem do protocolo de comunicação de dados usado para uma mensagem. Desenvolvedores de proxies de agnósticos quanto ao tipo de porta para intermediários de acordo com as modalidades da presente invenção, frequentemente, construirão suas interfaces de binding neutra. Há um padrão aberto para uma interface de binding neutra, porém, conhecida como WSIF, Web Service Invocation Framework. A WSIF é agora suportada como parte do Apache Software Foundation's Web Services Project.[0068] A neutral binding interface is one in which the use of the interface does not depend on a message binding request. That is, the data structure and calling methods used to implement the interface and carry out data communications through it, do not depend on the type of data encoding used in a message, nor do they depend on the data communication protocol used for a message. Developers of agnostic proxies as to the type of port for intermediaries in accordance with the modalities of the present invention will often build their neutral binding interfaces. There is an open standard for a neutral binding interface, however, known as WSIF, Web Service Invocation Framework. WSIF is now supported as part of the Apache Software Foundation's Web Services Project.

[0069] O uso de uma interface de binding neutra (218) proporciona vantagens para as modalidades da presente invenção. A binding SOAP-HTTP é tão comum na técnica corrente que os usuários e os desenvolvedores algumas vezes esquecem que existem outras bindings. Isso resulta em desenvolvimento de sistemas que são difíceis, se não impossíveis, de usar com outras bindings ou de adaptar para uso com outras bindings. À medida que os serviços de rede se desenvolvem, porém, outras bindings se tornarão mais úteis e mais comuns, o uso de uma interface de binding neutra (218) para a especificação de modalidades da presente invenção, além[0069] The use of a neutral binding interface (218) provides advantages for the modalities of the present invention. SOAP-HTTP binding is so common in current technique that users and developers sometimes forget that there are other bindings. This results in the development of systems that are difficult, if not impossible, to use with other bindings or to adapt for use with other bindings. As network services develop, however, other bindings will become more useful and more common, the use of a neutral binding interface (218) for specifying modalities of the present invention, in addition to

Petição 870180049145, de 08/06/2018, pág. 42/71Petition 870180049145, of 06/08/2018, p. 42/71

35/63 disso, também significa que bindings disponíveis podem ser determinadas em tempo de processamento, assim, proporcionando um intermediário de serviços da rede flexível, poderoso e em geral mais util.Furthermore, it also means that available bindings can be determined at processing time, thus providing a flexible, powerful and generally more useful network service intermediary.

[0070] Uma maneira de implementar uma interface de binding neutra é proporcionar objetos de endpoints que são capazes de invocar serviços em serviços alvo dada um tipo de porta e um endpoint. Uma maneira de proporcionar esses objetos de endpoints é pelo uso de uma fábrica de endpoints similar a uma ilustrada no segmento de pseudocódigo a seguir:[0070] One way to implement a neutral binding interface is to provide endpoint objects that are capable of invoking services on target services given a type of port and an endpoint. One way to provide these endpoint objects is by using an endpoint factory similar to the one illustrated in the following pseudocode segment:

//Endpoint Factory Class //Defines a parameterized factory method for creating endpoint objects //// Endpoint Factory Class // Defines a parameterized factory method for creating endpoint objects //

Class EndpointFactory {Class EndpointFactory {

public static Endpoint createEndpointObject(portType, networkAddress) {public static Endpoint createEndpointObject (portType, networkAddress) {

//establish reference for new endpoint object// establish reference for new endpoint object

Endpoint anEndpoint = null;Endpoint anEndpoint = null;

if(portType == A && networkAddress == www.abc.com) anEndpoint = new endpointl;if (portType == A && networkAddress == www.abc.com) anEndpoint = new endpointl;

if(portType == B && networkAddress == www.def.com) anEndpoint = new Endpoint2;if (portType == B && networkAddress == www.def.com) anEndpoint = new Endpoint2;

if(portType == C && networkAddress == www.ghi.com) anEndpoint == new Endpoint3;if (portType == C && networkAddress == www.ghi.com) anEndpoint == new Endpoint3;

if (portType == LAST && networkAddress == www.lastSupported.com)if (portType == LAST && networkAddress == www.lastSupported.com)

Petição 870180049145, de 08/06/2018, pág. 43/71Petition 870180049145, of 06/08/2018, p. 43/71

36/63 anEndpoint == new Endpoint465; if anEndpoint == null) reportError(); else return anEndpoint;36/63 anEndpoint == new Endpoint465; if anEndpoint == null) reportError (); else return anEndpoint;

}// end createEndpointObject() }//end class EndpointFactory [0071] As classes de endpoints, Endpointl, Endpoint2, Endpoint3 e assim por diante, são classes concretas que herdam uma classe de endpoint abstrata (ou implementam a mesma como uma interface) que proporciona métodos de elementos para criar objetos de mensagem para conter partes de mensagem. Esse fator de endpoint e outros elementos nessa interface de binding neutra pode ser usado para realizar as etapas de criação (112) de uma solicitação (114) de serviço alvo e emitindo (116) a solicitação (114) de serviço alvo para o serviço alvo, conforme ilustrado no segmento de pseudocódigo a seguir:} // end createEndpointObject ()} // end class EndpointFactory [0071] The classes of endpoints, Endpointl, Endpoint2, Endpoint3 and so on, are concrete classes that inherit an abstract endpoint class (or implement it as an interface) which provides element methods for creating message objects to contain message parts. This endpoint factor and other elements in this neutral binding interface can be used to perform the steps of creating (112) a target service request (114) and issuing (116) the target service request (114) to the target service , as illustrated in the following pseudocode segment:

//Get endpoint object from endpoint factory// Get endpoint object from endpoint factory

Endpoint ep = endPointFactory.createEndPoint(portType, networkAddress);Endpoint ep = endPointFactory.createEndPoint (portType, networkAddress);

//Prepare an input message// Prepare an input message

Message input = ep.createlnputMessage();Message input = ep.createlnputMessage ();

//use message accessor function to insert contents of message input.setPart(symbol, IBM);// use message accessor function to insert contents of message socketsetPart (symbol, IBM);

//Prepare a placeholder for a response value// Prepare a placeholder for a response value

Message output = ep.createOutputMessage();Message output = ep.createOutputMessage ();

//execute the operation ep.executeRequestResponseOperation(getQuote, input, output);// execute the operation ep.executeRequestResponseOperation (getQuote, input, output);

//return the result// return the result

Petição 870180049145, de 08/06/2018, pág. 44/71Petition 870180049145, of 06/08/2018, p. 44/71

37/63 return output;37/63 return output;

[0072] Este segmento de pseudocódigo exemplificativo, dada um tipo de porta e um endereço de rede para um endpoint, chama uma fábrica de endpoint para criar um objeto de endpoint. 0 segmento, então, cria uma solicitação de serviço alvo pelo carregamento de partes de mensagem no objeto de endpoint e emite a solicitação de serviço alvo para o serviço alvo chamando o método de elementos executeRequestResponseOperation(). 0 método da figura 3 inclui o recebimento (120) no intermediário de uma resposta (122) do serviço alvo; criação (124) no intermediário, na dependência da resposta (122) do serviço alvo, uma resposta (126) do intermediário; e retorno (128) da resposta (126) do intermediário para o cliente da solicitação. Neste segmento de pseudocódigo exemplificativo, as etapas de recebimento (120) uma resposta (122) do serviço alvo e criando (124) uma resposta (126) do intermediário são implementados pela chamada para executeRequestResponseOperation(), tipicamente uma chamada de bloqueio, que aguarda por uma resposta do serviço alvo e torna a resposta disponível através da referência Message para 'saída'.[0072] This example pseudocode segment, given a type of port and a network address for an endpoint, calls an endpoint factory to create an endpoint object. The segment then creates a target service request by loading parts of the message into the endpoint object and issues the target service request to the target service by calling the executeRequestResponseOperation () element method. The method of figure 3 includes receiving (120) a response (122) from the target service at the intermediary; creation (124) in the intermediary, depending on the response (122) of the target service, a response (126) from the intermediary; and returning (128) the response (126) from the intermediary to the request client. In this example pseudocode segment, the steps of receiving (120) a response (122) from the target service and creating (124) a response (126) from the intermediary are implemented by the call to executeRequestResponseOperation (), typically a blocking call, which awaits by a response from the target service and makes the response available via the Message reference for 'outgoing'.

[0073] Os segmentos de pseudocódigos acima ilustram o usa de uma interface de binding neutra com portas referidas como endpoints. A sintaxe de interface WSF, porem, usa o termo porta quando se referindo a endpoints. Por meio de explanação adicional referente ao uso de interfaces de binding neutra, portanto, um outro segmento de pseudocódigo exemplificativo adicional está presente, aderindo mais proximamente ao padrão de WSF. Neste exemplo, porta é usado[0073] The above pseudocode segments illustrate the use of a neutral binding interface with ports referred to as endpoints. The WSF interface syntax, however, uses the term port when referring to endpoints. By means of additional explanation regarding the use of neutral binding interfaces, therefore, another additional example pseudocode segment is present, adhering more closely to the WSF standard. In this example, port is used

Petição 870180049145, de 08/06/2018, pág. 45/71Petition 870180049145, of 06/08/2018, p. 45/71

38/63 para significar endpoint e, para consistência de explanação, o nome da fábrica é mudado para portFactory.38/63 to mean endpoint and, for consistency of explanation, the factory name is changed to portFactory.

//get a port (an endpoint) from the factory// get a port (an endpoint) from the factory

WSIFPort port = portFactory.getPort(portType, networkAddress);WSIFPort port = portFactory.getPort (portType, networkAddress);

//Prepare an input message// Prepare an input message

WSIFMessage input = port.createlnputMessage();WSIFMessage input = port.createlnputMessage ();

//insert message contents input.setPart(symbol, new WSIFJavaPart(String.class, symbol));// insert message contents socketsetPart (symbol, new WSIFJavaPart (String.class, symbol));

//Prepare a placeholder for a response value// Prepare a placeholder for a response value

WSIFMessage output = port.createOutputMessage();WSIFMessage output = port.createOutputMessage ();

//execute the operation port.executeRequestResponseOperation(getQuote, input, output, null);// execute the operation port.executeRequestResponseOperation (getQuote, input, output, null);

// extract and return the result return output;// extract and return the result return output;

[0074] Embora esta especificação discuta métodos exemplificativos de suporte de proxies de agnósticos quanto ao tipo de porta em intermediários de serviços da rede, principalmente em termos de processamento de uma solicitação em seu caminho de um solicitante para um serviço alvo, é útil notar que intermediários de acordo com as modalidades da presente invenção também são capazes, tipicamente, de processar mensagens de resposta, fazendo seu caminho de volta de um serviço alvo através do intermediário para a solicitante original. O método da figura 3, por exemplo, inclui o recebimento (120) no intermediário de uma resposta (122) do serviço alvo; criação (124) no intermediário, na dependência da resposta (122) do serviço alvo de uma resposta[0074] Although this specification discusses exemplary methods of supporting agnostic proxies as to the type of port in network service intermediaries, mainly in terms of processing a request on its way from a requester to a target service, it is useful to note that intermediaries according to the modalities of the present invention are also typically able to process response messages, making their way back from a target service through the intermediary to the original requester. The method of figure 3, for example, includes receiving (120) at the intermediary a response (122) from the target service; creation (124) at the intermediary, depending on the response (122) of the service targeted by a response

Petição 870180049145, de 08/06/2018, pág. 46/71Petition 870180049145, of 06/08/2018, p. 46/71

39/63 (126) do intermediário; e retorno {128} da resposta (126) do intermediário para o cliente solicitante.39/63 (126) of the intermediary; and {128} feedback from the intermediary (126) to the requesting customer.

[0075] A figura 4 apresenta um fluxograma ilustrando um método de suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da rede, que inclui o recebimento (304) em um intermediário de serviços da rede de uma solicitação (106) para execução de uma operação de serviços da rede, em que a solicitação inclui informação paramétrica (107) da qual um endpoint para um serviço alvo que suporta a operação pode ser identificado.[0075] Figure 4 presents a flowchart illustrating a proxy support method agnostic as to the type of port for network service intermediaries, which includes receiving (304) at a network service intermediary a request (106) for execution of a network service operation, in which the request includes parametric information (107) from which an endpoint for a target service that supports the operation can be identified.

[0076] Aqui, mais uma vez, está um exemplo dessa solicitação para a binding SOAP-HTTP:[0076] Here, again, is an example of this request for SOAP-HTTP binding:

POST/Channel/proxy?portType=A&synchRespReqd=True HTTP/1.1POST / Channel / proxy? PortType = A & synchRespReqd = True HTTP / 1.1

Host: www.myintermediary.comHost: www.myintermediary.com

Content-Type: text/xml; charset=utf-8Content-Type: text / xml; charset = utf-8

Content-Length: nnnnContent-Length: nnnn

SOAPAction: Some-URI <SOAP-ENV: Envelope xmlns:SOAPENV=http://schemas.xmlsoap.org/soap/envelope/SOAPAction: Some-URI <SOAP-ENV: Envelope xmlns: SOAPENV = http: //schemas.xmlsoap.org/soap/envelope/

SOAPENV:encodingStyle=http://schemas.xmlsoap.org/soap/encoding />SOAPENV: encodingStyle = http: //schemas.xmlsoap.org/soap/encoding />

<SOAP-ENV: Body><SOAP-ENV: Body>

<m:myOp xmlns:m=Some-URI><m: myOp xmlns: m = Some-URI>

</m:myOp></ m: myOp>

</SOAP-ENV:Body></ SOAP-ENV: Body>

</SOAP-ENV:Envelope></ SOAP-ENV: Envelope>

Petição 870180049145, de 08/06/2018, pág. 47/71Petition 870180049145, of 06/08/2018, p. 47/71

40/6340/63

Esta mensagem POST exemplificativa inclui um a operação 'myOp' do [0077] envelope de intermediário,This example POST message includes a 'myOp' operation from the [0077] middleman envelope,

SOAP solicitandoSOAP requesting

A operação myOp, seu tipo de porta e seu endpoint são todos desconhecidos para o intermediário antes que a solicitação seja recebida. Neste exemplo, a mensagem é tomada como o envelope de SOAP e a informação paramétrica (107) da qual um endpoint para um serviço alvo que suporta a operação pode ser identificado é o parâmetro de HTTP portType=A. Neste exemplo, como o nome da operação no serviço alvo já está codificado no envelope de SOAP, o único dado paramétrico a ser adicionado é o tipo de porta A, um tipo de porta que inclui a operação no serviço alvo.The myOp operation, its port type and its endpoint are all unknown to the intermediary before the request is received. In this example, the message is taken as the SOAP envelope and the parametric information (107) from which an endpoint for a target service that supports the operation can be identified is the HTTP parameter portType = A. In this example, as the name of the operation in the target service is already encoded in the SOAP envelope, the only parametric data to be added is the type of port A, a type of port that includes the operation in the target service.

[0078] O método da figura 4 também inclui identificador (308), na dependência do dado paramétrico, do endpoint (110) de um serviço alvo que suporta a operação. Neste exemplo de SOAP-HTTP, a identificação (308) do endpoint (110) de um serviço alvo que suporta a operação é realizada pela recuperação de uma descrição de endpoint de um registro empresarial, tal como um registro de UDDI ou um registro de ebXML. Neste exemplo, o intermediário recupera de um registro um endpoint de tipo de porta A descrito como ligado por SOAPHTTP no endereço de rede http://www.myTarget.com/SOAPHTTP/servlets/.[0078] The method of figure 4 also includes identifier (308), depending on the parametric data, of the endpoint (110) of a target service that supports the operation. In this SOAP-HTTP example, the identification (308) of the endpoint (110) of a target service that supports the operation is accomplished by retrieving an endpoint description from a business record, such as a UDDI record or an ebXML record . In this example, the intermediary retrieves a port type A endpoint described as SOAPHTTP connected at the network address http://www.myTarget.com/SOAPHTTP/servlets/ from a record.

[0079] 0 método ilustrado na figura 4 também inclui a determinação (350) de se solicitação (106) requer uma resposta sincrona. A determinação (350) de se a solicitação (106) requer uma resposta sincrona pode ser realizada pelo exame dos dados de consulta na primeira linha de uma mensagem de solicitação recebida. Na mensagem POST exemplificativa apresentada acima, os dados de consulta na[0079] The method illustrated in figure 4 also includes determining (350) whether a request (106) requires a synchronous response. The determination (350) of whether the request (106) requires a synchronous response can be carried out by examining the query data in the first line of a request message received. In the example POST message shown above, the query data in the

Petição 870180049145, de 08/06/2018, pág. 48/71Petition 870180049145, of 06/08/2018, p. 48/71

41/63 primeira linha são todos os dados entre o ? e o código de versão HTTP, que é:41/63 first line is all the data between the? and the HTTP version code, which is:

portType=A&synchRespReqd=True.portType = A & synchRespReqd = True.

[0080] Neste exemplo, synchRespReqd=True é tomado pelo intermediário para significar que uma resposta sincrona é requerida. Similarmente, synchRespReqd=False pode indicar que uma resposta sincrona não é requerida. Essas são codificações exemplificativas apenas, naturalmente, não limitações da invenção. Qualquer meio para codificar dentro da informação paramétrica uma indicação de se uma resposta sincrona e requerida de um intermediário está bem dentro do escopo da presente invenção de acordo com as modalidades preferidas. Neste exemplo, a determinação (350) de se uma solicitação requer uma resposta sincrona é realizada fazendo aquela determinação na dependência da informação paramétrica (107), a informação paramétrica sendo o par nome - valor synchRespReqd=True.[0080] In this example, synchRespReqd = True is taken by the intermediary to mean that a synchronous response is required. Similarly, synchRespReqd = False can indicate that a synchronous response is not required. These are exemplary encodings only, of course, not limitations of the invention. Any means of encoding within the parametric information an indication of whether a synchronous and required response from an intermediary is well within the scope of the present invention according to preferred embodiments. In this example, the determination (350) of whether a request requires a synchronous response is made by making that determination depending on the parametric information (107), the parametric information being the name - value pair synchRespReqd = True.

[0081] O método ilustrado inclui criação (312) de uma solicitação (114) de serviço alvo para execução da operação no serviço alvo. Neste exemplo, o intermediário é programado para criar uma solicitação de serviço alvo como uma mensagem HTTP POST, usando o endpoint no serviço alvo. Mais particularmente, a seguinte mensagem POST representa um exemplo de uma mensagem de entrada ou dados de entrada para uma operação de serviços da rede solicitada. Os dados paramétricos são cancelados, os dados paramétricos para identificação de um endpoint, bem como qualquer dado paramétrico para determinação de se a resposta sincrona é requerida e a solicitação é dirigida para um script, servlet ou outra funcionalidade para manipulação de mensagens SOAP[0081] The illustrated method includes creation (312) of a target service request (114) to perform the operation on the target service. In this example, the broker is programmed to create a target service request as an HTTP POST message, using the endpoint on the target service. More particularly, the following POST message represents an example of an input message or input data for a requested network service operation. Parametric data is canceled, parametric data for identifying an endpoint, as well as any parametric data for determining whether the synchronous response is required and the request is directed to a script, servlet or other functionality for handling SOAP messages

Petição 870180049145, de 08/06/2018, pág. 49/71Petition 870180049145, of 06/08/2018, p. 49/71

42/63 que por si identificarão a operação do nome de operação no envelope de SOAP.42/63 that will identify the operation of the operation name in the SOAP envelope.

[0082] A solicitação de serviço alvo resultante é a seguinte:[0082] The resulting target service request is as follows:

POST/SOAP-HTTP/servlets/QuoteServiceServlet HTTP/1.1 Host: www.myTarget.comPOST / SOAP-HTTP / servlets / QuoteServiceServlet HTTP / 1.1 Host: www.myTarget.com

Content-Type: text/xml; charset= utf-8Content-Type: text / xml; charset = utf-8

Content-Length: nnnnContent-Length: nnnn

SOAPAction: Some-URI <S0AP-ENV: Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/ envelope/SOAPAction: Some-URI <S0AP-ENV: Envelope xmlns: SOAP-ENV = http: //schemas.xmlsoap.org/soap/ envelope /

SOAP-ENV:encodingStyle=http://schemas.xmlsoap. org/soap/encoding/>SOAP-ENV: encodingStyle = http: //schemas.xmlsoap. org / soap / encoding />

<SOAP-ENV:Body><SOAP-ENV: Body>

<m:myOp xmlns:m=Some-URI><m: myOp xmlns: m = Some-URI>

</m:myOp></ m: myOp>

C/SOAP-ENV;Body>C / SOAP-ENV; Body>

</SOAP-ENV:Envelope></ SOAP-ENV: Envelope>

[0083] No método da figura 4, a criação (312) de uma solicitação (114) de serviço alvo para execução da operação no serviço alvo ainda pode incluir a criação (312) da solicitação (114) de serviço alvo, na dependência de uma determinação (152) de se a solicitação requer uma resposta sincrona. Igualmente, o intermediário pode criar uma mensagem de entrada portando dados de entrada para uma operação solicitada de serviços da rede, assim também pode um intermediário criar uma mensagem de saida. Essa mensagem de saida é, tipicamente, um objeto de manutenção de local para uso no armazenamento e comunicação de qualquer mensagem[0083] In the method of figure 4, the creation (312) of a target service request (114) to perform the operation on the target service can still include the creation (312) of the target service request (114), depending on a determination (152) of whether the request requires a synchronous response. Likewise, the intermediary can create an incoming message carrying input data for a requested operation of network services, so an intermediary can also create an outgoing message. This outgoing message is typically a location maintenance object for use in storing and communicating any message

Petição 870180049145, de 08/06/2018, pág. 50/71Petition 870180049145, of 06/08/2018, p. 50/71

43/63 de resposta de um serviço alvo. Um método exemplificativo de criação de um objeto de mensagem de resposta para uma solicitação que requer uma resposta sincrona é para o intermediário criar um objeto de classe adequado, deixá-lo vazio e passar uma referência para ele como um parâmetro em uma ou mais chamadas para interfaces a jusante (tais como um provedor ou um agente de saida, referências (220) e (22) nas figuras 2A e 2B) para comunicação de solicitações para um serviço alvo. Um método exemplificativo de criação de um objeto de mensagem de resposta para uma solicitação que não requer uma resposta sincrona e para o intermediário passar uma referência nula (não apenas uma referência a um objeto de saida vazio, mas uma referência completamente nula) como um parâmetro em uma ou mais chamadas para interfaces a jusante para comunicar solicitações para um serviço alvo. Nessas modalidades, a interface a jusante é programada para interpretar essa referência nula como uma indicação para aguardar apenas por um 'aviso de recebimento', antes de retornar o controle para aquele que chama.43/63 response from a target service. An exemplary method of creating a response message object for a request that requires a synchronous response is for the broker to create an appropriate class object, leave it empty, and pass a reference to it as a parameter in one or more calls to downstream interfaces (such as a provider or an outbound agent, references (220) and (22) in figures 2A and 2B) for communicating requests to a target service. An exemplary method of creating a response message object for a request that does not require a synchronous response and for the broker to pass a null reference (not just a reference to an empty output object, but a completely null reference) as a parameter in one or more calls to downstream interfaces to communicate requests to a target service. In these modalities, the downstream interface is programmed to interpret this null reference as an indication to wait only for an 'acknowledgment of receipt', before returning control to the caller.

[0084] 0 método da figura 4 também inclui a emissão (316) da solicitação (114) de serviço alvo para o serviço alvo (118) . Neste exemplo, a emissão da solicitação de serviço alvo inclui a abertura de uma conexão de TCP/IP com o endpoint de serviço alvo em http://www.myTarget.com/ e envio da mensagem HTTP POST através da conexão TCP/IP para o serviço alvo.[0084] The method of figure 4 also includes the issue (316) of the target service request (114) to the target service (118). In this example, issuing the target service request includes opening a TCP / IP connection to the target service endpoint at http://www.myTarget.com/ and sending the HTTP POST message over the TCP / IP connection to the target service.

[0085] É útil notar que em pelo menos algumas das modalidades da presente invenção, em métodos de suporte de proxy agnóstico quanto ao tipo de porta, como aquele ilustrado na figura 4, a solicitação de serviço alvo, como[0085] It is useful to note that in at least some of the modalities of the present invention, in support methods of agnostic proxy regarding the type of port, such as that illustrated in figure 4, the target service request, as

Petição 870180049145, de 08/06/2018, pág. 51/71Petition 870180049145, of 06/08/2018, p. 51/71

44/63 criada e emitida para o serviço alvo, porta conteúdos de mensagens não examinados e não modificados da solicitação recebida no intermediário de serviços da rede. No exemplo em discussão acima, o serviço de proxy no intermediário identificou um endpoint de um serviço alvo do dado paramétrico portType=A e redirecionou a mensagem para o endpoint assim identificado, tudo sem tocar, abrir, examinar, analisar ou de outra maneira perturbar o corpo da mensagem, o envelope de SOAP, que permaneceu não examinado e inalterado por todo o processo ou distribuição de seu solicitante para seu serviço alvo. No processo, o serviço de proxy proporcionou um ou mais dos serviços intermediários, autenticação, relato de gerenciamento, equilíbrio de carga, agregação de serviços e assim por diante.44/63 created and sent to the target service, it carries contents of messages not examined and not modified from the request received at the network's service intermediary. In the example discussed above, the proxy service at the intermediary identified an endpoint of a target service from the parametric data portType = A and redirected the message to the endpoint thus identified, all without touching, opening, examining, analyzing or otherwise disturbing the body of the message, the SOAP envelope, which remained unexamined and unchanged throughout the process or distribution of its requester to its target service. In the process, the proxy service provided one or more of the intermediary services, authentication, management reporting, load balancing, aggregation of services, and so on.

[0086] Por meio de outra explanação, uma solicitação exemplificativa é apresentada para a binding GET/HTTP, dirigida para um endpoint em http://www.myintermediary/channelApps/GET-[0086] Through another explanation, an example request is presented for the GET / HTTP binding, addressed to an endpoint at http: //www.myintermediary/channelApps/GET-

HTTP/servlets/proxy . A mensagem de solicitação que entra exemplificativa tem esta forma:HTTP / servlets / proxy. The request message that appears as an example takes this form:

GET/servlets/proxy?message=messageContentString&operat ion=myOp&portType=A HTTP/1.1 [0087] E no espaço URI, a solicitação exemplificativa pode ser mostrada como:GET / servlets / proxy? Message = messageContentString & operat ion = myOp & portType = A HTTP / 1.1 [0087] And in the URI space, the example request can be shown as:

http://www.myhtermediary.com/servlets/proxy?message=me ssageContentString&operation=myOp&portType=A [0088] Neste exemplo, a mensagem é tomada como os dados de consulta URI-Codifiçados message=messageContentString codificado como um par de nome valor, o conteúdo da mensagem é uma cadeia URIPetição 870180049145, de 08/06/2018, pág. 52/71http://www.myhtermediary.com/servlets/proxy?message=me ssageContentString & operation = myOp & portType = A [0088] In this example, the message is taken as the URI-Encoded query data message = messageContentString encoded as a name-value pair , the message content is a URIPetition chain 870180049145, from 06/08/2018, p. 52/71

45/63 codificada. Neste exemplo, a informação (107) da qual um endpoint para um serviço alvo que suporta a operação pode ser identificado é todo o dado de consulta que segue a cadeia de conteúdos da mensagem. Neste exemplo, o dado de consulta inclui tipo de porta A e o nome de uma operação em um serviço alvo.45/63 coded. In this example, the information (107) from which an endpoint for a target service that supports the operation can be identified is all the query data that follows the message content chain. In this example, the query data includes port type A and the name of an operation on a target service.

[0089] Neste exemplo, a identificação do endpoint (110) de um serviço alvo que suporta a operação é realizada pela recuperação de uma descrição de endpoint de um registro empresarial, tal como um registro de UDDI ou um registro de ebXML. Neste exemplo, o intermediário recupera de um registro um endpoint de tipo de porta A descrito como ligado por GET/HTTP em endereço de rede http://www.myTarget.com.[0089] In this example, the identification of the endpoint (110) of a target service that supports the operation is performed by retrieving an endpoint description from a business record, such as a UDDI record or an ebXML record. In this example, the intermediary retrieves a port type A endpoint from a record described as connected by GET / HTTP at http://www.myTarget.com network address.

[0090] 0 método da figura 4 também inclui a criação (312) de uma solicitação (114) de serviço alvo para execução da operação no serviço alvo. Neste exemplo, o intermediário é programado para criar uma solicitação de serviço alvo como uma mensagem HTTP GET por concatenação do endereço de endpoint para a solicitação de serviço alvo com o nome da operação e das partes da mensagem. A solicitação de serviço alvo resultante, expressa em espaço de URI é:[0090] The method of figure 4 also includes the creation (312) of a target service request (114) to perform the operation on the target service. In this example, the broker is programmed to create a target service request as an HTTP GET message by concatenating the endpoint address to the target service request with the name of the operation and parts of the message. The resulting target service request, expressed in URI space is:

http://myTarget.com/servlets/myOp?message=messageConte ntString.http://myTarget.com/servlets/myOp?message=messageConte ntString.

[0091] Como antes mencionado, o método da figura 4 também inclui a emissão (316) da solicitação (114) de serviço alvo para serviço alvo (118) . Neste exemplo, a emissão da solicitação de serviço alvo inclui abertura de uma conexão de TCP/IP para o endpoint de serviço alvo em http://www.myTarget.com/ e envio da mensagem HTTP GET:[0091] As mentioned before, the method of figure 4 also includes the issue (316) of the request (114) from target service to target service (118). In this example, issuing the target service request includes opening a TCP / IP connection to the target service endpoint at http://www.myTarget.com/ and sending the HTTP GET message:

Petição 870180049145, de 08/06/2018, pág. 53/71Petition 870180049145, of 06/08/2018, p. 53/71

46/6346/63

GET/servlets/myOp?message=messageContentString HTTP/1.1.GET / servlets / myOp? Message = messageContentString HTTP / 1.1.

[0092] O método da figura 4 também inclui a espera (361) de uma resposta do serviço alvo, se a solicitação requerer uma resposta sincrona (360). A figura 5 apresenta um fluxograma ilustrando um método de espera (361) de uma resposta de um serviço alvo que inclui o recebimento (320), sincronicamente, no intermediário, de uma resposta (122) do serviço alvo; criação (324) no intermediário, na dependência da resposta do serviço alvo, de uma resposta (126) do intermediário; e retorno (328) da resposta (126) do intermediário para um solicitante (102) . No método da figura 5, o recebimento (320), sincronicamente, no intermediário, de uma resposta do serviço alvo pode ser realizado pela invocação de uma função de recebimento de bloqueio em uma conexão de comunicação de dados entre o intermediário e o serviço alvo.[0092] The method of figure 4 also includes waiting (361) for a response from the target service, if the request requires a synchronous response (360). Figure 5 presents a flowchart illustrating a method of waiting (361) for a response from a target service that includes receiving (320), synchronously, at the intermediary, a response (122) from the target service; creation (324) in the intermediary, depending on the response of the target service, of a response (126) from the intermediary; and returning (328) the response (126) from the intermediary to a requester (102). In the method of figure 5, the receipt (320), synchronously, at the intermediary, of a response from the target service can be accomplished by invoking a blocking receive function on a data communication connection between the intermediary and the target service.

[0093] O segmento de pseudocódigo a seguir é um exemplo, para uma binding HTTP, de transmissão de uma solicitação de um intermediário para um serviço alvo e espera de uma resposta do serviço alvo, se a solicitação requerer uma resposta sincrona. O segmento a seguir exemplifica operação de cliente para uma binding HTTP, tal é proporcionado, frequentemente, de -acordo com as modalidades da presente invenção através de um provedor ou em um agente de saida (220, 222, na figura 2) de um intermediário de serviços da rede:[0093] The following pseudocode segment is an example, for an HTTP binding, of transmitting a request from an intermediary to a target service and waiting for a response from the target service, if the request requires a synchronous response. The following segment exemplifies client operation for an HTTP binding, this is often provided in accordance with the modalities of the present invention through a provider or an outbound agent (220, 222, in figure 2) of an intermediary network services:

import java.io.*; import java.net.*;import java.io. *; import java.net. *;

BufferedReader in = null;BufferedReader in = null;

Petição 870180049145, de 08/06/2018, pág. 54/71Petition 870180049145, of 06/08/2018, p. 54/71

47/6347/63

URL uri = new URL(targetURL);URL uri = new URL (targetURL);

URLConnection connection = (HttpURLConnection) uri. openConnection();URLConnection connection = (HttpURLConnection) uri. openConnection ();

BufferedWriter out = new BufferedWriter (newBufferedWriter out = new BufferedWriter (new

OutputStreamwriter (connection.getOutputStream());OutputStreamwriter (connection.getOutputStream ());

BufferedReader in = new BufferedReader (newBufferedReader in = new BufferedReader (new

InputStreamReader (connection.getlnputStream()));InputStreamReader (connection.getlnputStream ()));

out.println(request); if(synchRespReqd == TRUE) {out.println (request); if (synchRespReqd == TRUE) {

Message responseMessage = in.readLine(); return responseMessage;Message responseMessage = in.readLine (); return responseMessage;

} [0094] Este segmento de pseudocódigo exemplificativo cria um objeto Java URL e usa o objeto URL para abrir uma conexão de TCP/IP denominada 'conexão’ com um serviço alvo identificado como tendo o endereço de rede targetURL. O segmento também abre um fluxo armazenado temporariamente na conexão denominada sair e um fluxo de entrada na conexão denominada entrada. O segmento transmite a solicitação através da conexão como out.println(request) e, então, se uma resposta sincrona for requerida, faz uma chamada de bloqueio para receber uma mensagem de resposta através da mesma conexão, Message responseMessage = in.readLine(), e retorna a mensagem de resposta para a pessoa que chama. Este exemplo é para uma binding HTTP.} [0094] This example pseudocode segment creates a Java URL object and uses the URL object to open a TCP / IP connection called 'connection' to a target service identified as having the network address targetURL. The segment also opens a flow temporarily stored in the connection called out and an inlet flow in the connection called in. The thread transmits the request over the connection as out.println (request) and then, if a synchronous response is required, it makes a blocking call to receive a response message over the same connection, Message responseMessage = in.readLine () , and returns the reply message to the caller. This example is for an HTTP binding.

[0095] Por meio de outra explanação, um outro exemplo é apresentado abaixo para uma binding ’JMS’, isto é, uma binding ao Java Message Service. o JMS proporciona dois 'domínios' de mensagens, um para mensagens de ponto a ponto[0095] By way of another explanation, another example is presented below for a 'JMS' binding, that is, a binding to the Java Message Service. JMS provides two message 'domains', one for point-to-point messages

Petição 870180049145, de 08/06/2018, pág. 55/71Petition 870180049145, of 06/08/2018, p. 55/71

48/63 e um para mensagens de publicação-assinatura. Este exemplo discute as mensagens de ponto a ponto entre um intermediário e um serviço alvo, usando uma fila de mensagens de JMS. Nas mensagens de JMS de ponto a ponto, uma conexão de comunicação de dados, tal como um soquete, é encapsulada por um objeto de 'conexão’ JMS. Uma conexão JMS é criada através de um objeto administrativo chamado uma 'fábrica de conexões’. As conexões de JMS são usadas para criar uma ou mais 'sessões' de JMS. Uma sessão é um contexto ordenado simples para produzir e consumir mensagens. Uma sessão é usada para criar produtores de mensagens, consumidores de mensagens e mensagens. Um produtor de mensagens é um objeto usado para enviar mensagens para uma fila. A forma ponto a ponto de um produtor de mensagens implementa a interface de JMS ’queueSender’ , que inclui um método send() . Um consumidor de mensagens é um objeto para recebimento de mensagens de uma fila. A forma ponto a ponto de um produtor de mensagens implementa a interface de JMS ’queueReceiver’, que inclui um método de receive() de bloqueio, que pode ser chamado com ou sem um período de espera.48/63 and one for publication-subscription messages. This example discusses peer-to-peer messages between an intermediary and a target service, using a JMS message queue. In point-to-point JMS messages, a data communication connection, such as a socket, is encapsulated by a JMS 'connection' object. A JMS connection is created through an administrative object called a 'connection factory'. JMS connections are used to create one or more JMS 'sessions'. A session is a simple ordered context for producing and consuming messages. A session is used to create message producers, message and message consumers. A message producer is an object used to send messages to a queue. The point-to-point form of a message producer implements the JMS interface 'queueSender', which includes a send () method. A message consumer is an object for receiving messages from a queue. The point-to-point form of a message producer implements the JMS interface 'queueReceiver', which includes a block receive () method, which can be called with or without a waiting period.

[0096] 0 segmento de pseudocódigo a seguir é um exemplo, para uma binding JMS, de transmissão de uma solicitação de um intermediário para um serviço alvo e espera de uma resposta do serviço alvo, se a solicitação requerer uma resposta síncrona.[0096] The following pseudocode segment is an example, for a JMS binding, of transmitting a request from an intermediary to a target service and waiting for a response from the target service, if the request requires a synchronous response.

//get a connection// get a connection

QueueConnection queueConnection = queueConnectionFactory.createQueueConnection();QueueConnection queueConnection = queueConnectionFactory.createQueueConnection ();

//use the connection to establish a session// use the connection to establish a session

Petição 870180049145, de 08/06/2018, pág. 56/71Petition 870180049145, of 06/08/2018, p. 56/71

49/63 //the 'false’ parameter means no transaction, and AUTO_49/63 // the 'false' parameter means no transaction, and AUTO_

ACK is on.ACK is on.

QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO _ACKNOWLEDGE);QueueSession queueSession = queueConnection.createQueueSession (false, Session.AUTO _ACKNOWLEDGE);

//create a sender and send the request from the //intermediary to the target Service through a JMS queue// create a sender and send the request from the // intermediary to the target Service through a JMS queue

QueueSender queuesender = queueSession.createSender(myQueue);QueueSender queuesender = queueSession.createSender (myQueue);

queueSender.send(requestMessage);queueSender.send (requestMessage);

//if synchronous response is required, create a receiver and //issue a blocking receive () on the receiver if(synchRespReqd == TRUE) {// if synchronous response is required, create a receiver and // issue a blocking receive () on the receiver if (synchRespReqd == TRUE) {

QueueReceiver queueReceiver = queueSession.createReceiver(myQueue);QueueReceiver queueReceiver = queueSession.createReceiver (myQueue);

Message responseMessage = queueReceiver.receive(); return responseMessage;Message responseMessage = queueReceiver.receive (); return responseMessage;

} [0097] Este segmento exemplificativo cria uma conexão chamada queueConnection, cria uma sessão chamada queueSession, cria um remetente chamado queueSender, envia a mensagem de solicitação para o serviço alvo através de uma fila de JMS e, se uma solicitação síncrona for requerida, cria um receptor chamado queueReceiver e emite um receive() de bloqueio em queueReceiver para esperar uma mensagem de resposta.} [0097] This example segment creates a connection called queueConnection, creates a session called queueSession, creates a sender called queueSender, sends the request message to the target service through a JMS queue and, if a synchronous request is required, creates a receiver called queueReceiver and issues a block receive () on queueReceiver to wait for a response message.

[0098] Se a solicitação não requer (362) uma resposta síncrona, então, métodos de suporte de proxy agnóstico quanto[0098] If the request does not require (362) a synchronous response, then methods of agnostic proxy support as

Petição 870180049145, de 08/06/2018, pág. 57/71Petition 870180049145, of 06/08/2018, p. 57/71

50/63 ao tipo de porta para intermediários de serviços da rede de acordo com as modalidades da presente invenção podem incluir fazer absolutamente nada além de emitir a solicitação para o serviço alvo. Isto é, se uma solicitação não requer (362) uma resposta sincrona, está bem dentro do escopo da presente invenção de acordo com modalidades preferidas nada fazer com referência a avisos de recebimento, respostas assincronas e semelhantes. Alternativamente, conforme mostrado na Figura 4, métodos de acordo com a segunda modalidade da presente invenção podem incluir o recebimento (354) de um serviço alvo (156) de um aviso de recebimento da solicitação de serviço alvo e retorno (358) do aviso de recebimento (156) para um solicitante (102), sem esperar par uma mensagem de resposta.50/63 to the type of port for network service intermediaries in accordance with the modalities of the present invention may include doing absolutely nothing but issuing the request to the target service. That is, if a request does not require (362) a synchronous response, it is well within the scope of the present invention according to preferred embodiments to do nothing with reference to acknowledgment of receipt, asynchronous responses and the like. Alternatively, as shown in Figure 4, methods according to the second embodiment of the present invention may include receiving (354) a target service (156) from an acknowledgment of receipt of the target service request and return (358) from the notification of (156) to a requester (102), without waiting for a reply message.

[0099] Aqui está um segmento de pseudocódigo exemplificativo que retorna um aviso de recebimento para um solicitante, sem esperar uma mensagem de resposta:[0099] Here is an example pseudocode segment that returns an acknowledgment of receipt to an applicant, without waiting for a response message:

import java.io.*; import java.net.*;import java.io. *; import java.net. *;

URL uri = new URL(targetURL);URL uri = new URL (targetURL);

HTTPURLConnection connection = (HttpURLConnection) uri.openConnection();HTTPURLConnection connection = (HttpURLConnection) uri.openConnection ();

Bufferedwriter out = new BufferedWriter (newBufferedwriter out = new BufferedWriter (new

OutputStreamWriter(connection.getOutputStream()));OutputStreamWriter (connection.getOutputStream ()));

BufferedReader in = new BufferedReader (newBufferedReader in = new BufferedReader (new

InputStreamReader (connection.getlnputstream()));InputStreamReader (connection.getlnputstream ()));

out.println(request);out.println (request);

int acknowledgment = connection.getResponseCode(); if (acknowledgment == 200) return acknowledgement; else return ERROR;int acknowledgment = connection.getResponseCode (); if (acknowledgment == 200) return acknowledgment; else return ERROR;

Petição 870180049145, de 08/06/2018, pág. 58/71Petition 870180049145, of 06/08/2018, p. 58/71

51/63 [0100] Este segmento de pseudocódigo exemplificativo cria um objeto Java URL e abre para o objeto URL, na forma de um objeto de HTTPURLConnection, uma conexão de TCP/IP denominada 'conexão’ com um serviço alvo identificado como tendo endereço de rede targetURL. 0 segmento também abre um fluxo de saída armazenado temporariamente na conexão denominada sair e um fluxo de entrada no soquete denominado entrar. O segmento transmite a solicitação através da conexão como out.println(request) e, então, faz uma chamada de bloqueio para receber um aviso de recebimento através da mesma conexão, int acknowledgment = connection.getResponseCode(). O segmento ou retorna um aviso de recebimento para a pessoa que chama (código de resposta de HTTP '200', neste exemplo) ou retorna uma mensagem de erro. O aviso de recebimento é um aviso de recebimento procedimental do serviço alvo de que a solicitação foi recebida. O segmento não espera por uma resposta substantiva para a solicitação.51/63 [0100] This example pseudocode segment creates a Java URL object and opens for the URL object, in the form of an HTTPURLConnection object, a TCP / IP connection called 'connection' to a target service identified as having a targetURL network. The segment also opens an output stream temporarily stored in the connection called out and an input stream in the socket called in. The segment transmits the request over the connection as out.println (request) and then makes a blocking call to receive an acknowledgment over the same connection, int acknowledgment = connection.getResponseCode (). The segment either returns an acknowledgment to the caller (HTTP response code '200' in this example) or returns an error message. The acknowledgment of receipt is a notice of procedural receipt from the target service that the request was received. The segment does not wait for a substantive response to the request.

[0101] O segmento de pseudocódigo exemplificativo acima é um exemplo de transmissão de uma solicitação de um intermediário para um serviço alvo e fornecimento de um aviso de recebimento, sem esperar por uma mensagem de resposta substantiva. Este segmento exemplifica operação de cliente para uma binding HTTP, tal como é frequentemente proporcionado de acordo com as modalidades da presente invenção através de um provedor ou em um agente de saída (220, 222, na figura 2) de um intermediário de serviços da rede.[0101] The example pseudocode segment above is an example of transmitting a request from an intermediary to a target service and providing an acknowledgment of receipt, without waiting for a substantive response message. This segment exemplifies client operation for an HTTP binding, as it is often provided according to the modalities of the present invention through a provider or an outbound agent (220, 222, in figure 2) of a network service intermediary. .

[0102] Leitores de habilidade na técnica agora estão surpresos como o solicitante sabe enviar para o intermediário[0102] Readers of skill in the technique are now surprised at how the applicant knows how to send to the intermediary

Petição 870180049145, de 08/06/2018, pág. 59/71Petition 870180049145, of 06/08/2018, p. 59/71

52/63 uma solicitação para uma operação no serviço alvo. A resposta é que o intermediário ou um desenvolvedor do intermediário identifica para o solicitante um endpoint do intermediário de serviços da rede como um endpoint que suporta a operação no serviço alvo. Um identificador de um endpoint do intermediário como um endpoint que suporta a operação no serviço alvo pode ser implementado em um documento WSDL que é registrado em um diretório empresarial para descoberta pelo solicitante. Alternativamente, essa identificação pode ser baixada do intermediário para o solicitante - ou mesmo simplesmente enviada por e-mail para o solicitante ou para o administrador do solicitante, para instalação por um administrador nos dados de configuração de serviços da rede do solicitante.52/63 a request for an operation on the target service. The answer is that the broker or a developer of the broker identifies for the requester an endpoint of the network services broker as an endpoint that supports the operation on the target service. An identifier of a broker's endpoint as an endpoint that supports operation on the target service can be implemented in a WSDL document that is registered in a corporate directory for discovery by the requester. Alternatively, this identification can be downloaded from the intermediary to the requester - or even simply emailed to the requester or the requester's administrator for installation by an administrator in the service configuration data of the requester's network.

[0103] Consideremos um exemplo em que um serviço alvo é descrito pelo seguinte segmento de pseudocódigo de WSDL:[0103] Let us consider an example in which a target service is described by the following WSDL pseudocode segment:

<definitions targetNamespace=... ><definitions targetNamespace = ...>

<message name=GetQuoteInput> ... </message><message name = GetQuoteInput> ... </message>

<message name=GetQuoteOutput> ... </message><message name = GetQuoteOutput> ... </message>

<portType name=StockquotePT> ... </portType><portType name = StockquotePT> ... </portType>

Cbinding name= SOAPBinding... >Cbinding name = SOAPBinding ...>

<operation name= getQuote> ... </operation> . . . </binding><operation name = getQuote> ... </operation>. . . </binding>

<Service name=StockquoteService><Service name = StockquoteService>

<port name=SOAPPort binding=tns:SOAPBinding><port name = SOAPPort binding = tns: SOAPBinding>

<soap:address location= http://myTargetService/soap/servlet/getQuote/><soap: address location = http: // myTargetService / soap / servlet / getQuote />

</port></port>

</service></service>

</definitions></definitions>

Petição 870180049145, de 08/06/2018, pág. 60/71Petition 870180049145, of 06/08/2018, p. 60/71

53/63 [0104] Um intermediário para aquele serviço alvo pode identificar para um solicitante um endpoint de intermediário de serviços da rede como um endpoint que suporta operação no serviço alvo pela substituição do atributo de localização do elemento de extensão de endereço na descrição de serviço alvo segue-se:53/63 [0104] An intermediary for that target service can identify to a requester a network service intermediary endpoint as an endpoint that supports operation on the target service by replacing the location attribute of the address extension element in the service description target follows:

<soap:address location= http://www.mylntermediary. com/Channel/SOAP/proxy?portType=StockquotePT/><soap: address location = http: //www.mylntermediary. com / Channel / SOAP / proxy? portType = StockquotePT />

[0105] Assim, criando um documento de WSDL exemplificado pelo seguinte segmento:[0105] Thus, creating a WSDL document exemplified by the following segment:

<definitions targetNamespace= ... ><definitions targetNamespace = ...>

<message name=GetQuoteInput> ... </message><message name = GetQuoteInput> ... </message>

<message name=GetQuoteOutput> ... </message><message name = GetQuoteOutput> ... </message>

<portType name=StockquotePT> ... </portType><portType name = StockquotePT> ... </portType>

Cbinding name=SOAPBinding...>Cbinding name = SOAPBinding ...>

<operation name=getQuotelT> ... </operation>. . .<operation name = getQuotelT> ... </operation>. . .

</binding></binding>

<Service name=portTypeAgnosticProxy><Service name = portTypeAgnosticProxy>

<port name = intermediaryEndpointbinding = SOAPBinding><port name = intermediaryEndpointbinding = SOAPBinding>

<soap:address location= http://www.mylntermediary.com/Channel/SOAP/proxy?portType= StockquotePT/><soap: address location = http://www.mylntermediary.com/Channel/SOAP/proxy?portType= StockquotePT />

</port></port>

</service></service>

</definitions>, que identifica um endpoint de um intermediário de serviços da rede como um endpoint que suporta a operação de getQuote no serviço alvo. O fornecimento de WSDL da espécie exemplificada por este último segmento para um solicitante,</definitions>, which identifies a network service broker's endpoint as an endpoint that supports the getQuote operation on the target service. The provision of WSDL of the species exemplified by the latter segment to a requester,

Petição 870180049145, de 08/06/2018, pág. 61/71Petition 870180049145, of 06/08/2018, p. 61/71

54/63 através de um registro, um download, e-mail ou por outros meios conforme ocorra àqueles habilitados na técnica, identifica para o solicitante um endpoint do intermediário de serviços alvo como um endpoint, que suporta a operação no serviço alvo.54/63 through a registration, a download, e-mail or by other means depending on those skilled in the art, it identifies for the requester an endpoint of the target services intermediary as an endpoint, which supports the operation on the target service.

[0106] No método da figura 4, a identificação (308), na dependência da informação paramétrica (107), do endpoint para um serviço alvo que suporte a operação frequentemente pode incluir a identificação não exatamente de um endpoint para um serviço alvo, mas dois ou mais endpoints de serviços alvo que suportam a operação. Consideremos um exemplo em que um proxy agnóstico quanto ao tipo de porta de acordo com uma modalidade do método da presente invenção recebe como informação paramétrica (107) um tipo de porta para uma operação, consulta um registro empresarial com o tipo de porta como um parâmetro de consulta e, assim, identifica dois ou mais endpoints de serviços alvo que suportam a operação. Essa identificação de dois ou mais endpoints pode ser realizada, por exemplo, pela consulta de um registro de UDDI com o tipo de porta e recebimento em resposta de dois ou mais documentos de WSDL que descrevem serviços alvo para o tipo de porta.[0106] In the method of figure 4, the identification (308), depending on the parametric information (107), of the endpoint for a target service that supports the operation can often include the identification not exactly of an endpoint for a target service, but two or more target service endpoints that support the operation. Let us consider an example in which an agnostic proxy regarding the type of door according to a modality of the method of the present invention receives as a parametric information (107) a type of door for an operation, queries a business register with the type of door as a parameter query and thus identifies two or more target service endpoints that support the operation. This identification of two or more endpoints can be accomplished, for example, by querying a UDDI record with the port type and receiving in response two or more WSDL documents that describe target services for the port type.

[0107] Quando dois ou mais endpoints são assim identificados, métodos para suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da rede de acordo com as modalidades da presente invenção, tipicamente, incluem a seleção de um dos endpoints de acordo com as regras de seleção. Em um caso trivial, uma regra de seleção pode ser selecionar o primeiro dos endpoints assim identificados e negligenciar os outros. As regras de seleção[0107] When two or more endpoints are thus identified, methods for supporting agnostic proxy as to the type of port for network service intermediaries according to the modalities of the present invention, typically include the selection of one of the endpoints according to selection rules. In a trivial case, a selection rule may be to select the first of the endpoints thus identified and neglect the others. Selection rules

Petição 870180049145, de 08/06/2018, pág. 62/71Petition 870180049145, of 06/08/2018, p. 62/71

55/63 podem ser mais complexas, incluindo, por exemplo, regras de seleção para equilíbrio de carga. As regras para equilíbrio de carga podem ser implementadas pelo uso de uma estrutura de dados similar àquela mostrada na Tabela 1.55/63 can be more complex, including, for example, load balancing selection rules. Load balancing rules can be implemented using a data structure similar to that shown in Table 1.

Tabela 1. Rastreamento de Latência Table 1. Latency tracking Tip o de Por ta Tip O in Per OK URI de endpoint Endpoint URI Tempo de envio Time in send Tempo de recebim ento Time to I received then Latên cia de Viage m (ms) Laten co in Travel m (ms) Latênci a Cumulat iva (ms) Latency The Cumulat vat (ms) A THE http://www.ibm.com /a TargetService http://www.ibm.com / a TargetService 12:01:0 1.1 12: 01: 0 1.1 12:01:0 1.2 12: 01: 0 1.2 100 100 100 100 A THE http://www.ibm.com /a TargetService http://www.ibm.com / a TargetService 12:05:0 2.3 12: 05: 0 2.3 12:05:0 2.45 12: 05: 0 2.45 150 150 250 250 A THE http://www.ibm.com /another TargetService http://www.ibm.com / another TargetService 01:10:0 1.5 01: 10: 0 1.5 01:10:0 1.57 01: 10: 0 1.57 70 70 70 70 A THE http://www.ibm.com /another TargetService http://www.ibm.com / another TargetService 01:15:0 2.5 01: 15: 0 2.5 01:15:0 2.8 01: 15: 0 2.8 30 30 30 30 - - - - - - - - - - - -

[0108] Cada fileira na Tabela 1 representa uma medição de latência para uma viagem de ida e volta de solicitação - resposta em comunicações de dados de serviços da rede entre um intermediário e um serviço alvo. A Tabela[0108] Each row in Table 1 represents a measurement of latency for a round trip request - response in network service data communications between an intermediary and a target service. The Table

Petição 870180049145, de 08/06/2018, pág. 63/71Petition 870180049145, of 06/08/2018, p. 63/71

56/63 proporciona colunas para o tipo de porta e o URI de endpoint para cada ciclo de solicitação e resposta. A coluna Tempo de Envio registra o tempo em que uma mensagem de solicitação é emitida do intermediário para um endpoint em um serviço alvo para uma operação de um tipo de porta. A coluna Tempo de Recebimento registra o tempo em que uma mensagem de resposta correspondente é recebida do serviço alvo. A latência de Viagem é a diferença entre o Tempo de Recebimento e o Tempo de Envio. A Latência Cumulativa é uma soma de execução de Latências de Viagem para cada endpoint representado na tabela. Com uma estrutura similar de Latências de Viagem para cada endpoint representado na tabela. Com uma estrutura similar a Tabela 1, as regras de seleção para uso quando mais de um endpoint para uma solicitação é identificada pode ser implementado como as regras exemplificativas a seguir:56/63 provides columns for the port type and the endpoint URI for each request and response cycle. The Send Time column records the time that a request message is sent from the broker to an endpoint on a target service for an operation of a type of port. The Receive Time column records the time that a corresponding reply message is received from the target service. Travel latency is the difference between Receive Time and Send Time. Cumulative Latency is a sum of Travel Latencies for each endpoint represented in the table. With a similar structure of Travel Latencies for each endpoint represented in the table. With a structure similar to Table 1, the selection rules for use when more than one endpoint for a request is identified can be implemented as the following example rules:

- como cada vez mais solicitações para operações no mesmo tipo de porta chegam no intermediário, usar um de cada vez cada um de mais de um dos endpoints identificados;- as more and more requests for operations on the same type of port arrive at the intermediary, use one at a time each one of more than one of the identified endpoints;

- registrar dados de latência para cada um desses usos;- record latency data for each of these uses;

- para solicitações subsequentes para operações do mesmo tipo de porta, selecionar da tabela de latência o endpoint tendo a menor latência cumulativa, enviar a solicitação para aquele endpoint e registrar os dados de latência pertinentes, quando a mensagem é enviada para o serviço alvo e quando a resposta correspondente é recebida no intermediário.- for subsequent requests for operations of the same type of port, select the endpoint having the lowest cumulative latency from the latency table, send the request to that endpoint and record the relevant latency data, when the message is sent to the target service and when the corresponding response is received at the intermediary.

[0109] Os dados exemplificativos na Tabela 1 mostram latência cumulativa para solicitações recentemente enviadas para o tipo de porta A para dois endpoints, um primeiro endpoint em URI http:/www.ibm.com/anotherTargetService. O[0109] The sample data in Table 1 shows cumulative latency for requests recently sent to port type A for two endpoints, a first endpoint at URI http: /www.ibm.com/anotherTargetService. O

Petição 870180049145, de 08/06/2018, pág. 64/71Petition 870180049145, of 06/08/2018, p. 64/71

57/63 primeiro tem uma latência de solicitação cumulativa de 250 milissegundos e o segundo tem uma latência de solicitação cumulativa de 100 milissegundos. Usando as regras de seleção exemplificativas apresentadas acima, uma solicitação corrente para uma operação no tipo de porta A será roteada para o segundo endpoint, um em URI http:/www.ibm.com/anotherTargetService.57/63 first has a cumulative request latency of 250 milliseconds and the second has a cumulative request latency of 100 milliseconds. Using the exemplary selection rules presented above, a current request for an operation on port type A will be routed to the second endpoint, one at URI http: /www.ibm.com/anotherTargetService.

[0110] No método da figura 4, a criação (312) de uma solicitação (114) de serviço alvo para execução da operação no serviço alvo pode ser realizada pela composição da solicitação em uma estrutura de dados uteis em uma interface de binding neutra e chamando a interface de binding neutra, passagem da solicitação como um parâmetro de chamada. Similarmente, a emissão (316) da solicitação (114) de serviço alvo para o serviço alvo compreende a chamada de um ou mais elementos em uma interface de binding neutra.[0110] In the method of figure 4, the creation (312) of a target service request (114) to perform the operation on the target service can be performed by composing the request in a useful data structure in a neutral binding interface and calling the neutral binding interface, passing the request as a call parameter. Similarly, issuing (316) the target service request (114) to the target service comprises calling one or more elements on a neutral binding interface.

[0111] Uma interface de binding neutra é uma em que o uso da interface não depende de solicitação de binding de mensagem. Isto é, os métodos de estruturas de dados e de chamada usados para implementar a interface e realizar comunicações de dados através dela, não dependem do tipo de codificação de dados usado em uma mensagem nem dependem do protocolo de comunicação de dados usado para uma mensagem. Desenvolvedores de proxies de agnósticos quanto ao tipo de porta para intermediários de acordo com as modalidades da presente invenção, frequentemente, construirão suas interfaces de binding neutra. Há um padrão aberto para uma interface de binding neutra, porém, conhecida como WSIF, Web Service Invocation Framework. A WSIF é agora suportada[0111] A neutral binding interface is one in which the use of the interface does not depend on a message binding request. That is, the data structure and calling methods used to implement the interface and carry out data communications through it, do not depend on the type of data encoding used in a message, nor do they depend on the data communication protocol used for a message. Developers of agnostic proxies as to the type of port for intermediaries in accordance with the modalities of the present invention will often build their neutral binding interfaces. There is an open standard for a neutral binding interface, however, known as WSIF, Web Service Invocation Framework. WSIF is now supported

Petição 870180049145, de 08/06/2018, pág. 65/71Petition 870180049145, of 06/08/2018, p. 65/71

58/63 como parte do Apache Software Foundation's Web Services58/63 as part of the Apache Software Foundation's Web Services

Project.Project.

[0112] O uso de uma interface de binding neutra proporciona vantagens para as modalidades da presente invenção. A binding SOAP-HTTP é tão comum na técnica corrente que os usuários e os desenvolvedores algumas vezes esquecem que existem outras bindings. Isso resulta em desenvolvimento de sistemas que são difíceis, se não impossíveis, de usar com outras bindings ou de adaptar para usa com outras bindings. À medida que os serviços de rede se desenvolvem, porém, outras bindings se tornarão mais úteis e mais comuns. O uso de uma interface de binding neutra para a especificação de modalidades da presente invenção, além disso, também significa que bindings disponíveis podem ser determinadas em tempo de processamento, assim, proporcionando um intermediário de serviços da rede flexível, poderoso e em geral mais útil.[0112] The use of a neutral binding interface provides advantages for the modalities of the present invention. SOAP-HTTP binding is so common in current technique that users and developers sometimes forget that there are other bindings. This results in the development of systems that are difficult, if not impossible, to use with other bindings or to adapt for use with other bindings. As network services develop, however, other bindings will become more useful and more common. The use of a neutral binding interface for specifying modalities of the present invention, furthermore, also means that available bindings can be determined at processing time, thus providing a flexible, powerful and generally more useful network service intermediary .

[0113] Uma maneira de implementar uma interface de binding neutra é proporcionar objetos de pontos final que são capazes de invocar serviços em serviços alvo dada um tipo de porta e um endpoint. Uma maneira de proporcionar esses objetos de endpoints é pelo uso de uma fábrica de endpoints similar a uma ilustrada no segmento de pseudocódigo a seguir:[0113] One way to implement a neutral binding interface is to provide endpoint objects that are capable of invoking services on target services given a port type and an endpoint. One way to provide these endpoint objects is by using an endpoint factory similar to the one illustrated in the following pseudocode segment:

Endpoint Factory Class //Defines a parameterized factory method for creating endpoint objects // class EndpointFactory {Endpoint Factory Class // Defines a parameterized factory method for creating endpoint objects // class EndpointFactory {

Petição 870180049145, de 08/06/2018, pág. 66/71Petition 870180049145, of 06/08/2018, p. 66/71

59/63 public static Endpoint createEndpointObject(portType, networkAddress) {59/63 public static Endpoint createEndpointObject (portType, networkAddress) {

//establish reference for new endpoint object// establish reference for new endpoint object

Endpoint anEndpoint = null;Endpoint anEndpoint = null;

if(portType == A && networkAddress == www.abc. com”) anEndpoint = new Endpointl;if (portType == A && networkAddress == www.abc. com ”) anEndpoint = new Endpointl;

if (portType == B && networkAddress == wwww.def.if (portType == B && networkAddress == wwww.def.

com”) anEndpoint = new Endpoint2;com ”) anEndpoint = new Endpoint2;

if (portType == C && networkAddress == www.ghi.if (portType == C && networkAddress == www.ghi.

com) anEdpoint = new Endpoint3;com) anEdpoint = new Endpoint3;

if (portType == LAST && networkAddress == www. IastSupported.com”) anEndpoint = new Endpoint465; if anEndpoint == null) reportError(); else return anEndpoint;if (portType == LAST && networkAddress == www. IastSupported.com ”) anEndpoint = new Endpoint465; if anEndpoint == null) reportError (); else return anEndpoint;

} // end createEndpointObject() } // end class EndpointFactory [0114] As classes de endpoints, Endpointl, Endpoint2, Endpoint3 e assim por diante, são classes concretas que herdam uma classe de endpoint abstrata (ou implementam a mesma como uma interface) que proporciona métodos de elementos para criar objetos de mensagem para conter partes de mensagem. Esse fator de endpoint e outros elementos nessa interface de binding neutra pode ser usado para realizar as etapas de criação (312) de uma solicitação (114) de serviço alvo e emissão (316) da solicitação (114)} // end createEndpointObject ()} // end class EndpointFactory [0114] The classes of endpoints, Endpointl, Endpoint2, Endpoint3 and so on, are concrete classes that inherit an abstract endpoint class (or implement it as an interface) which provides element methods for creating message objects to contain message parts. This endpoint factor and other elements in this neutral binding interface can be used to perform the steps of creating (312) a target service request (114) and issuing (316) of the request (114)

Petição 870180049145, de 08/06/2018, pág. 67/71Petition 870180049145, of 06/08/2018, p. 67/71

60/63 de serviço alvo para o serviço alvo, conforme ilustrado no segmento de pseudocódigo a seguir:60/63 target service to the target service, as illustrated in the following pseudocode segment:

//Get endpoint object from endpoint factory// Get endpoint object from endpoint factory

Endpoint ep = endPointFactory.createEndPoint(portType, networkAddress);Endpoint ep = endPointFactory.createEndPoint (portType, networkAddress);

//Prepare an input message// Prepare an input message

Message input = ep.createlnputMessage();Message input = ep.createlnputMessage ();

//use message accessor function to insert contents of message input.setPart(symbol,IBM);// use message accessor function to insert contents of message socketsetPart (symbol, IBM);

//Prepare a placeholder for a response value// Prepare a placeholder for a response value

Message output = null;Message output = null;

if (synchRespReqd == TRUE) output = ep.createOutputMessage();if (synchRespReqd == TRUE) output = ep.createOutputMessage ();

//execute the operation ep.executeRequestResponseoperation(getQuote, input, output);// execute the operation ep.executeRequestResponseoperation (getQuote, input, output);

//return the result if(synchRespReqd == TRUE) return output; else return ACK;// return the result if (synchRespReqd == TRUE) return output; else return ACK;

[0115] Este segmento de pseudocódigo exemplificativo, dada um tipo de porta e um endereço de rede para um endpoint, chama uma fábrica de endpoint para criar um objeto de endpoint. o segmento, então, cria uma solicitação de serviço alvo pelo carregamento de partes de mensagem no objeto de endpoint e emite a solicitação de serviço alvo para o serviço alvo chamando o método de elementos executeRequestResponseOperation(). O método da figura 5, se a solicitação requerer uma resposta sincrona, inclui o recebimento (320), no intermediário, de uma resposta[0115] This example pseudocode segment, given a type of port and a network address for an endpoint, calls an endpoint factory to create an endpoint object. the segment then creates a target service request by loading parts of the message into the endpoint object and issues the target service request to the target service by calling the executeRequestResponseOperation () element method. The method in figure 5, if the request requires a synchronous response, includes receiving (320), at the intermediary, a response

Petição 870180049145, de 08/06/2018, pág. 68/71Petition 870180049145, of 06/08/2018, p. 68/71

61/63 (122) do serviço alvo; criação (324), no intermediário, na dependência da resposta (122) do serviço alvo, de uma resposta (126) do intermediário; e retorno (328) da resposta (126) do intermediário para o cliente da solicitação.61/63 (122) of the target service; creation (324), in the intermediary, depending on the response (122) of the target service, a response (126) of the intermediary; and returning (328) the response (126) from the intermediary to the request client.

[0116] Neste segmento de pseudocódigo exemplificativo, as etapas de recebimento (320) de uma resposta (122) do serviço alvo e criação (324) de uma resposta (126) do intermediário são implementadas pela chamada para executeRequestResponseOperation(). Neste exemplo, o valor da referência para a mensagem de saida e deixado nulo, se a solicitação requerer uma resposta sincrona. O parâmetro nulo output nesta espécie de modalidade e tomado por um provedor (220, na figura 2A) para significar que uma resposta sincrona não é requerida, o provedor, portanto, emite a solicitação para um serviço alvo e retorna imediatamente, sem esperar uma resposta.[0116] In this example pseudocode segment, the steps of receiving (320) a response (122) from the target service and creating (324) a response (126) from the intermediary are implemented by the call to executeRequestResponseOperation (). In this example, the reference value for the outgoing message is left null, if the request requires a synchronous response. The null parameter output in this kind of modality is taken by a provider (220, in figure 2A) to mean that a synchronous response is not required, the provider, therefore, issues the request to a target service and returns immediately, without waiting for a response .

[0117] Similarmente, se a solicitação requerer uma resposta sincrona, o valor da referência para a mensagem de resposta 'output' é estabelecido não nulo por: output = ep.createOutputMessage() . O fato de que a referência de parâmetro para a mensagem de resposta, aqui denominada 'output' (na chamada:[0117] Similarly, if the request requires a synchronous response, the reference value for the response message 'output' is set to non-null by: output = ep.createOutputMessage (). The fact that the parameter reference for the response message, here called 'output' (in the call:

ep.executeRequestResponseOperation('getQuote, input, output) é não nulo, é tomado por um provedor (220, na figura 2A) para significar que uma resposta sincrona é requerida. Esse provedor é programado, então, para efetuar uma chamada de recebimento de bloqueio em seu agente de saida (222, na figura 2) e esperar por uma mensagem de resposta correspondente do serviço alvo. Em termos do método da figuraep.executeRequestResponseOperation ('getQuote, input, output) is non-null, it is taken by a provider (220, in figure 2A) to mean that a synchronous response is required. This provider is then programmed to place a blocking receive call on its outbound agent (222, in figure 2) and wait for a corresponding response message from the target service. In terms of the figure method

Petição 870180049145, de 08/06/2018, pág. 69/71Petition 870180049145, of 06/08/2018, p. 69/71

62/6362/63

5, então, esse segmento representa um método exemplificativo de criação (312) de uma solicitação (114) de serviço alvo para execução de uma operação em um serviço alvo, na dependência de uma determinação (152) se a solicitação requer uma resposta sincrona.5, then, this segment represents an exemplary method of creating (312) a target service request (114) to perform an operation on a target service, depending on a determination (152) whether the request requires a synchronous response.

[0118] Os segmentos de pseudocódigos de exemplo acima ilustram o uso de uma interface de binding neutra (218) com portas referidas como endpoints. A sintaxe de interface WSL, porém, usa o termo porta quando se referindo a endpoints. Por meio de outra explanação referente ao uso de interfaces de bindings neutras, porém, um outro segmento de pseudocódigo exemplificativo é apresentado, aderindo mais intimamente ao padrão WSF. Neste exemplo, porta é usado para significar endpoint e para consistência de explanação, o nome da fábrica é mudado para portFactory.[0118] The sample pseudocode segments above illustrate the use of a neutral binding interface (218) with ports referred to as endpoints. The WSL interface syntax, however, uses the term port when referring to endpoints. Through another explanation regarding the use of neutral bindings interfaces, however, another exemplary pseudocode segment is presented, adhering more closely to the WSF standard. In this example, port is used to signify endpoint and for consistency of explanation, the factory name is changed to portFactory.

//get a port (an endpoint) from the factory// get a port (an endpoint) from the factory

WSIFPort port = portFactory_getport(portType, networkAddress);WSIFPort port = portFactory_getport (portType, networkAddress);

//Prepare an input message// Prepare an input message

WSIFMessage input = port_createInputMessage();WSIFMessage input = port_createInputMessage ();

//insert message contents input.setPart(symbol, new WSIFJavaPart(String.class, symbol));// insert message contents socketsetPart (symbol, new WSIFJavaPart (String.class, symbol));

//Prepare a placeholder for a response value// Prepare a placeholder for a response value

WSIFMessage output = null;WSIFMessage output = null;

if(synchRespReqd==TRUE)output=port.createOutputMessage O ;if (synchRespReqd == TRUE) output = port.createOutputMessage O;

//execute the operation port.executeRequestResponseOperation(getQuote,input, output, null);// execute the operation port.executeRequestResponseOperation (getQuote, input, output, null);

Petição 870180049145, de 08/06/2018, pág. 70/71Petition 870180049145, of 06/08/2018, p. 70/71

63/63 //extract and return the result if(synchRespReqd == TRUE) return output;63/63 // extract and return the result if (synchRespReqd == TRUE) return output;

else return ACK;else return ACK;

[0119] Embora esta especificação discuta métodos exemplificativos de suporte de proxies de agnósticos quanto ao tipo de porta em intermediários de serviços da rede, principalmente em termos de processamento de uma solicitação em seu caminho de um solicitante para um serviço alvo, é útil notar que intermediários de acordo com as modalidades da presente invenção também são capazes, tipicamente, de processar mensagens de resposta, fazendo seu caminho de volta de um serviço alvo através do intermediário para o solicitante original. O método da figura 51 por exemplo, inclui o recebimento (320), no intermediário, quando uma solicitação requer uma resposta sincrona, de uma resposta (122) do serviço alvo; criação (324), no intermediário, na dependência da resposta (122) do serviço alvo de uma resposta (126) do intermediário; e retorno (328) da resposta (126) do intermediário para o cliente solicitante.[0119] Although this specification discusses exemplary methods of supporting agnostic proxies as to the type of port in network service intermediaries, mainly in terms of processing a request on its way from a requester to a target service, it is useful to note that intermediaries according to the modalities of the present invention are also typically able to process response messages, making their way back from a target service through the intermediary to the original requester. The method of figure 51, for example, includes receiving (320), at the intermediary, when a request requires a synchronous response, of a response (122) from the target service; creation (324), in the intermediary, depending on the answer (122) of the target service of an answer (126) of the intermediary; and return (328) of the intermediary's response (126) to the requesting customer.

[0120] Será compreendido da descrição precedente que modificações e mudanças podem ser feitas em várias modalidades da presente invenção, sem afastamento do seu verdadeiro espirito. As descrições nesta especificação são para fins de ilustração apenas e não devem ser construídas em um sentido limitativo. O escopo da presente invenção é limitado apenas pela linguagem das reivindicações seguintes.[0120] It will be understood from the preceding description that modifications and changes can be made in various modalities of the present invention, without departing from its true spirit. The descriptions in this specification are for illustration purposes only and should not be construed in a limiting sense. The scope of the present invention is limited only by the language of the following claims.

Petição 870180049145, de 08/06/2018, pág. 71/71Petition 870180049145, of 06/08/2018, p. 71/71

1/41/4

Claims (6)

REIVINDICAÇÕES 1/6 t«21/6 t «2 202202 118 s,118 s, Solicitante Requester Solicitação t Request t Intermediário Intermediate Solicitação * Solicitation * Serviço Service ' »  '» j ..... j ..... * Resposta * Answer Resposta answer AIV0 AIV0
FIGURA 1AFIGURE 1A 102 202 118102 202 118 FIGURA 1BFIGURE 1B Petição 870170103480, de 29/12/2017, pág. 80/85Petition 870170103480, of 12/29/2017, p. 80/85 1. Método para suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da web (202), o método compreendendo: receber (104, 304) em um intermediário de serviços da web (202), uma solicitação (106) para execução de uma operação de serviços da web, em que a solicitação (106) inclui informação paramétrica (107) compreendendo um tipo de porta identificando uma coleção de operações, caracterizado pelo fato de que um endpoint (110) para um serviço alvo (118) que suporta a operação pode ser identificado usando a informação paramétrica de tipo de porta; identificar (108, 308), na dependência da informação paramétrica, o endpoint para um serviço alvo que suporte a operação; criar (112, 312) uma solicitação de serviço alvo (118) para execução da operação do serviço alvo (118); e emitir (116, 316) a solicitação de serviço alvo para o serviço alvo(118).1. Method for supporting agnostic proxy as to the type of port for web services intermediaries (202), the method comprising: receiving (104, 304) at a web services intermediary (202), a request (106) for execution of a web service operation, in which the request (106) includes parametric information (107) comprising a type of port identifying a collection of operations, characterized by the fact that an endpoint (110) for a target service (118) that supports the operation can be identified using the door type parametric information; identify (108, 308), depending on the parametric information, the endpoint for a target service that supports the operation; create (112, 312) a target service request (118) to perform the operation of the target service (118); and issuing (116, 316) the target service request to the target service (118).
2/62/6 FIGURA 2AFIGURE 2A Petição 870170103480, de 29/12/2017, pág. 81/85Petition 870170103480, of 12/29/2017, p. 81/85 2/4 a partir do serviço alvo (118), um reconhecimento (156) da solicitação de serviço alvo; e retornar o reconhecimento para um solicitante (102) sem esperar uma mensagem de resposta.2/4 from the target service (118), an acknowledgment (156) of the target service request; and returning recognition to a requestor (102) without waiting for a response message. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de compreender: determinar se a solicitação requer uma resposta síncrona; e esperar uma resposta a partir do serviço alvo (118) se a solicitação requer uma resposta síncrona.2. Method, according to claim 1, characterized by the fact that it comprises: determining whether the request requires a synchronous response; and waiting for a response from the target service (118) if the request requires a synchronous response. 3/63/6 FIGURA 2BFIGURE 2B Petição 870170103480, de 29/12/2017, pág. 82/85Petition 870170103480, of 12/29/2017, p. 82/85 3/4 paramétrica, uma multiplicidade de endpoints de serviço alvo (118) que suporte a operação, e selecionar um endpoint a partir da multiplicidade de endpoints de acordo com as regras de seleção.Parametric 3/4, a multiplicity of target service endpoints (118) that support the operation, and select an endpoint from the multiplicity of endpoints according to the selection rules. 9. Método, de acordo com qualquer uma das reivindicações precedentes, caracterizado pelo fato de a criação de uma solicitação de serviço alvo para execução da operação no serviço alvo (118) compreender: composição da solicitação em uma estrutura de dados útil em uma interface de binding neutra (218) e chamada da interface de binding neutra (218), passando a solicitação como um parâmetro de chamada.9. Method, according to any of the preceding claims, characterized by the fact that the creation of a target service request to perform the operation on the target service (118) comprises: composition of the request in a useful data structure in an interface of neutral binding (218) and calling the neutral binding interface (218), passing the request as a call parameter. 10. Método, de acord® com qualquer uma das reivindicações precedentes, caracterizado pelo fato de a emissão da solicitação de serviço alvo para o serviço alvo (118) compreender a chamada de um ou mais métodos de membro em uma interface de binding neutra (218).10. Method, in accordance with any of the preceding claims, characterized by the fact that the issuing of the target service request to the target service (118) comprises the call of one or more member methods on a neutral binding interface (218 ). 11. Sistema para suporte de proxy agnóstico quanto ao tipo de porta para intermediários de serviços da web (202), o sistema compreendendo: meios para receber (104, 304), em um intermediário de serviços da web (202), uma solicitação (106) para execução de uma operação de serviços da web, em que a solicitação inclui informações paramétricas (107) compreendendo um tipo de porta identificando uma coleção de operações, caracterizado pelo fato de que um endpoint (110) para um serviço alvo (118) que suporta a operação pode ser identificado usando a informação paramétrica (107) de tipo de porta; meio para identificar (108, 308), na dependência da informação paramétrica de tipo de porta, o endpoint para um serviço alvo (118) que suporta a operação; meio para criar (112, 312) uma solicitação de serviço alvo para execução da11. System to support agnostic proxy regarding the type of port for web services intermediaries (202), the system comprising: means to receive (104, 304), at a web services intermediary (202), a request ( 106) to perform a web service operation, in which the request includes parametric information (107) comprising a type of port identifying a collection of operations, characterized by the fact that an endpoint (110) for a target service (118) that supports the operation can be identified using the door type parametric information (107); means for identifying (108, 308), depending on the port type parametric information, the endpoint for a target service (118) that supports the operation; means to create (112, 312) a target service request to perform the Petição 870170103480, de 29/12/2017, pág. 77/85Petition 870170103480, of 12/29/2017, p. 77/85 Μ operação no serviço alvo; e meio para emitir (116, 316) a solicitação de serviço alvo para o serviço alvo (118).Μ operation in the target service; and means for issuing (116, 316) the target service request to the target service (118). Petição 870170103480, de 29/12/2017, pág. 78/85Petition 870170103480, of 12/29/2017, p. 78/85 3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de a determinação se a solicitação requer uma resposta síncrona compreende a determinação na dependência da informação paramétrica se a solicitação requer uma resposta síncrona.3. Method, according to claim 2, characterized by the fact that determining whether the request requires a synchronous response comprises determining depending on parametric information whether the request requires a synchronous response. 4/64/6 Petição 870170103480, de 29/12/2017, pág. 83/85Petition 870170103480, of 12/29/2017, p. 83/85 4. Método, de acordo com a reivindicação 2 ou 3, caracterizado pelo fato de a solicitação não requerer uma resposta síncrona e o método ainda compreende: receber (354),4. Method, according to claim 2 or 3, characterized by the fact that the request does not require a synchronous response and the method still comprises: receiving (354), Petição 870170103480, de 29/12/2017, pág. 75/85Petition 870170103480, of 12/29/2017, p. 75/85 5/65/6 Petição 870170103480, de 29/12/2017, pág. 84/85Petition 870170103480, of 12/29/2017, p. 84/85 5. Método, de acordo com a reivindicação 2, 3 ou 4, caracterizado pelo fato de a espera por uma resposta a partir do serviço alvo (118) ainda compreender: receber sincronamente (320) no intermediário (202) uma resposta a partir do serviço alvo; criar (324) no intermediário (202), na dependência da resposta a partir do serviço alvo (118), uma resposta a partir do intermediário (202); e retornar (328) a resposta do intermediário (202) para um solicitante (102) .5. Method, according to claim 2, 3 or 4, characterized by the fact that waiting for a response from the target service (118) still comprises: receiving synchronously (320) at the intermediate (202) a response from the target service; create (324) in the intermediate (202), depending on the response from the target service (118), a response from the intermediate (202); and returning (328) the response from the intermediary (202) to a requester (102). 6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de o recebimento sincrono no intermediário (202) de uma resposta a partir do serviço alvo ainda compreender a invocação de uma função de recebimento de bloqueio em uma conexão de comunicações de dados entre o intermediário (202) e o serviço alvo (118) .6. Method, according to claim 5, characterized by the fact that the synchronous receipt at the intermediary (202) of a response from the target service still comprises the invocation of a blocking receive function in a data communications connection between the intermediary (202) and the target service (118). 7. Método, de acordo com qualquer uma das reivindicações precedentes, caracterizado pelo fato de a solicitação de serviço alvo conforme criada e emitida para o serviço alvo (118) levar conteúdos de mensagem não examinados e não modificados da solicitação recebida no intermediário (202) de serviços da web.7. Method, according to any of the preceding claims, characterized by the fact that the target service request as created and issued to the target service (118) takes unexamined and unmodified message contents from the request received at the intermediary (202) of web services. 8. Método, de acordo com qualquer uma das reivindicações precedentes, caracterizado pelo fato de a identificação (108, 308), na dependência de informação paramétrica, de um endpoint para um serviço alvo (118) que suporte a operação ainda compreender: identificar, na dependência de informação8. Method, according to any of the preceding claims, characterized by the fact that the identification (108, 308), depending on parametric information, of an endpoint for a target service (118) that supports the operation still comprises: identifying, depending on information Petição 870170103480, de 29/12/2017, pág. 76/85Petition 870170103480, of 12/29/2017, p. 76/85 6/66/6 350350 Determinar se a . solicitação requer j resposta sincronaDetermine whether a. request requires a synchronous response DeterminaçãoDetermination 152152 Criar solicitação de serviço alvoCreate target service request SolicitanteRequester Solicitação de serviço alvoTarget service request 316316 Emitir solicitação de serviço alvoIssue target service request 328328 TiYou Retornar resposta de intermediário para o solicitanteReturn intermediary response to the requester 324X 324 X Criar resposta — de Proxy Create Response - Proxy 123 γ 123 γ t t I Resposta de j ' serviço alvo / I Response from j 'target service / 320 V__T_ 320 V__T_ --fc --fc Receber resposta de serviço alvo sincronamente Receive target service response synchronously
FIGURA 5FIGURE 5 Petição 870170103480, de 29/12/2017, pág. 85/85Petition 870170103480, of 12/29/2017, p. 85/85

Family

ID=

Similar Documents

Publication Publication Date Title
US7296072B2 (en) Enhanced port type agnostic proxy support for web services intermediaries
US10489730B2 (en) Managing virtual business instances within a computer network
US7668934B2 (en) Port type agnostic proxy support for web services intermediaries
US7571208B2 (en) Creating proxies from service description metadata at runtime
US6961760B2 (en) Transforming data automatically between communications parties in a computing network
US6950872B2 (en) Methods and systems for facilitating message exchange between networked computing entities
US7191450B2 (en) Data-driven application integration adapters
US20030135628A1 (en) Provisioning aggregated services in a distributed computing environment
US7319979B2 (en) Dynamically interacting with an internet service using a client-specified communication proxy and protocol
US20040133633A1 (en) Method and apparatus for adaptive client communications
US20040230943A1 (en) System and method for managing information technology resources
US7363487B2 (en) Method and system for dynamic client authentication in support of JAAS programming model
BRPI0417511B1 (en) PROXY AGNOSTIC SUPPORT METHOD AND SYSTEM FOR WEB SERVICES INTERMEDIATE DOOR TYPE
KR100915776B1 (en) Port type agnostic proxy support for web services intermediaries
KR20040101537A (en) System and method for interfacing with existing system management products or software solutions
US20060168268A1 (en) Specific method of setting transport-specific properties from transport-agnostic clients
Hunt Sockets in Python
WO2005029807A1 (en) Personalized web service description
Polgar et al. Web Service Design Issues
Agenda What is & Why Web Services?
Frosthage Subscribing to a Publisher Subscriber System with Dynamic HTML