Resolução de problemas relacionados às mensagens de erro de serviços da Web

Usando o IBM Rational Application Developer 7.5.4 e o IBM WebSphere Application Server 6.1 para localizar e corrigir problemas

Esse artigo apresenta dicas para resolver erros comuns de serviços da Web que podem ocorrer durante a configuração de aplicativos. Ele explica os métodos sugeridos para corrigir esses problemas usando o IBM Rational Application Developer Versão 7.5.4 e é o primeiro de uma série sobre recomendações para resolução de problemas.

Monaswi Rai, Technical Analyst, Leading Software MNC

author photoMonaswi Rai é um analista técnico em um dos maiores MNC de software. Tem mais de cinco anos de experiência em tecnologias de nível corporativo e mestrado em engenharia de software. Recebeu vários prêmios e reconhecimentos por sua excelente entrega de projetos e inovação. Também enviou um modelo de PowerPoint para a Microsoft que foi transferido por download mais de 2000 vezes, no mundo todo, e teve a classificação 4,0 de 5 estrelas. Suas áreas de trabalho incluem Java 2 Platform, Enterprise Edition (J2EE), serviços da Web, Arquitetura Orientada a Serviços (SOA), AJAX, spring, Hibernate e CORBA.



16/Jul/2010

Introdução

Você está pronto para desenvolver uma plataforma de serviços da Web usando o IBM® Rational® Application Developer Versão 7.5.4 e o IBM® WebSphere® Application Server Versão 6.1? Ou está recebendo mensagens de erro incomuns que não dizem muita coisa sobre a origem dos problemas? É necessário depurar e localizar a origem desses problemas? Esse artigo ajudará a encontrar uma saída para tratar desses problemas.

Você aprenderá técnicas básicas para diagnosticar vários problemas relacionados a serviços da Web usando essas ferramentas da IBM. Este artigo enfatiza os problemas no nível do ambiente do aplicativo e os problemas que podem surgir durante a configuração do serviço da Web. Entretanto, não trata dos problemas relacionados à tecnologia ou à estrutura dos serviços da Web, pois os mesmos variam de acordo com os requisitos do aplicativo.

Para melhor aproveitar este artigo, é recomendável ter um conhecimento básico em relação ao WebSphere Application Server e à configuração do Rational Application Developer; no entanto, enfatizou-se a descrição dos principais detalhes do cenário usado neste artigo (dentro das possibilidades), com possíveis ilustrações dos problemas.


Exemplos de serviços da Web

Você criará um exemplo de serviço da Web, que pode ser útil para ilustrar a depuração de erros comuns por meio do Rational Application Developer 7.5.4.

Gerará um exemplo do serviço da Web chamado DisplayUnit, que será usado para exibir as informações on demand. O serviço da Web de unidade de exibição usa três arquivos Java: Address.java, Customer.java e DisplayUnit.java. As listagens de código 1, 2 e 3, apresentadas a seguir, contêm os três arquivos Java: A Listagem 1 é referente a Customer.java, a Listagem 2, a Address.java e a Listagem 3, a DisplayUnit.java.

Listagem 1. Customer.java
package com.demo.display;
public class Customer {
	private String name;
	private Address ad;
	public Address getAddress() {
		ad = new Address();
		ad.setCity("SS1");
		ad.setHouseNo("12");
		ad.setZipCode("215462");
		return ad;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public boolean setAddress(Address ad1) {
		this.ad = ad1;
		return true;
	}
	}
Listagem 2. Address.java
package com.demo.display;

public class Address {
	private String city;
	private String zipCode;
	private String houseNo;
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getHouseNo() {
		return houseNo;
	}
	public void setHouseNo(String houseNo) {
		this.houseNo = houseNo;
	}
	public String getZipCode() {
		return zipCode;
	}
	public void setZipCode(String zipCode) {
		this.zipCode = zipCode;
	}
}
Listagem 3. DisplayUnit.java
package com.demo.display;
import com.demo.display.Customer;
public class DisplayUnit {
	private String msg;
	private int id;
        private Address ad;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public Customer getCustomerDetails() {
		Customer cust = new Customer();
		cust.setName("ABC");
		cust.setAddress(cust.getAddress());
		return cust;
	}
	public Address getAddress() {
		Customer cust = new Customer();
		System.out.println(cust.getAddress().getCity());
		return cust.getAddress();
	}
}

Outro exemplo de serviço da Web que você irá criar é referente a informações sobre os funcionários. É chamado GenerateDetails e usa os arquivos mostrados nas Listagens 4, 5 e 6.

Listagem 4. GenerateDetails.java
package com.service;

import com.employee.Address;
import com.employee.Employee;

public class GenerateDetails {
		public Employee showEmployeeDetails()
	{
	Employee emp = new Employee();
	emp.setId(1);
	emp.setName("John");
	emp.setId(2);
	emp.setName("Tom");
	Address addr = new Address();
	addr.setCountry("XXX");
	addr.setLocation("YYY");
	addr.setState("ZZZ");
	addr.setZipCode("1234");
	emp.setAddr(addr);
		return emp;
	}
}
Listagem 5. Employee.java
package com.employee;

public class Employee  {
    private int id;
    private java.lang.String name;
    private com.employee.Address addr;

