Wsimport + ant

6 respostas
V

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:

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 .

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

<project name="wsimport">

	<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>

</project>

Muito Obrigado

6 Respostas

Z

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

Coloca ai e vc se funciona

V

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:

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.<clinit>(ModelBuilder.java:173)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:456)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(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.<clinit>(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.<init>(Service.java:57)
	at br.com.caelum.client.ws.EasyDominio_Service.<init>(EasyDominio_Service.java:42)
	at br.com.caelum.cliente.programa.TestaXmlBean.main(TestaXmlBean.java:29)

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

Z

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?

V

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?

V

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.

V

Resolvi

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

Criado 29 de janeiro de 2010
Ultima resposta 2 de fev. de 2010
Respostas 6
Participantes 2