corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Serviço Web passando dados binários, parte 4: Modificando os arquivos do esquema e WSDL

Nesta seção, você adicionará o arquivo WSDL e o arquivo do esquema ao aplicativo da Web. Em seguida, você modificará o arquivo de esquema interpretar matrizes de bytes como Imagens. Você também editará o código-fonte do serviço da Web para localizar corretamente o esquema e o arquivo WSDL. No processo, é apresentada uma introdução a várias ferramentas no IDE que o ajudam com os arquivos WSDL e do esquema.

É possível aplicar o procedimento desta seção a qualquer serviço da Web JAX-WS para passar qualquer tipo MIME como dados binários. Iniciando um serviço da Web 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 ele deverá mapear os dados binários para o tipo Java (de acordo com o mapeamento de tipo MIME > Java) em vez de para uma matriz 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 Guia do usuário JAX-WS.

É possível baixar uma amostra completa do serviço da Web a partir do Catálogo de amostras do NetBeans.

Lições deste tutorial

O conteúdo desta página se aplica ao NetBeans IDE 6.9-7.1
  1. Visão geral
  2. Criando o serviço Web
  3. Codificando e testando o serviço da Web
  4. => Modificando os arquivos do esquema e WSDL para passar dados binários
  5. Criando o cliente Swing

Modificando os arquivos do esquema e WSDL para passar dados binários

No procedimento seguinte, você cria arquivos WSDL e do esquema XML modificados para o serviço Web criado em um tutorial anterior. Os arquivos WSDL e do esquema modificados permitem que o serviço da Web e os clientes que o consomem analisem os dados da imagem JPEG que são passados como dados binários.

Para modificar o WSDL e os arquivos do esquema:

  1. Na janela Projetos, expanda o nó do aplicativo da Web FlowerService até chegar ao nó WEB-INF. Clique com o botão direito do mouse na pasta WEB-INF e selecione Novo > Pasta. (Talvez seja preciso selecionar Novo > Outro e, em seguida, a categoria Outro).
    Nós do projeto do serviço Flor com o diretório WEB-INF
  2. Clique em Próximo. A página Nome e localização é aberta. Nomeie a pasta wsdl.
    Página Nome e localização do assistente Novo arquivo para a nova pasta, mostrando o nome wsdl e a localização em web/WEB-INF
  3. Clique em Terminar. A pasta wsdl é exibida na janela Projetos.
    Pasta wsdl na janela Projetos
  4. Expanda o nó Serviços Web e clique com o botão direito do mouse no nó FlowerService. Escolha Gerar e copiar WSDL...
  5. A caixa de diálogo Gerar e copiar WSDL é 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).

    Janela Projetos mostrando o wsdl e os arquivos de esquema copiados
  6. Explicitamente, faça com que o servidor de aplicativos utilize sua própria versão do arquivo WSDL. Caso contrário, o servidor de aplicativos 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:
    @WebService(wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")

    Aviso: É preciso usar o GlassFish Server Open Source Edition 3.1 ou versões mais recentes. O atributo wsdlLocation é ignorado pelo GlassFish 3.0.1.

  7. Modifique o arquivo de esquema FlowerService_schema1.xsd para que especifique o tipo de conteúdo do elemento retornado. Para identificar o elemento de retorno no arquivo de esquema, abra o arquivo de esquema e encontre os tipos complexos getThumbnailResponse e getFlowerResponse:
    <xs:complexType name="getThumbnailsResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="getFlowerResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>
  8. Adicione os atributos a seguir a ambos os elementos de retorno (<xs:element name="return".../>):.
    xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"

    Agora você deve ver o seguinte nas mesmas linhas.

    <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>
    <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>
  9. Agora, quando reimplantar o serviço da Web no aplicativo Testador e chamar uma das operações, você verá que uma imagem é retornada corretamente:
    Aplicativo Java com ws consumido

Agora que o aplicativo Testador confirmou que as imagens estão sendo retornadas corretamente, é possível criar um cliente Swing para recuperá-las e exibi-las.

Próxima etapa:

Criando o cliente Swing

Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos dos recursos de desenvolvimento de Java EE do NetBeans IDE, inscreva-se na lista de correio .