    public Employee() {
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public java.lang.String getName() {
        return name;
    }
    public void setName(java.lang.String name) {
        this.name = name;
    }
    public com.employee.Address getAddr() {
        return addr;
    }
    public void setAddr(com.employee.Address addr) {
        this.addr = addr;
    }
}
Listagem 6. Address.java
package com.employee;

public class Address {
	public Address()
	{}
	private String zipCode;
	private String Location;
	private String Country;
	private String State;
	public String getCountry() {
		return Country;
	}
	public void setCountry(String country) {
		Country = country;
	}
	public String getLocation() {
		return Location;
	}
	public void setLocation(String location) {
		Location = location;
	}
	public String getState() {
		return State;
	}
	public void setState(String state) {
		State = state;
	}
	public String getZipCode() {
		return zipCode;
	}
	public void setZipCode(String zipCode) {
		this.zipCode = zipCode;
	}
}

Pressupomos que você sabe criar um exemplo de serviço da Web no Rational Application Developer. No entanto, em algumas situações, você pode receber erros estranhos. A seção a seguir trata desses problemas e continua a usar esse exemplo de serviço da Web.

Mensagem "Connection refused"

(DisplayUnit webservice)

Esse tipo de erro geralmente ocorre porque a configuração do lado do servidor está incorreta. A origem mais comum é a configuração do servidor de aplicativos com a qual os aplicativos foram implementados. Se você está recebendo um erro "Connection refused", tente testar a WSDL (Web Service Description Language) com a opção de teste de serviço da Web "Test with Web Service Explorer" que o Rational Application Developer fornece. Verifique os seguintes pontos de investigação para depurar o erro "connection refused":

Verifique se o WebSphere Application Server está registrado no perfil do servidor do Rational Application Developer ou não. Se não estiver configurado, siga as recomendações a seguir para criar um perfil do servidor no WebSphere in Rational Application Developer (referente ao exemplo atual).

  1. Selecione a opção Window > Show View > Other (veja a Figura 1) e em seguida busque e selecione a visualização Server e, nessa visualização, Servers.
Figura 1.Visualização Server no Rational Application Developer 7.5.4
Visualização Server no Rational Application Developer 7.5.4
  1. Na visualização Servers, clique em New Server (Figura 2) e configure o servidor de aplicativos fornecendo o caminho instalado desse servidor. Nesse caso, é:
    C:\Program Files\IBM\WebSphereV6.1\AppServer
Figura 2. Definindo uma nova instância do servidor no Rational Application Developer 7.5.4
Definindo uma nova instância do servidor no Rational Application Developer 7.5.4

Defina o servidor de aplicativos

Siga as etapas como são mostradas, da Figura 3 a Figura 7, para definir o servidor de aplicativos no Rational Application Developer 7.5.4:

