Customizando Padrões da URL no Arquivo web.xml para Aplicativos JAX-WS

O arquivo web.xml contém informações sobre a estrutura e dependências externas de componentes da Web no módulo e descreve como os componentes são usados no tempo de execução. Para os aplicativos JAX-WS (Java™ API for XML-Based Web Services), você pode customizar o padrão de URL no arquivo web.xml.

Sobre Esta Tarefa

Ao compactar um aplicativo JAX-WS baseado em JavaBeans como um serviço da Web, o serviço da Web está contido dentro de um arquivo web application archive (WAR) ou um módulo WAR dentro de um arquivo enterprise archive (EAR). Um arquivo WAR ativado por JAX-WS contém os seguintes itens:
  • Um arquivo WEB-INF/web.xml que descreve as informações de configuração e implementação para os componentes da Web que compõem um aplicativo da Web.
  • Classes anotadas que implementam os serviços da Web contidos no módulo do aplicativo incluindo a classe de implementação do terminal em serviço.
  • Classes JAXB
  • (Opcional) Documentos Web Services Description Language (WSDL) que descrevem os serviços da Web contidos no módulo do aplicativo.
  • (Opcional) Arquivo de esquema XML
  • (Opcional) Classes do utilitário
  • (Opcional) Clientes de serviço da Web

O padrão de URL é definido pelo atributo @WebService.serviceName que está contido na sua classe de implementação de serviço da Web. Quando o arquivo WSDL que está associado à classe de implementação de serviço contém uma única definição de porta, você pode optar por usar o padrão de URL ou customizar o padrão de URL no arquivo web.xml. Quando o arquivo WSDL que está associado à classe de implementação de serviço contém várias definições de porta na mesma definição de serviço, padrões de URL customizados são requeridos. Se você usar o padrão de URL quando a classe de implementação de serviço contiver várias definições de porta, várias classes de implementação de serviço serão mapeadas para o mesmo padrão de URL que resulta em uma condição de erro. Você deve editar o arquivo web.xml e customizar os padrões de URL para cada definição de serviço. Cada porta mapeia para uma classe de implementação de serviço da Web e para seu próprio padrão de URL customizado. Customizando o padrão de URL no arquivo web.xml, você corrige as definições de padrão de URL em conflito.

Se seu aplicativo JAX-WS estiver compactado em um arquivo JAR (Java Archive) do EJB (Enterprise JavaBeans) em um arquivo EAR (Enterprise Archive), você poderá customizar os padrões de URL utilizando o comando endptEnabler.

Procedimento

  1. Determine se os padrões de URL customizados são necessários ou desejados. Padrões de URL customizados apenas são necessários quando o arquivo WSDL para o seu serviço da Web JAX-WS contém diversas definições de porta dentro de um único serviço. Caso contrário, você pode definir opcionalmente os padrões de URL customizados.
  2. Para customizar o padrão de URL para uma classe de implementação de serviço, edite o arquivo web.xml e forneça um <servlet> e uma entrada <servlet-mapping> correspondente para cada classe de implementação de serviço da Web JAX-WS para a qual um padrão de URL customizado é desejado. Você deve definir o valor <url-pattern> na entrada <servlet-mapping>.

Resultados

Agora você tem um arquivo web application archive (WAR) ativado para serviços da Web com padrões de URL customizados.

Definição de Porta WSDL Exclusiva em uma Classe de Implementação de Serviço

O exemplo a seguir ilustra o padrão de URL e como customizar o padrão de URL quando o arquivo WSDL associado à classe de implementação de serviço tiver uma única definição de porta.

Esse é um extrato de uma classe de implementação de serviço da Web de amostra.

package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP11EchoServicePort")
public class EchoServiceSOAP11{

Esse é um extrato de um arquivo WSDL associado com a classe de implementação de serviço da Web EchoServiceSOAP11:

<wsdl:service name="EchoService">
	<wsdl:port name="SOAP11EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
</wsdl:service>
Como prescrito pelo JSR-109, o padrão de URL neste exemplo é construído usando o atributo @WebService.serviceName e o padrão de URL é /EchoService.

Para, opcionalmente, customizar o padrão de URL neste exemplo, edite o arquivo web.xml e forneça uma entrada url-pattern. Neste exemplo, o padrão de URL customizado é agora /EchoServiceSOAP11.

O seguinte fragmento foi retirado de um arquivo web.xml de amostra que demonstra a configuração de um servlet:

<servlet id="...">
	<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
	<servlet-class>com.ibm.test.EchoServiceSOAP11</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
	<url-pattern>/EchoServiceSOAP11</url-pattern> ---->  Definindo o padrão de URL e o apontando para a classe de implementação de serviço.
</servlet-mapping>

O exemplo a seguir ilustra as customizações do padrão de URL requerido quando o arquivo WSDL associado à classe de implementação de serviço tem várias definições de porta.

O extrato a seguir é de uma classe de implementação de serviço da Web de amostra:

package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP11EchoServicePort")
public class EchoServiceSOAP11{
	...
}
package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP12EchoServicePort")
public class EchoServiceSOAP12{
	...
}

O extrato a seguir é de um arquivo WSDL associado com a classe de implementação de serviço da Web EchoServiceSOAP11. Cada porta no arquivo WSDL mapeia para uma portName na classe de implementação de serviço da Web.

<wsdl:service name="EchoService">
	<wsdl:port name="SOAP11EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
	<wsdl:port name="SOAP12EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
</wsdl:service>

Neste cenário, porque há várias definições de porta dentro do arquivo WSDL, você deve customizar o padrão de URL editando o arquivo web.xml. Especifique padrão de URL customizados para cada serviço.

O seguinte fragmento foi retirado de um arquivo web.xml de amostra que demonstra a configuração de um servlet:

<servlet id="...">
	<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
	<servlet-class>com.ibm.test.EchoServiceSOAP11</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
	<url-pattern>/EchoServiceSOAP11</url-pattern>
</servlet-mapping>

<servlet id="...">
	<servlet-name>com.ibm.test.EchoServiceSOAP12</servlet-name>
	<servlet-class>com.ibm.test.EchoServiceSOAP12</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>com.ibm.test.EchoServiceSOAP12</servlet-name>
	<url-pattern>/EchoServiceSOAP12</url-pattern>
</servlet-mapping>

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_customwebxml
Nome do arquivo: twbs_customwebxml.html