Problemas com WebService

1 resposta
arthurgon

Boa tarde galera;

Estou tentando me conectar com um determinado WS a partir de uma aplicação CLIENT gerada por um WSDL através do Apache CXF.
O problema é que o erro que está retornando no console não está fazendo sentido algum para mim. Deu a entender que a aplicação reclama da URL. Não dá pra entender o que fiz de errado.
Estou utilizando o JBOSS 4.2 como servidor de aplicação e Java 6.

Esse é o erro:

Exception in thread "main" java.lang.ExceptionInInitializerError
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at javax.xml.ws.spi.FactoryFinder.newInstance(Unknown Source)
	at javax.xml.ws.spi.FactoryFinder.find(Unknown Source)
	at javax.xml.ws.spi.Provider.provider(Unknown Source)
	at javax.xml.ws.Service.<init>(Unknown Source)
	at br.com.mapfre.Mensagem.<init>(Mensagem.java:50)
	at br.com.mapfre.MensagemSoap_MensagemSoap12_Client.main(MensagemSoap_MensagemSoap12_Client.java:51)
Caused by: javax.xml.ws.WebServiceException: Error creating JAXBContext for W3CEndpointReference. 
	at com.sun.xml.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:188)
	at com.sun.xml.ws.spi.ProviderImpl.<clinit>(ProviderImpl.java:65)
	... 12 more
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Two classes have the same XML type name "address". Use @XmlType.name and @XmlType.namespace to assign different names to them.
	this problem is related to the following location:
		at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address
		at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address com.sun.xml.ws.developer.MemberSubmissionEndpointReference.addr
		at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
	this problem is related to the following location:
		at javax.xml.ws.wsaddressing.W3CEndpointReference$Address
		at private javax.xml.ws.wsaddressing.W3CEndpointReference$Address javax.xml.ws.wsaddressing.W3CEndpointReference.address
		at javax.xml.ws.wsaddressing.W3CEndpointReference
Two classes have the same XML type name "elements". Use @XmlType.name and @XmlType.namespace to assign different names to them.
	this problem is related to the following location:
		at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements
		at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointReference.referenceProperties
		at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
	this problem is related to the following location:
		at javax.xml.ws.wsaddressing.W3CEndpointReference$Elements
		at private javax.xml.ws.wsaddressing.W3CEndpointReference$Elements javax.xml.ws.wsaddressing.W3CEndpointReference.referenceParameters
		at javax.xml.ws.wsaddressing.W3CEndpointReference

	at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:102)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:472)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:302)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1136)
	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)
	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:121)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202)
	at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:619)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:566)
	at com.sun.xml.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:186)
	... 13 more

Alguem sabe como me ajudar??

Valeu!!

1 Resposta

thiagotrss

E ai mano. Firmeza ? Chato quando ninguem responde né ?

Pois é… Tive esse mesmo problema que voce.
Mas felizmente é simples resolvê-lo.
O problema é que o wsimport gera as classes do seu consumidor de uma forma um pouco errada.
Imagina meu caso com o seguinte webService:

@WebService(name="dadosCliente")
public class DadosCliente {

    @WebMethod(operationName="buscaClientePorNome")
    public String buscaClientePorContrato(@WebParam(name="nome") String nome) {
          ...
    }

    @WebMethod(operationName="buscaClientePorTelefone")
    public String buscaClientePorTelefone(@WebParam(name="ddd") String ddd,
          ...
    }

    @WebMethod(operationName="buscaClientePorCPF")
    public String buscaClientePorCPF(@WebParam(name="cpf") String cpf) {
          ...
    }
}

Quando voce levantar esse web service e construir o consumidor com o wsimport,
ele vai criar as seguintes classes DENTRE OUTRAS:

[list]BuscaClientePorNomeResponse[/list]
[list]BuscaClientePorTelefoneResponse[/list]
[list]BuscaClientePorCPFResponse[/list]

Só que todas essas classes tem o annotation @XmlType.
Por exemplo na classe BuscaClientePorCPFResponse tem o anntation dessa forma:
@XmlType(name = “buscaClientePorCPFResponse”, propOrder = { “_return” })

Ai, quando voce executar, vai reclamar porque duas classes distintas terão
esse annotation com o mesmo “name”.

Voce tem soluções pra consertar isso e a mais simples e que eu recomendo, é voce alterar
o nome das suas classes Response’s ou qualquer outra que esteja com esse problema.
Ai vai funfar direitinho! Vai bombar demaaais! Qualquer coisa é só falar! Abraço brou!

Referência: http://forums.java.net/jive/thread.jspa?messageID=255775&tstart=0

Criado 17 de setembro de 2009
Ultima resposta 20 de mar. de 2010
Respostas 1
Participantes 2