  1. Na janela New Server (mostrada na Figura 3), clique no botão Installed Runtimes.
  2. Na janela Preferences, clique no botão Add.
  3. Dentro dessa visualização, clique em Add e selecione WebSphere Application Server v6.1.
Figura 3. Escolha a versão de runtime do servidor de aplicativos
Escolha a versão de runtime do servidor de aplicativos
  1. Na janela New Server Runtime, selecione o diretório de instalação do WebSphere Application Server e clique em Finish.
Figura 4. Selecione o diretório de instalação do WebSphere Application Server
Selecione o diretório de instalação do WebSphere Application Server
  1. Verifique se o novo servidor de aplicativos está listado em Installed Runtimes ou não.
Figura 5. Verifique o servidor instalado
Verifique o servidor instalado
  1. Clique em Next na janela New Server (Figura 2) depois de definir o novo servidor no ambiente de tempo de execução instalado. Verifique as configurações do WebSphere e clique em Finish.
Figura 6. Definição de configuração do WebSphere Application Server V6.1
Definição de configuração do WebSphere Application Server V6.1
  1. Depois de clicar no botão Finish, como mostra a Figura 6, você verá o novo servidor de aplicativos configurado na visualização Server do Rational Application Developer (Figura 7).
Figura 7. Status do servidor
Status do servidor
  1. A partir do perfil do servidor no Rational Application Developer, verifique se o aplicativo foi iniciado ou não. Clique no servidor de aplicativos listado na visualização Server do Rational Application Developer. Se o aplicativo estiver instalado e iniciado no servidor de aplicativos configurado, você verá o status started na visualização Server (veja a Figura 8, segmento 3).
    Nota: O servidor de aplicativos listado na visualização Server deve ser iniciado clicando com o botão direito no nome do servidor e selecionado a opção Start. Do contrário, não listará nenhum aplicativo dentro dessa visualização (veja a Figura 7).

No primeiro segmento da tela (1) na Figura 8, que mostra a verificação do status do WebSphere e do serviço da Web, pode-se ver que não há nenhum aplicativo iniciado no servidor de aplicativos (porque a seção status não mostra nenhum status). Esse pode ser um dos motivos da mensagem "Connection refused". Se o servidor de aplicativos registrado é a única instância do servidor de aplicativos em execução na sua máquina, tente fazer login no console administrativo do servidor de aplicativos e reiniciar o aplicativo a partir do console do servidor. Se o problema persiste ao reiniciar, é melhor reimplementar o serviço da Web, pois o servidor de aplicativos não está mostrando nenhum status parado. Em vez disso, está mostrando um status em branco; portanto, não é possível ter certeza de que o aplicativo parou corretamente e não contém nenhum problema interno (específico do aplicativo).

Figura 8. WebSphere e o status do projeto do serviço da Web implementado (3 imagens)
WebSphere e o status do projeto do serviço da Web implementado (3 imagens)

Como mostra a imagem de verificação de status do serviço da Web e do WebSphere (visualização 2 na Figura 8), se você encontra só um estado de servidor e não há nenhum estado de aplicativo debaixo dele, fica claro que não há nenhum aplicativo implementado no servidor de aplicativos. Tente implementar o aplicativo usando o Rational Application Developer: Clique com o botão direito na classe de serviço principal e depois clique em Create web service.

Para obter mais informações, consulte o IBM® Redbooks® Rational Application Developer Version 7 Programming Guide, o IBM WebSphere Version 6 Web Services Handbook for Development and Deployment ou qualquer tutorial da IBM sobre a criação de serviços da Web com o Rational Application Developer. Os links são encontrados na seção Recursos.

Mesmo se você implementou o aplicativo, mas não sabe por que as respectivas pastas não foram criadas no diretório do WebSphere Application Server, a configuração mostrada na Figura 9 ajudará a implementar o aplicativo na localidade do servidor. Selecione a opção mencionada na imagem: Configuração do WebSphere Application Server

Figura 9. Definições de configuração do WebSphere Application Server
Definições de configuração do WebSphere Application Server

Se a opção realçada (destacada pela caixa retangular) não está habilitada, essa é uma das razões principais pelas quais o serviço da Web empacotado como um EAR (archive corporativo) não é copiado na localidade do servidor.

Para acelerar a depuração e o teste, se você tem um servidor de teste instalado no IDE do Rational Application Developer, pode evitar a maioria dos atrasos na configuração do servidor. É possível escolher esse recurso durante a instalação ou usar o Rational Installation Manager se você quiser instalá-lo mais tarde. O fato de ter um servidor de teste instalado tem como resultado a criação automática do servidor com o perfil padrão associado em uma nova área de trabalho.

Unable to locate a valid EngineConfigurationFactory

(GenerateDetails web service)

Às vezes, é possível que você receba o seguinte erro ao chamar a classe de serviço da Web (a descrição do erro seria semelhante a um dos erros a seguir):

E WSWS1002E: An error occurred while processing the
Web services deployment descriptor for module:
WebServiceProject.war with error:
java.lang.ClassNotFoundException:
com.details.employee.Employee
E com.ibm.ws.webservices.engine.configuration.
EngineConfigurationFactoryFinder$1 run
WSWS3345E: Error: Unable to locate
a valid EngineConfigurationFactory.

Sua investigação básica também deve incluir os seguintes pontos:

