Exemplo, Configurando as Classes do Manipulador para os Descritores de Implementação de Serviços da Web
Este cenário explica como incluir uma classe de rotina de tratamento cliente e servidor em um aplicativo de amostra, WebServicesSamples.ear. As classes de rotina de tratamento exibem mensagens quando recebem um pedido ou resposta para manipular.
O código para a classe de rotina de tratamento de cliente é ilustrada no exemplo a seguir:
package samples;
public class ClientHandler implements javax.xml.rpc.handler.Handler {
public ClientHandler() { }
public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleRequest");
return true; }
public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleResponse");
return true; }
public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleFault");
return true; }
public void init(javax.xml.rpc.handler.HandlerInfo config) { }
public void destroy() { }
public javax.xml.namespace.QName[] getHeaders() {
return null; }
}
O código para a classe de rotina de tratamento de servidor é ilustrada no exemplo a seguir:
package sample;
public class ServerHandler implements javax.xml.rpc.handler.Handler {
public ServerHandler() { }
public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleRequest");
return true; }
public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleResponse");
return true; }
public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleFault");
return true; }
public void init(javax.xml.rpc.handler.HandlerInfo config) { }
public void destroy() { }
public javax.xml.namespace.QName[] getHeaders() {
return null; }
}
- Compile estas classes utilizando:
%JAVA_HOME%\bin\java -extdirs %WAS_EXT_DIRS% ClientHandler.java ServerHandler.java
$JAVA_HOME/bin/java -extdirs $WAS_EXT_DIRS ClientHandler.java ServerHandler.java
- Abra uma ferramenta de montagem e importe as duas amostras de
arquivos EAR (Enterprise Archive):
...\installableApps\WebServicesSamples.ear
.../installableApps/WebServicesSamples.ear
...\installableApps\ApplicationClients.ear
.../installableApps/ApplicationClients.ear
- Importe as classes de Rotina de Tratamento compiladas para os projetos para os módulos de amostra:
- Importe sample.ClientHandler para o diretório appClientModule do projeto AddressBookClient.
- Importe sample.ServerHandler para o diretório ejbModule do projeto AddressBookW2JE.
- Configure o Client Deployment Descriptor para classes de rotina de tratamento.
Este tópico explica como configurar o Client Deployment Descriptor para classes de rotina de tratamento fornecidas pelo usuário.
- Configure o descritor de implementação
webservices.xml para classes de rotina de tratamento.
Este tópico explica como configurar o descritor de implementação webservices.xml para classes de rotina de tratamento fornecidas pelo usuário.
- Salve as alterações e exporte os arquivos EAR.
- Desinstale o aplicativo WebServicesSamples.ear de seu servidor se ele já estiver instalado.
- Instale o novo aplicativo WebServicesSamples.ear.
- Inicie o servidor.
- Execute o cliente:
launchClient ApplicationClients.ear -CCjar=AddressBookClient.jar
Quando o cliente é executado, a saída do console se parece com o exemplo a seguir. As mensagens das rotinas de tratamento são mostradas em negrito.
IBM WebSphere Application Server J2EE Application Client Tool Copyright IBM Corp., 1997-2003 WSCL0012I: Processando argumentos da linha de comandos. WSCL0013I: Inicializando o J2EE Application Client Environment. WSCL0035I: Inicialização do J2EE Application Client Environment foi concluída. WSCL0014I: Chamando a classe do Application Client com.ibm.websphere.samples.webservices.addr.AddressBookClient >> Consultando endereço para 'Purdue Boilermaker' utilizando a porta AddressBookW2JE ClientHandler: Em handleRequest ClientHandler: Em handleResponse >> A resposta é: 1 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Consultando endereço para 'Purdue Boilermaker' utilizando a porta AddressBookJ2WE ClientHandler: Em handleRequest ClientHandler: Em handleResponse >> A resposta é: 2 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Consultando endereço para 'Purdue Boilermaker' utilizando a porta AddressBookJ2WB ClientHandler: Em handleRequest ClientHandler: Em handleResponse >> A resposta é: 3 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Consultando endereço para 'Purdue Boilermaker' utilizando a porta AddressBookW2JB ClientHandler: Em handleRequest ClientHandler: Em handleResponse >> A resposta é: 4 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900
Para o cliente, a classe de rotina de tratamento é configurada para cada referência de serviço, e não para cada porta. A amostra AddressBook tem quatro portas, mas apenas uma referência de serviço; portanto, ClientHandler manipula os pedidos e respostas de todas as portas.
Quando o arquivo de log do servidor é examinado, ele contém os seguintes dados:
[9/24/03 16:39:22:661 CDT] 4deec1c6 WebGroup I SRVE0180I:
[HTTP router for AddressBookW2JE.jar] [/AddressBookW2JE] [Servlet.LOG]:
AddressBook: init
[9/24/03 16:39:23:161 CDT] 4deec1c6 SystemOut O ServerHandler: In handleRequest
[9/24/03 16:39:23:211 CDT] 4deec1c6 SystemOut O ServerHandler: In handleResponse
Resultados
Os descritores de implementação das classes de rotina de tratamento são configurados. Os descritores de implementação são necessários para que o WebSphere Application Server possa processar as solicitações de serviço da Web recebidas.
O Que Fazer Depois
Implemente o arquivo EAR que tenha sido configurado e ativado para os serviços da Web. Em seguida, você pode testar o aplicativo para certificar-se de que ele esteja em execução no ambiente do WebSphere Application Servert.