Publicando Arquivos WSDL Utilizando um URL
É possível publicar um arquivo WSDL (Web Services Description Language) utilizando uma URL.
Antes de Iniciar
Os arquivos referidos pelo elemento <wsdl-file> no webservices.xml podem importar outros arquivos WSDL ou XSD (XML Schema Definition). Em geral, todos os arquivos WSDL e XSD são colocados inicialmente no diretório META-INF/wsdl ao utilizar o EJB (Enterprise JavaBeans) ou no diretório WEB-INF/wsdl ao utilizar Java™. Se os arquivos WSDL ou XSD não forem colocados em um desses diretórios, o arquivo referido pelo <wsdl-file> e seus arquivos importados serão copiados para o diretório wsdl para fins de publicação.
Há dois formatos diferentes de cadeias de consulta da URL. O primeiro anexa /wsdl ao serviço e retorna somente ligações HTTP e JMS. O segundo anexa /extwsdl ao serviço e retorna o arquivo WSDL estendido, incluindo ligações HTTP, JMS e EJB. Se um arquivo WSDL contiver somente ligações EJB e a consulta /wsdl for utilizada, uma mensagem de erro será exibida no navegador, indicando que não há ligações HTTP ou JMS no arquivo WSDL. A mensagem de erro sugere a utilização da consulta /extwsdl. Para publicar um arquivo WSDL utilizando uma URL é necessário que o aplicativo tenha um módulo da Web; ou fornecido pelo aplicativo ou na forma de um módulo roteador HTTP. Se um aplicativo EJB contiver um arquivo WSDL com somente ligações de serviços da Web JMS ou EJB, o comando endptEnabler poderá ser utilizado para incluir um módulo roteador HTTP no aplicativo.
Sobre Esta Tarefa
Para publicar um arquivo WSDL utilizando um URL:
Procedimento
Exemplo
<module-root>/
WEB-INF/
webservices.xml /* o elemento <wsdl-file> aponta para "WEB-INF/wsdl/fooImpl.wsdl"*/
web.xml
ibm-webservices-bnd.xml
wsdl/
fooImpl.wsdl /* importa foo.wsdl que é um wsdl de interface */
foo.wsdl /* definição de tipo para a interface */
Se o endereço SOAP para o serviço foo for http://examples.com:9080/services/foo, a maneira simples de recuperar o WSDL mais externo do serviço foo é com o seguinte formato: http://examples.com:9090/services/foo/wsdl ou http://examples.com:9090/services/foo/wsdl/. A URL é redirecionada para http://examples.com:9090/services/foo/wsdl/fooImpl.wsdl, em que fooImpl.wsdl é o nome do arquivo WSDL mais externo.
Como o arquivo fooImpl.wsdl tem a importação <import namespace="http://examples.com/foo" location="a/b/foo.wsdl>, utilize a URL http://examples.com:9090/services/foo/wsdl/a/b/foo.wsdl para obter o arquivo foo.wsdl.