  • Os erros que descrevem ClassNotFoundException:
    A verificação dos arquivos de classe que estão presentes na localidade do servidor. Verifique se você tem todas as classes necessárias nas pastas de classe ou não. Por exemplo: a Figura 10 mostra que, no projeto de serviço da Web na visualização do Navigator, a classe Employee não está presente na localidade do projeto de serviço da Web que é criada quando você cria um serviço da Web. Esse tipo de erro não aparece. No entanto, se você encontrar um erro desse tipo, primeiro verifique a localidade de classe de forma cruzada.
Figura 10. Projeto de serviço da Web na visualização Navigator
Projeto de serviço da Web na visualização Navigator
  • Se você encontrar o erro EngineConfigurationFactory, que não indica onde está o problema:

    A primeira e principal etapa é validar manualmente as localidades de todos os arquivos de classe. Se nem todos os arquivos de classe estão presentes, é necessário reconfigurar o aplicativo para que o servidor de aplicativos pegue todas as classes necessárias durante a criação do serviço da Web. Geralmente isso acontece quando alguns dos arquivos XML relacionados à configuração de tempo de execução não foram escritos corretamente durante a geração do serviço da Web. Você também pode fazer uma verificação cruzada abrindo esses arquivos XML; no entanto, eles são alterados com um novo conteúdo sempre que você reimplementa o serviço da Web. Se você reimplementa todo o aplicativo de serviço da Web, é uma boa prática certificar-se de que todos os arquivos gerados no tempo de execução (que são específicos dos servidores de aplicativos) sejam criados.

