blob: 6f31c1936645a1785e904fe66a850feadbf92b1c [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= Web Service Especificando Dados Binários, parte 4: Modificando os Arquivos WSDL e de Esquema
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Web Service Especificando Dados Binários, parte 4: Modificando os Arquivos WSDL e de Esquema - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Web Service Especificando Dados Binários, parte 4: Modificando os Arquivos WSDL e de Esquema
Nesta lição você adicionará o arquivo WSDL e o arquivo de esquema à aplicação web. Em seguida, você modificará o arquivo de esquema para interpretar arrays de bytes como Imagens. Você também editará o código-fonte do Web service para localizar corretamente o esquema e o arquivo WSDL. No processo, você é apresentado a várias ferramentas no IDE que o ajudam com os arquivos WSDL e de Esquema.
Você pode aplicar o procedimento desta seção a qualquer Web service JAX-WS para passar qualquer tipo MIME como dados binários. Iniciando um Web service que passe dados binários, como foi criado nas Lições 2 e 3, você personaliza o WSDL e o esquema XML do serviço. No arquivo de esquema XML personalizado, você adiciona um atributo ``expectedContentTypes="_mime_type_"`` ao elemento de retorno dos dados binários. Esse atributo informa ao cliente que os dados binários deverão ser mapeados para um tipo Java (de acordo com o mapeamento de tipo MIME > Java), em vez de para um array de bytes. Neste tutorial, você mapeará os dados binários para ``java.awt.Image`` , mas poderá mapear os dados binários para qualquer um dos tipos Java fornecidos na especificação do JAXB 2.0, conforme descrito no link:http://jax-ws.dev.java.net/nonav/2.1.4/docs/mtom-swaref.html[+Guia do Usuário JAX-WS+].
É possível fazer download de uma amostra completa do Web service do link:https://netbeans.org/projects/samples/downloads/download/Samples%252FWeb%2520Services%252FWeb%2520Service%2520Passing%2520Binary%2520Data%2520--%2520EE6%252FFlowerAlbumService.zip[+Catálogo de Amostras do NetBeans+].
*Lições Deste Tutorial*
image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0"]
1. link:./flower_overview.html[+Visão Geral+]
2. link:./flower_ws.html[+Criando o Web Service+]
3. link:./flower-code-ws.html[+Codificando e Testando o Web Service+]
4. => Modificando os Arquivos de Esquema e WSDL para Passar Dados Binários
5. link:./flower_swing.html[+ Criando o Cliente Swing+]
== Modificando o Arquivo de Esquema e WSDL para Passar Dados Binários
No procedimento a seguir, você cria arquivos WSDL e de Esquema XML modificados para o Web service criado em um tutorial anterior. Os arquivos WSDL e de Esquema modificados permitem que o Web service e os clientes que o consomem façam parsing dos dados da imagem JPEG que são passados como dados binários.
*Para modificar os arquivos WSDL e de Esquema:*
1. Na janela Projetos, expanda o nó da aplicação Web FlowerService até chegar ao nó ``WEB-INF`` . Clique com o botão direito do mouse na pasta ``WEB-INF`` e selecione Nova > Pasta. (Talvez você precise selecionar Novo > Outro e, em seguida, a categoria Outro).
image::images/new-file-wiz-folder.png[]
[start=2]
. Clique em Próximo. A página Nome e Localização será aberta. Nomeie a pasta ``wsdl`` .
image::images/wsdl-folder-name-location.png[]
[start=3]
. Clique em Finalizar. A pasta ``wsdl`` é exibida na Janela Projetos.
image::images/wsdl-folder.png[]
[start=4]
. Expanda o nó Web Services e clique com o botão direito do mouse no nó FlowerService. Selecione Gerar e Copiar WSDL...
[start=5]
. A caixa de diálogo Gerar e Copiar WSDL será aberta com uma árvore de navegação. Navegue para a pasta ``wsdl`` que foi criada (FlowerAlbumService > Web > WEB-INF > wsdl) e clique em OK.
Agora, você vê ``FlowerService.wsdl`` e ``FlowerService_schema1.xsd`` no nó ``wsdl`` . Você também vê um novo nó para Códigos-Fonte Gerados (jax-ws).
image::images/generated-wsdl-and-schema.png[]
[start=6]
. Explicitamente, faça com que o servidor de aplicações utilize sua própria versão do arquivo WSDL. Caso contrário, o servidor de aplicações gerará seu próprio arquivo WSDL. Abra ``FlowerService.java`` e localize a anotação ``@WebService`` . Adicione o parâmetro ``wsdlLocation="WEB-INF/wsdl/FlowerServiceService.wsdl"`` a esta anotação, como mostrado abaixo:
[source,java]
----
@WebService(serviceName = "FlowerService"*, wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")*
----
[start=7]
. Modifique o arquivo de esquema ``FlowerService_schema1.xsd`` para que especifique o tipo de conteúdo do elemento esperado. Para identificar o elemento de retorno no arquivo de esquema, abra o arquivo de esquema e encontre os tipos complexos ``getThumbnailResponse`` e ``getFlowerResponse`` :
[source,xml]
----
<xs:complexType name="getThumbnailsResponse"><xs:sequence><xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType>
----
[source,xml]
----
<xs:complexType name="getFlowerResponse"><xs:sequence><xs:element name="return" type="xs:base64Binary" minOccurs="0"/> </xs:sequence></xs:complexType>
----
[start=8]
. Adicione os atributos a seguir aos dois elementos de retorno ( ``<xs:element name="return".../>):`` .
[source,java]
----
xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
----
Agora você deve ver o seguinte nas mesmas linhas.
[source,xml]
----
<xs:complexType name="getThumbnailsResponse"><xs:sequence><xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"
xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/></xs:sequence></xs:complexType>
----
[source,xml]
----
<xs:complexType name="getFlowerResponse"><xs:sequence><xs:element name="return" type="xs:base64Binary" minOccurs="0"
xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/> </xs:sequence></xs:complexType>
----
[start=9]
. Agora, quando reimplantar o Web service na aplicação de Teste e chamar uma das operações, você verá que uma imagem é retornada corretamente:
image::images/ws-tester-goodschema.png[]
Agora que a aplicação de Teste confirmou que as imagens estão sendo retornadas corretamente, você pode criar um cliente Swing para recuperá-las e exibi-las.
== Próxima Etapa:
link:./flower_swing.html[+Criando o Cliente Swing+]
link:/about/contact_form.html?to=3&subject=Feedback:%20Flower%20WSDL%20EE6[+Enviar Feedback neste Tutorial+]
Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos das funcionalidades de desenvolvimento Java EE do NetBeans IDE, link:../../../community/lists/top.html[+inscreva-se na lista de notícias nbj2ee@netbeans.org+].