Sunday 3 December 2017

Cxf content transfer encoding binário opções


Manipulação de dados binários com o Axis2 (MTOMSwA) Introdução Apesar da flexibilidade, interoperabilidade e aceitação global do XML, há momentos em serializar dados em XML não faz sentido. Os usuários de serviços da Web podem querer transmitir anexos binários de vários tipos, como imagens, desenhos, documentos XML, etc., juntamente com uma mensagem SOAP. Esses dados são muitas vezes em um formato binário particular. Tradicionalmente, duas técnicas têm sido usadas para lidar com dados opacos em XML. Enviar dados binários por valor é obtido incorporando dados opacos (obviamente após alguma forma de codificação) como um elemento ou conteúdo de atributo do componente XML de dados. A principal vantagem desta técnica é que dá aos aplicativos a capacidade de processar e descrever dados, com base apenas no componente XML dos dados. O XML suporta dados opacos como conteúdo através do uso de codificação de texto base64 ou hexadecimal. Ambas as técnicas incham o tamanho dos dados. Para UTF-8 codificação de texto subjacente, codificação base64 aumenta o tamanho dos dados binários por um fator de 1,33 x do tamanho original, enquanto codificação hexadecimal expande dados por um fator de 2x. Os fatores acima serão duplicados se a codificação de texto UTF-16 for usada. Também é preocupante a sobrecarga nos custos de processamento (real e percebido) para esses formatos, especialmente quando a decodificação volta para binário bruto. O envio de dados binários por referência é conseguido anexando dados binários puros como entidades externas não segmentadas fora do documento XML e incorporando URIs de referência a essas entidades como elementos ou valores de atributo. Isso evita o inchaço desnecessário de dados e desperdício de poder de processamento. O principal obstáculo para o uso dessas entidades não analisadas é a sua grande dependência de DTDs, o que impede a modularidade, bem como o uso de namespaces XML. Havia várias especificações introduzidas no mundo dos serviços da Web para lidar com esse problema de anexação binária usando a técnica de referência quotby. SOAP with Attachments é um exemplo. Como o SOAP proíbe declarações de tipo de documento (DTD) em mensagens, isso leva ao problema de não representar dados como parte da mensagem infoset, criando, portanto, dois modelos de dados. Esse cenário é como enviar anexos com uma mensagem de email. Mesmo que esses anexos estejam relacionados ao conteúdo da mensagem, eles não estão dentro da mensagem. Isso faz com que as tecnologias que processam e descrevem os dados com base no componente XML dos dados com mau funcionamento. Um exemplo é o WS-Security. Onde MTOM vem em MTOM (SOAP Message Transmission Optimization Mechanism) é outra especificação que se concentra na resolução do problema QuotAttachmentsquot. MTOM tenta aproveitar as vantagens das duas técnicas acima, tentando mesclar as duas técnicas. MTOM é na verdade um método de referência quotby. O formato de fio de uma mensagem otimizada MTOM é a mesma que a mensagem SOAP com anexos, que também torna compatível com Swa endpoints. A característica mais notável do MTOM é o uso do elemento XOP: Include, que é definido na especificação XOP (XML Binary Optimized Packaging) para fazer referência aos anexos binários (entidades gerais externas não analisadas) da mensagem. Com o uso deste elemento exclusivo, o conteúdo binário anexado logicamente torna-se inline (por valor) com o documento SOAP mesmo que ele seja realmente anexado separadamente. Isso funde os dois domínios, tornando possível trabalhar apenas com um modelo de dados. Isso permite que as aplicações processem e descrevam apenas olhando para a parte XML, tornando obsoleta a dependência de DTDs. Em uma nota mais leve, MTOM tem padronizado o mecanismo de referência SwA. O seguinte é um extrato da especificação XOP. No nível conceitual, esses dados binários podem ser considerados base64-codificados no documento XML. Como esta forma conceitual pode ser necessária durante algum processamento do documento XML (por exemplo, para assinar o documento XML), é necessário ter uma correspondência um-para-um entre os conjuntos de informações XML e os pacotes XOP. Portanto, a representação conceitual de tais dados binários é como se fosse codificada em base64, usando a forma léxica canônica do tipo de dados XML Schema base64Binary (consulte XML Schema Parte 2: Datatypes Second Edition 3.2.16 base64Binary). Na direção inversa, XOP é capaz de otimizar apenas dados de Infoset codificados em base64 que estão na forma lexical canônica. Apache Axis2 suporta a codificação Base64. SOAP com anexos e MTOM (mecanismo de otimização de transmissão de mensagens SOAP). MTOM com Modelo de Programação Axis2 AXIOM é (e pode ser o primeiro) Modelo de Objeto que tem a capacidade de armazenar dados binários. Ele tem essa capacidade como OMText pode armazenar conteúdo binário bruto na forma de javax. activation. DataHandler. OMText foi escolhido para este fim com duas razões. Uma delas é que XOP (MTOM) é capaz de otimizar apenas dados de Infoset codificados em base64 que estão na forma léxica canônica do tipo de dados base64Binary Schema XML. Outro é preservar o infoset tanto no remetente como no receptor. (Para armazenar o conteúdo binário no mesmo tipo de objeto, independentemente de estar otimizado ou não). O MTOM permite codificar seletivamente porções da mensagem, o que nos permite enviar dados codificados em base64, bem como dados binários brutos conectados externamente, referenciados pelo elemento quotXOPquot (conteúdo otimizado) para ser enviado em uma mensagem SOAP. Você pode especificar se um nó OMText que contém dados binários brutos ou dados binários base64encoded está qualificado para ser otimizado no momento da construção desse nó ou posterior. Para obter uma ótima eficiência do MTOM, um usuário é aconselhado a enviar anexos binários menores usando base64encoding (não otimizado) e anexos maiores como conteúdo otimizado. Além disso, um usuário pode criar um nó de conteúdo binário otimizável usando uma seqüência codificada em base64, que contém conteúdo binário codificado, fornecido com o tipo MIME da representação binária real. Axis2 usa javax. activation. DataHandler para manipular os dados binários. Todos os nós de conteúdo binário otimizados serão serializados como String Base64 se quotMTOM não estiver ativadoquot. Você também pode criar nós de conteúdo binário, que não serão otimizados em qualquer caso. Eles serão serializados e enviados como Base64 Strings. Habilitando a otimização do MTOM no lado do cliente Em Opções, defina a propriedade quotenableMTOMquot como True quando enviar mensagens. Quando essa propriedade é definida como True, qualquer envelope SOAP, independentemente de ele conter conteúdo otimizável ou não, será serializado como uma mensagem MIME MTOM otimizado. Axis2 serializa todos os nós de conteúdo binário como seqüências codificadas Base64 independentemente se eles são qualificados para serem otimizados ou não se a propriedade quotenableMTOMquot estiver definida como False. Se o envelope contiver quaisquer itens de informação do elemento do nome xop: Include (veja XML-binário Otimizado Embalagem 3. XOP Infosets Constructs). O usuário não precisa especificar nada para que o Axis2 receba mensagens MTOM otimizadas. Axis2 irá automaticamente identificar e des-serializar em conformidade, como e quando uma mensagem MTOM chega. Habilitando a otimização do MTOM no lado do servidor O servidor do Axis 2 identifica automaticamente as mensagens otimizadas de MTOM recebidas com base no tipo de conteúdo e as desalifa adequadamente. O usuário pode habilitarMTOM no lado do servidor para mensagens de saída, Para habilitarMTOM globalmente para todos os serviços, os usuários podem definir o parâmetro quotenableMTOMquot como True no Axis2.xml. Quando estiver definido, todas as mensagens de saída serão serializadas e enviadas como mensagens MIME optimizadas MTOM. Se não estiver definido, todos os dados binários nos nós de conteúdo binário serão serializados como seqüências codificadas em Base64. Essa configuração pode ser substituída em services. xml com base em por serviço e por operação. Você deve reiniciar o servidor após a configuração desse parâmetro. Acessando Dados Binários Recebidos (Código de Amostra) Estou escrevendo um servidor web simples em python que permite que um usuário faça o upload de um arquivo usando dados multipartform. Tanto quanto eu posso dizer, os dados MIME multipart é suposto ser baseado em linha. Por exemplo, o limite tem de estar no início de uma linha. Eu não consigo descobrir como os dados binários são tratados a este respeito. Meu cliente (Firefox) não está codificando-o em 7 bits ASCII ou qualquer coisa, é apenas seus dados binários brutos seu envio. Será que dividir os dados em linhas em locais arbitrários Existe um comprimento máximo de linha especificada para dados em várias partes Ive tentou olhar através da RFC para multipartform-dados, mas não encontrou nada. Perguntou Mar 27 13 at 16:54 Depois de cavar através do RFCs, acho que finalmente consegui tudo direto na minha cabeça. As partes do corpo (isto é, o conteúdo do corpo de uma parte individual numa mensagem de várias partes) apenas precisam de ser baseadas em linhas, uma vez que o limite no final da parte começa com um CRLF. Mas caso contrário, os dados não precisam ser baseados em linha, e se o conteúdo acontece com linebreaks nele, não há distância máxima entre eles, nem eles precisam ser escapados de qualquer maneira (bem, a menos que talvez o Content-Transfer - A codificação é quoted-string). As opções de 7 bits, 8 bits e binárias para Content-Transfer-Encoding não indicam realmente que qualquer codificação foi feita nos dados (e, portanto, nenhuma codificação precisa ser desfeita), eles significam apenas para indicar o tipo de dados Você pode esperar para ver na parte do corpo. O que eu estava realmente começando em minha pergunta mal expressa era como readbuffer os dados do soquete para que eu pudesse ter certeza de que eu peguei o limite, e sem ter que ter um buffer arbitrariamente grande (por exemplo, se não aconteceu ser nenhum linebreaks em O conteúdo, e assim um readline acabou buffering a coisa toda). O que eu acabei fazendo foi buffer do soquete com um readline usando um comprimento máximo, então o buffer nunca seria mais longo do que isso, mas também iria certificar-se de terminar se um linebreak foi encontrado. Isso garantiu que quando o limite veio (após um CRLF), seria no início do buffer. Eu tive que fazer um pouco de monkeying extra ao redor para garantir que eu não inclua esse CRLF final no conteúdo real do corpo, porque de acordo com o RFC é necessário antes da fronteira e, portanto, não faz parte do conteúdo em si. Tente rever o RFC 2045. Normalmente, o conteúdo binário é convertido em BASE64 pela sua aplicação e incluído na mensagem de várias partes usando Content-Transfer-Encoding. Base64. Existem outros mecanismos para transferir dados binários, mas isso é bastante comum. Os dados binários são convertidos em octetos e fragmentados em cadeias de comprimento arbitrárias (dependendo da variante de codificação - veja o link BASE64 acima). O aplicativo receptor, em seguida, decodifica-lo para o conteúdo binário original. Eu não sou um programador python, mas eu ficaria surpreso que você realmente tinha que codificar qualquer um deste você mesmo. Eu suspeito que existem funções de biblioteca pré-construídas em python para fazer isso por você. Respondeu Mar 27 13 at 17:43 Obrigado, eu estava olhando para um RFC diferente que não foi tão informativo. Eu também encontrei RFC 2046 que especificamente define multi-part mensagens na seção 5. Nota there39s um pouco de uma sutileza nestes RFCs que através de mim off: ele diz multipart mensagens não podem ter outras codificações de 7 bits, 8 bits e binário (Ie não Base-64). No entanto, ele continua a dizer que as partes individuais dentro da multi peça pode ter lá próprias codificações de conteúdo, então você está correto que Base-64 é possível. Ndash brianmearns Mar 28 13 at 13:20 Sua resposta 2017 Stack Exchange, IncSending Anexos com aplicações SOAP SOAP muitas vezes têm de lidar com mais do que apenas mensagens simples. A carga útil para uma mensagem SOAP geralmente pode incluir um processamento de texto ou documento PDF, imagem ou outro arquivo binário. Este artigo explica como usar o Message Transmission Optimization Mechanism (MTOM) para enviar e receber essas mensagens. Baixar este guia gratuito Manual gratuito: Desenvolvimento de aplicativos Java na nuvem Os engenheiros de software estão se aproximando do desenvolvimento e do design corporativo de uma maneira inteiramente nova, graças à nuvem. Neste manual especializado, explore como seus colegas estão aproveitando a nuvem para agilizar o gerenciamento do ciclo de vida do aplicativo, economizar dinheiro e tornar a produção e a segurança mais eficientes. Ao enviar suas informações pessoais, você concorda que a TechTarget e seus parceiros podem entrar em contato com você sobre conteúdo relevante, produtos e ofertas especiais. Você também concorda que suas informações pessoais podem ser transferidas e processadas nos Estados Unidos e que você leu e concordou com os Termos de Uso e com a Política de Privacidade. Pré-requisitos Este artigo usa o WSO2 Web Services Application Server (WSAS). É recomendável que você baixar e instalar WSO2 WSAS 2.0. O artigo usa a edição de servlet instalada no Apache Tomcat. Qualquer servidor de aplicação pode ser usado com a versão servlet, basta seguir as instruções de instalação incluídas com WSO2 WSAS. Você não tem que usar um servidor de aplicativos em tudo, como WSO2 WSAS funciona muito bem em um formato autônomo. WSO2 WSAS requer Java 1.4 ou 1.5 mas não existem outros pré-requisitos para ele. Claro que os serviços web e SOAP especialmente é usado, assim familiaridade com isso vai ajudar. Quando XML não é suficiente: dados binários Existem inúmeras maneiras de enviar dados pela rede. Existem inúmeros protocolos e formatos de dados. A padronização em torno do SOAP eliminou um monte de conjecturas ao enviar dados entre sistemas. SOAP padroniza o protocolo (HTTP) eo formato de dados (XML.) Uma das principais críticas do SOAP é o uso de XML. O XML é baseado em texto. Isto não só faz para grandes mensagens, mas torna incompatível com dados binários. Por exemplo, vamos dizer que sua mensagem precisa incluir uma imagem. Isso representa um problema quando o formato da mensagem é texto. Combinando dados binários com SOAP Ok, então você precisa enviar dados binários entre aplicativos. Você gostaria de usar SOAP, mas é limitado ao texto. Então você deve simplesmente desistir de SOAP todos juntos Claro que não, existem muitas vantagens para SOAP. Você só precisa de uma maneira de combiná-lo com dados binários. Você vê páginas da web fazer isso o tempo todo não pode ser tão difícil, certo Vamos explorar algumas soluções para este problema. Uma maneira que você pode tentar é simplesmente despejar o binário em um nó de texto. Pode parecer algo como a Listagem 1. Listagem 1. XML com dados binários: Primeira tentativa Lembre-se que os caracteres também são bytes, assim como os dados binários. Um analisador XML, seja um analisador DOM, SAX ou StAX, deve usar a codificação de conjunto de caracteres do documento para interpretar todos os bytes no documento como caracteres. Assim, nossos dados binários poderiam facilmente ter caracteres que correspondem a caracteres XML reservados, como lt ou gt ou amp. Qualquer sequência de bytes tal no nó de texto acima fará com que o analisador no outro lado para quebrar. Portanto, essa abordagem não funcionará. Mas espere, talvez haja uma maneira de corrigir essa abordagem. E sobre como usar um bloco CDATA Que irá dizer o analisador para ignorar os caracteres dentro do bloco. Esta abordagem modificada pode parecer a Listagem 2. Listagem 2. XML com Binário: Usando CDATA Agora, se tivermos bytes que seriam interpretados como gt (por exemplo,) eles serão ignorados. No entanto, o analisador tem de descobrir onde termina a secção CDATA. Ele faz isso procurando a seqüência de bytes correspondente aos caracteres gt. Pode parecer improvável, mas nossos dados binários poderiam ter apenas uma seqüência de bytes no meio dela. Isso faria com que qualquer analisador pensasse que a seção de CDATA tinha terminado e os caráteres subseqüentes seriam interpretados apenas como em nossa primeira tentativa. Então isso não vai funcionar também. Precisamos de uma maneira de garantir que esses bytes não sejam interpretados. Base 64 de codificação: funciona, mas inchado Existe uma solução para esta variante do nosso problema. Uma maneira comum de fazer isso é usar a codificação Base 64. Esta técnica tem sido em torno (como um padrão) desde os anos 80. Envolve o uso de um alfabeto de 64 caracteres, consistindo dos caracteres minúsculos, a-z, os caracteres em maiúsculas, A-Z, os números 0-9 e os símbolos e. Cada byte é mapeado para esses caracteres, então não há nenhuma maneira para qualquer byte para ser mal interpretado como qualquer coisa que iria sufocar um analisador XML. Então, problema resolvido, certo Sim, mas é uma solução bastante ineficiente. Os ventos binários codificados na base 64 são, em média, 37 maiores (número de bytes) do que os dados binários não codificados não processados. Além disso, o analisador no outro lado precisa saber sobre a codificação para que ele possa decodificar a carga útil. Poder-se-ia imaginar que se a codificação Base 64 fazia parte do padrão SOAP, então haveria alguma maneira padrão de indicar esses processadores de mensagens SOAP. No entanto, este não é o caso. Pode ser uma solução, mas é ineficiente e não-padrão. Precisamos de algo mais eficiente e padronizado. SOAP com anexos: Obras mas design falho Uma solução para o problema é usar o que é conhecido como SOAP com anexos. A idéia aqui é apenas colocar os dados binários fora da mensagem SOAP completamente. A Figura 1 fornece uma visualização agradável disso. Figura 1. SOAP com anexos Isso é muito semelhante ao modo como os arquivos binários podem ser anexados aos e-mails. A mensagem SOAP contém uma referência para o arquivo binário anexado à mensagem. Isso é mais eficiente e padronizado, mas tem algumas falhas no seu design. O anexo binário não faz parte da mensagem SOAP. É semelhante em muitas maneiras de apenas passar um URI para os dados binários e deixá-lo até o processador de mensagens para recuperar os dados binários reais. Ele apresenta alguns problemas reais para coisas como WS-Security. Ainda assim, isso é o que foi usado por um tempo, até que uma solução melhor foi proposta: MTOM. MTOM: Melhor de ambos os mundos MTOM significa mecanismo de optimização de transmissão de mensagens SOAP. Ele combina a eficiência do SOAP com anexos, mas ele faz isso sem ter que quebrar os dados binários fora da mensagem SOAP. Como isso pode ser A chave é uma tecnologia chamada XML-binário Optimized Packaging ou XOP. XOP permite que os dados binários sejam incluídos como parte do Infoset XML. Na verdade, o Infoset XML torna-se um superconjunto do Infoset tradicional conhecido como o XOP Infoset. Ele permite que os dados binários sejam armazenados fora do documento XML, assim como no SOAP com anexos. Ele usa um XOP especial: incluir elemento para dizer ao processador para substituir o conteúdo com os dados binários referenciados, encapsulando assim a lógica de armazenamento discreto e recuperação dos dados binários. Essa lógica torna-se inerente ao analisador XML e permite que o analisador SOAP trate os dados binários como parte do documento XML, sem lógica de recuperação especial. Da mesma forma, permite que um servidor SOAP crie uma mensagem SOAP de maneira uniforme, sem lógica especial para quebrar os dados binários da mensagem SOAP. MTOM em WSO2 WSAS Weve falou muito sobre a necessidade de MTOM e como ele deve trabalhar em teoria. Não nos faz muito bem sem uma implementação real. Felizmente theres uma maneira fácil de obter uma implementação MTOM grande, basta usar WSO2 WSAS. WSO2 WSAS é construído em cima de tecnologias testadas e verdadeiras, incluindo Apache Axis2. Axis2 dá WSO2 WSAS sua implementação MTOM. Vamos dar uma olhada em como aproveitar o poder da implementação MTOM WSASAxis2s. Enviar uma mensagem MTOM de um serviço Web com o Axiom API O suporte MTOM no Axis2 baseia-se nas mesmas classes utilizadas no Axis2. Ele usa Axis2s Object Model (OM). Axis2 suporta a codificação Base 64 e MTOM, e torna relativamente simples alternar entre eles. Por que Bem para arquivos muito pequenos, pode realmente ser mais eficiente usar a codificação Base 64. Para conseguir essa troca perfeita entre transporte otimizado e não otimizado, o Axis2 trata os dados binários como um nó de texto XML. A única diferença é que você precisa passar um javax. activation. DataHandler para acessar os dados, como mostrado na Listagem 3. Listagem 3. Adicionando Dados Binários com a API do Axiom No exemplo na Listagem 3, um javax. activation. FileDataSource É usado para fornecer o DataHandler com acesso aos dados binários. Você pode usar qualquer classe que implemente a interface javax. activation. DataSource. Por exemplo, ao trabalhar com imagens, o org. apache. axis2.attachments. ImageDataSource pode ser usado. Ele implementa a interface DataSource e pode ser mais conveniente ao trabalhar com imagens. Então, como é que Axis2 e, portanto, WSO2 WSAS, sabem usar o MTOM para otimizar os dados binários? Isso é realmente o que o Axis2 fará por padrão. Você pode substituir manualmente isso adicionando apenas uma linha de código, como mostrado na Listagem 4. Listagem 4. Desativando o MTOM Essa única linha de código dirá ao Axis2 para não otimizar, ou seja, não usar o MTOM. Assim, o Axis2 usará a codificação Base 64 dos dados binários e será realmente um nó de texto. Caso contrário, o MTOM iniciará e um XOP será usado para otimizar o transporte dos dados binários dentro da mensagem SOAP. Habilitando MTOM no servidor É claro que para obter todo esse comportamento maravilhoso, automaticamente otimizado, você precisa habilitar o MTOM. Você pode fazer isso através de seu arquivo axis2.xml com muita facilidade, como mostrado na Listagem 5. Listagem 5. Ativando o MTOM no axis. xml Não é possível obter mais indolor que isso, direito Esta é uma configuração global e é a configuração padrão no WSO2 WSAS. Você pode realmente habilitar o MTOM em quatro níveis diferentes: global, grupo de serviços, serviço e operação. Você usa a mesma semântica para cada nível. Você pode usar o Console de Gerenciamento para gerenciar o MTOM em cada um desses níveis. Por exemplo, dê uma olhada na Figura 2. Figura 2. Gerenciando o MTOM no Nível do Grupo de Serviço Aqui nós vemos o MTOM sendo gerenciado no nível do Grupo de Serviço. Cada serviço do grupo também pode ser gerenciado individualmente, como mostrado na Figura 3. Figura 3. Gerenciando MTOM no nível de serviço É claro que cada serviço pode ter uma ou mais operações. WSAS permite que você gerencie MTOM nesse nível também, como mostrado na Figura 4. Note que em cada nível, o MTOM tem três valores possíveis: true, false e optional. Se a propriedade for definida como verdadeira, o serviço enviará uma mensagem otimizada quando for necessário, ou seja, quando os dados binários forem incluídos. Se o valor estiver definido como false, então a otimização nunca será usada ea codificação Base 64 será usada para quaisquer dados binários. Se for definido como opcional, o WSAS otimizará se e somente se a solicitação foi otimizada. O tipo de solicitação indicará à WSAS se deve usar MTOM ou não. Por que precisamos desse tipo de flexibilidade Como mencionado anteriormente, é freqüentemente vantajoso usar a codificação Base 64 em arquivos pequenos. Assim, você pode decidir que certas operações devem usar MTOM e outros não. Ou você pode torná-lo opcional em uma operação, programaticamente fazer uma verificação para o tamanho dos dados sendo enviados e, em seguida, optar por substituir o padrão MTOM se o arquivo for pequeno. Então você está enviando MTOM. Vamos dar uma olhada em como WSAS torna fácil para enviar uma mensagem MTOM de um cliente de serviço web. Criando um cliente SOAP que envia mensagens MTOM Enviar uma mensagem MTOM de um cliente é tão fácil quanto enviar uma mensagem MTOM de um serviço da Web. O Axis2 fornece várias APIs convenientes. Um exemplo é mostrado na Listagem 6. Listagem 6. Código de cliente para o envio de mensagem MTOM Como você pode ver na Listagem 6, a principal coisa a fazer é habilitar o MTOM em opções para o cliente de serviço web. Depois de fazer isso, o Axis2 otimizará automaticamente todos os dados binários enviados para o serviço da Web usando o MTOM automaticamente. Vimos como enviar mensagens MTOM a partir de um serviço web e para um serviço web, agora vamos olhar para como trabalhar com dados que foi enviado usando MTOM. Tratamento de uma mensagem MTOM em um serviço da Web Agora vamos supor que você tenha um serviço da Web que aceita dados binários como parte de uma mensagem SOAP de um cliente. Se o seu serviço Web estiver em execução no WSAS, você não precisa fazer nada de especial para ser capaz de lidar com dados binários otimizados de seus clientes. Seus clientes podem enviar mensagens SOAP que usam a codificação MTOM ou Base 64. Seu tudo sem emenda com WSAS. A Listagem 7 mostra um exemplo de recebimento de dados otimizados. Lista 7. Serviço da Web recebendo SOAP Otimizado Como vimos anteriormente, a API do Axiom trata os dados binários como um nó de texto. Isso permite uma única API para lidar com dados otimizados e não otimizados (Base 64 codificados). Você simplesmente acessar o DataHandler associado ao nó de texto (que contém os dados binários) e usar isso para obter um InputStream. Depois de ter o InputStream, você pode ler todos os bytes e processá-los no entanto você precisa. O WSAS facilita a manipulação de mensagens SOAP com cargas úteis de dados binários otimizados. Vamos dar uma olhada em como é fácil trabalhar com MTOM em clientes. Manipulação de uma mensagem MTOM em um cliente Não há nenhuma mágica para lidar com uma resposta de serviço da Web MTOM. Já vimos como configurar o pedido. Na Figura 8 você verá como lidar com uma resposta que contém dados binários otimizados com MTOM. Novamente a chave aqui é usando o Axiom API. Ele nos permite tratar os dados binários como um nó de texto e, em seguida, usar o DataHandler para obter um InputStream para os dados. Novamente, uma vez que você tenha o InputStream, você pode processar os dados no entanto você precisa. Nós vimos como MTOM fornece a combinação perfeita de padronização SOAP e eficiência para o transporte de dados binários dentro de uma mensagem de serviço web. Já vimos como WSO2 WSAS implementa a especificação MTOM usando Axis2. Fizemos um exame de como configurar os servidores de serviços da Web e os clientes para enviar e receber mensagens MTOM otimizadas. Agora temos tudo o que precisamos para adicionar dados binários aos nossos serviços web usando WSO2 WSAS. Você vai querer baixar WSO2 WSAS. Leia sobre os recursos mais recentes do WSO2 WSAS 2.0. Aprenda e interaja com a comunidade WSO2 no WSIS Wiki. Saiba como expor seus serviços como serviços da Web facilmente com o Axis2. Saiba como o Axis2 pode ativar seus designs SOA no artigo SOA do developerWorks com Axis2. Saiba tudo sobre a interoperabilidade do Eixo com outras implementações de serviços da Web nesta entrada no blog TSS Interoperability. Mergulhe na API AXIOM no artigo do developerWorks Obtenha o máximo do processamento XML com o AXIOM. Leia tudo sobre XOP e MTOM nesta entrada de blog por Mark Nottingham. Interoperabilidade é o nome do jogo quando se trata de serviço web, para aprender sobre como usar MTOM com no artigo Enviando arquivos em pedaços com MTOM Web Services e 2.0. Sobre o Autor Michael Galpin é um arquiteto no eBay em San Jose, CA. Ele está desenvolvendo software desde 1998, e possui um diploma em matemática do Instituto de Tecnologia da Califórnia.

No comments:

Post a Comment