    Por exemplo: no exemplo de serviço da Web, estamos usando JAX-RPC. Se você tenta adicionar as novas operações na classe de implementação e tenta reimplementá-la, às vezes (mesmo que os arquivos WSDL sejam gerados) ela não gera os arquivos adequados de serialização e desserialização. As chances de obter esse tipo de exceção aumentam se você fica alterando os arquivos individuais sem revalidar ou publicar novamente os arquivos WSDL do serviço da Web. Por exemplo: no caso de JAX-RPC, tente localizar o arquivo webservices.xml e os arquivos WSDD correspondentes. Tente reimplementar o serviço da Web. Por exemplo: no caso de serviços da Web JAX-RPC, clique com o botão direito em Java EE e depois clique em Prepare for Deployment para gerar os serializadores e desserializadores Java.

Hi there, this is a Web service!

(GenerateDetails web service)

Se você vê as mensagens padrão de serviços da Web ao usar a URL do serviço da Web para confirmar que o serviço da Web está funcionando, mas não consegue chamar os métodos, é necessário investigar o problema. Esse também é um dos cenários nos quais, se você efetua ping na URL do serviço da Web, você obtém a mensagem que diz "Hi there, this is a Web service!" mas não consegue nenhum resultado referente aos métodos expostos do serviço da Web. Geralmente, esse tipo de mensagem significa que o serviço da Web está funcionando bem. Entretanto, é possível encontrar uma situação em que o serviço da Web está ativo mas não conseguiu processar a solicitação. Normalmente, esse tipo de problema ocorre devido a uma diferença entre os arquivos de configuração e as classes do serviço da Web.

Pode-se ver na verificação do status do serviço da Web implementado (a Figura 11 mostra "Status: Started") e na verificação de solicitação do status do serviço da Web que o aplicativo está executando; além disso, se você está efetuando ping na URL do serviço da Web, pode ver que ele está mostrando a mensagem que diz: "Hi there, this is a Web service!"

Figura 11. Status do projeto de serviço da Web implementado
Status do projeto de serviço da Web implementado
Figura 12. Status do serviço da Web implementado no modo em execução
Status do serviço da Web implementado no modo em execução

É possível investigar o problema usando alguns dos métodos expostos do serviço da Web para verificar se é possível receber a resposta ou não. Além disso, tente verificar, por meio dos registros, o que está sendo postado no diretório dos logs do servidor de aplicativos quando você estiver usando o serviço da Web.

Essa descrição do erro da classe Employee encontra-se no SystemOut.log:

WSWS3034E: Error: The OperationDesc for getName was not matched
to a method of com.details.employee.Employee.
Debug:name: services/Employee
implClass: class com.details.employee.Employee

Como apareceu no registro, a assinatura do método getName não corresponde ao XML de mapeamento gerado pela WSDL ou pelo servidor de aplicativos.

java.io.IOException: WSWS3352E: Error: Couldn't find a matching Java operation for WSDD operation

(GenerateDetails web service)

Geralmente, esse erro ocorre quando a definição de serviço não é encontrada na classe de implementação do serviço da Web, mas suas referências são mantidas nos arquivos de configuração do serviço da Web (por exemplo: nos arquivos WSDL ou no arquivo de mapeamento XML gerado no tempo de execução). Normalmente, essa situação ocorre quando você esquece-se de remover a referência dos respectivos arquivos (a chance de isso acontecer aumenta se você está fazendo uma atualização manual). O uso do Rational Application Developer para gerar novamente o serviço da Web pode resolver a maioria dos problemas desse tipo, que geralmente surgem devido à diferença entre a configuração e as classes de serviço.

SRVE0255E: A WebGroup/Virtual Host to handle localhost: 9080 has not been defined

(GenerateDetails web service)

Como mostra a Figura 13, esse tipo de erro geralmente ocorre quando o serviço da Web não foi implementado adequadamente no servidor de aplicativos, parou de funcionar no host ou não está executando no servidor de aplicativos. Reiniciar o serviço da Web deve resolver isso. No entanto, se o problema ocorrer mesmo depois de reiniciar, verifique se o serviço da Web está implementado corretamente no servidor de aplicativos (se não estiver, reimplemente-o) e se o host local 9080 ou a porta especificada está aberta para aceitar a solicitação ou não.

Figura 13. Erro de host virtual durante a chamada do serviço da Web
Erro de host virtual durante a chamada do serviço da Web

Os pontos de investigação devem incluir a estrutura do diretório implementado no servidor de aplicativos. Verifique se a WSDL e os arquivos de mapeamento XML gerados contêm todas as operações do serviço da Web ou não.

Verifique a definição das portas indo ao console administrativo do servidor de aplicativos. Também verifique se os descritores de implementação de Java™ Enterprise Edition (JEE) contêm as informações do aplicativo ou não.

Dica:
Talvez seja necessário verificar os descritores de implementação de Java EE referentes ao projeto de serviços da Web.

Publish failed with errors, warnings or both. Please see server logs for more details.

(GenerateDetails web service)

Ao publicar o serviço da Web, se você encontra o erro "Error while publishing the WSDL", como mostra a Figura 14, o software não permite que você continue a publicação. Verifique os detalhes do erro. Nesse caso, a mensagem de erro menciona que não consegue resolver o nome. Normalmente, interpretamos esse erro de forma equivocada, examinando a origem do diretório onde foi criado. No entanto, é necessário verificar o arquivo Java™ a partir do qual o serviço da Web está tentando resolver o nome para publicar. Neste exemplo, ele está tentando localizar o arquivo "Employee.java" do projeto de serviço da Web que está faltando no projeto de serviço da Web do Rational Application Developer. Colocar o arquivo no diretório do projeto e publicá-lo novamente deve resolver esse erro.

Os erros de publicação de serviços da Web também podem ocorrer devido a descritores de implementação incorretos. A possibilidade de isso acontecer é alta se o processo é realizado manualmente ou durante uma configuração incompatível no tempo de execução.

Figura 14. Erro ao publicar a WSDL
Erro ao publicar a WSDL

com.ibm.ws.Web services.engine.deployment.wsdd.WSDDNonFatalException:

(GenerateDetails web service)

Esse tipo de problema normalmente ocorre ao criar um serviço da Web pela primeira vez ou depois de fazer alterações nas classes do serviço da Web que não refletiram adequadamente os arquivos do servidor de aplicativos. Se você encontrá-lo enquanto usa o serviço da Web, verifique se o arquivo que esse erro menciona está presente no caminho do aplicativo implementado no servidor de aplicativos ou não. Se não estiver, é necessário reimplementar o serviço da Web no servidor de aplicativos. Pode-se ver claramente na imagem de tela intitulada "Web service-generated classes" (Figura 15) que esses arquivos não estão listados na localidade do servidor, como o erro está relatando (erros conforme são mostrados no SystemOut.log do WebSphere Application Server):

WSWS1002E: An error occurred while processing the
Web services deployment descriptor for module:
WebServiceProject.war with error:
com.ibm.ws.webservices.engine.
deployment.wsdd.WSDDNonFatalException:
java.lang.ClassNotFoundException:
com.employee.Address
Figura 15. Classes geradas pelo serviço da Web
Classes geradas pelo serviço da Web

Null serializer factory specified in the TypeMappingImpl.register method

(GenerateDetails web service)

Esse problema geralmente ocorre quando há um problema na geração de serviço da Web para um tipo de dados complexo de objeto que, por sua vez, usa outro objeto. A descrição do erro seria semelhante a essa saída (erros conforme são mostrados no SystemOut.log do WebSphere Application Server):

WSWS1002E: An error occurred while processing the
Web services deployment descriptor for module:
WebServiceProject.war with error:
com.ibm.ws.webservices.engine.deployment.
wsdd.WSDDException: javax.xml.rpc.JAXRPCException:
WSWS3218E: Error: Null serializer factory specified in
the TypeMappingImpl.register method.
javax.xml.rpc.JAXRPCException: WSWS3218E: Error:
Null serializer factory specified in the
TypeMappingImpl.register method.

Sua investigação básica também deve incluir as seguintes etapas:

