Wsimport + ant

Boa noite pessoal,

preciso de uma ajuda de voces.

Estou tentando criar uma ant task que faça o wsimport e gere as classes do cliente para mim apartir de um wsdl. Porem quando rodo ele me retorna a seguinte erro:

[quote]
BUILD FAILED
/home/ejb1090/workspace-fj31/fj31-webservice-standalone/build.xml:16: You are running on JDK6 which comes with JAX-WS 2.0 API, but this tool requires JAX-WS 2.2 API. Use the endorsed standards override mechanism (http://java.sun.com/javase/6/docs/technotes/guides/standards/), or set xendorsed=“true” on .[/quote]

Como faço para resolver sem trocar a versão do JAVA, para não dar pau em outros lugares da aplicação?

Segue meu build.xml abaixo

[code]

<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
      <classpath path="/home/ejb1090/workspace-fj31/fj31-webservice-standalone/lib/jaxws-tools.jar"/>
  </taskdef>

<target name="compilarWSDL">
	 <wsimport           
	      wsdl="schemas/Teste.wsdl"      
	      destdir="bin"
	      sourcedestdir="src"
	      verbose="true"
	      package="br.com.caelum.client.ws"
	      >
	  </wsimport>
</target>

[/code]

Muito Obrigado

Ele está falando q vc pode usar o xendorsed=“true” no wsimport no ant

Coloca ai e vc se funciona

entao zoren…

funcionou, mas ai alem de ele ter dado erro no service, por falta de construtor na classe pai, que para resolver só exclui os construtores e mantive só o princiapl, fui testar e dei um toString em um objeto gerado por ele e ele deu o seguinte erro:

[code]Exception in thread “main” java.lang.LinkageError: JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/home/ejb1090/workspace-fj31/fj31-webservice-standalone/lib/jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.6.0/docs/guide/standards/)
at com.sun.xml.bind.v2.model.i

mpl.ModelBuilder.(ModelBuilder.java:173)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:456)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:302)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1140)
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(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:210)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:368)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:259)
at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:257)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:256)
at com.sun.xml.ws.spi.ProviderImpl.(ProviderImpl.java:90)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:36)
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:95)
at javax.xml.ws.spi.Provider.provider(Provider.java:76)
at javax.xml.ws.Service.(Service.java:57)
at br.com.caelum.client.ws.EasyDominio_Service.(EasyDominio_Service.java:42)
at br.com.caelum.cliente.programa.TestaXmlBean.main(TestaXmlBean.java:29)[/code]

que acredito que seja pelo mesmo motivo, mas ai ja não consigo resolver. =/

Bom, vc pode tentar baixar o jar do jax e coloca-lo no seu classpath

mas acredito q se vc fizer isso terá que recompilar os seus wsdl

qual a versão do seu java?

Os WSDL não são nosso, é d uma outra empresa, o java q estamos usando é o da IBM e entao baixamos o JAXB e o JAXWS, mas reparei que a versão 2.0 não possui wsimport só a 2.2. =/

Sera que existe outra solução sem eu precisar ter que atualizar os JARs e correr risco de dar pau em algum outro lugar?

Consegui, na pasta do jdk foi soh criar dentro da jre/lib a pasta endorsed e colocar o jar la dentro.

Mas ainda estou com um problema, estou tendo esse erro:

BUILD FAILED
W:\projects\amadeus\build\build.xml:57: Problem: failed to create task or type wsimport
Cause: Could not load a dependent class org/apache/tools/ant/DynamicConfigurator
This class may be in a separate JAR that is not installed.
Action: Determine what extra JAR files are needed, and place them in one of:
-C:\Documents and Settings\voliveira\Desktop\apache-ant-1.8.0RC1\lib
-C:\Documents and Settings\voliveira.ant\lib
-a directory added on the command line with the -lib argument

Do not panic, this is a common problem.
The commonest cause is a missing JAR.

This is not a bug; it is a configuration problem

essa versao do ant é a ultima que baxei do site, tentei antes com a versão que veio no eclipse e tambem deu esse erro.

Alguem sabe como eu faço para resolver?

Muito Obrigado.

Resolvi

valew gente, eu tinha colocado mais jars do q necessario na pasta endorsed