  1. Certifique-se de que não há arquivos de serialização e desserialização vazios que foram criados durante a implantação do serviço da Web.
  2. Se houver arquivos de serialização e desserialização, certifique-se de que os atributos de classe estejam presentes nesses arquivos.
  3. Verifique, a partir do arquivo WSDL, se o objeto complexo contém ou não a referência do objeto que está usando para o serviço da Web. Às vezes, durante a geração do serviço da Web, mesmo que você tenha definido o objeto complexo do ponto de vista do Java, ele não é refletido adequadamente na WSDL.

Se você não vê os detalhes do objeto complexo no Web Services Explorer

(DisplayUnit web service)

Em alguns casos, mesmo que você tenha definido claramente a estrutura do objeto complexo, não é possível obter as informações ao testar por meio do cliente de serviço da Web.

Considere o exemplo a seguir, pois se pode ver claramente na imagem de tela do Web Service Explorer na Figura 16 que estamos tentando chamar o método de serviço da Web getCustomerDetails, que contém os detalhes de endereço. Entretanto, quando invocamos esse método, descobrimos que as informações de endereço não estão aparecendo no cliente de teste como devem aparecer se o objeto complexo estiver definido claramente. Portanto, é necessário investigar mais o problema.

Figura 16. Janela do Web Service Explorer
Janela do Web Service Explorer

O Rational Application Developer fornece a visualização de mapeamento de WSDL, que você encontra ao clicar duas vezes no arquivo WSDL, como se pode ver no modo de estrutura da visualização de WSDL (Figura 17).

Figura 17. WSDL no modo de estrutura
WSDL no modo de estrutura

Essa ilustração dá as informações completas sobre todas as operações expostas do serviço da Web. Para verificar se um WSDL gerado tem (ou não tem) o atributo de objeto complexo Address, siga estas etapas:

  1. Clique em getCustomerDetails para ver os detalhes. Já que esse método contém a classe Address conforme a definição no arquivo Java, idealmente o WSDL gerado deve conter isso.
  2. Clique na seta à direita do método. Pode-se ver claramente na tela "WSDL complex object attribute" (Figura 18) que o WSDL gerado não contém o objeto Address definido na classe Customer. Essa é a origem do problema. Portanto, é necessário definir a classe Address no WSDL gerado e, mais uma vez, deve-se publicar novamente o serviço da Web para que ele possa criar os arquivos de serialização e desserialização para esse objeto.
Figura 18. Atributo do objeto complexo de WSDL
Atributo do objeto complexo de WSDL

Resumo

Neste artigo, você aprendeu várias técnicas básicas de resolução de problemas que pode usar com as mensagens de erro do Rational Application Developer Versão 7.5.4 em um serviço da Web. Este artigo pode ajudar a reconhecer rapidamente a natureza do problema e a depurar os problemas estranhos que normalmente não aparecem na primeira vez.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Rational
ArticleID=500922
ArticleTitle=Resolução de problemas relacionados às mensagens de erro de serviços da Web
publish-date=07162010