miércoles, mayo 28, 2008

Error en Netbeans con WebServices



Los Web Services son una herramienta fundamental en el desarrollo de aplicaciones SOA, pues le da a terceros la posibilidad de llamar a alguna parte de nuestro sistema.

En Netbeans es facil crear un nuevo WebService... sin embargo, a raiz de la actualizacion de un modulo... no estan funcionando bien, al menos a mi, no me generaba el archivo jaxws-build.xml ni me lo incluia en el build.xml.

Bueno lo que tuve que hacer fue escribir estos archivos a mano.... pero como la neta no se nada de ANT... ( debo de empezar a meterme a Eclipse..) pues me base en otros archivos que ya tenia... asi que su archivo debe quedar de la siguiente manera

jaxws-build.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns:xalan="http://xml.apache.org/xslt"
  3. xmlns:webproject2="http://www.netbeans.org/ns/web-project/2"
  4. xmlns:jaxws="http://www.netbeans.org/ns/jax-ws/1">
  5. <target name="wsgen-init" depends="init, -do-compile">
  6. <mkdir dir="${build.generated.dir}/wsgen/service"/>
  7. <mkdir dir="${build.generated.dir}/wsgen/service/resources/"/>
  8. <mkdir dir="${build.generated.dir}/wsgen/binaries"/>
  9. <mkdir dir="${build.classes.dir}"/>
  10. <taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen">
  11. <classpath
  12. path="${java.home}/../lib/tools.jar:${build.classes.dir}:${j2ee.platform.wsgen.classpath}:${javac.classpath}"/>
  13. </taskdef>
  14. </target>
  15. <target name="wsgen-nombreDelWebService" depends="wsgen-init">
  16. <wsgen fork="true" xendorsed="true"
  17. sourcedestdir="${build.generated.dir}/wsgen/service"
  18. resourcedestdir="${build.generated.dir}/wsgen/service/resources/"
  19. destdir="${build.generated.dir}/wsgen/binaries" keep="true" genwsdl="true"
  20. sei="com.core.web">
  21. <classpath
  22. path="${java.home}/../lib/tools.jar:${build.classes.dir}:${j2ee.platform.wsgen.classpath}:${javac.classpath}"/>
  23. <jvmarg value="-Djava.endorsed.dirs=${jaxws.endorsed.dir}"/>
  24. </wsgen>
  25. </target>
  26. <target name="wsgen-service-compile" depends="wsgen-nombreDelWebService">
  27. <webproject2:javac srcdir="${build.generated.dir}/wsgen/service"
  28. classpath="${j2ee.platform.wsimport.classpath}:${javac.classpath}"
  29. destdir="${build.classes.dir}"/>
  30. </target>
  31. </project>

Luego tenemos que poner este otro codigo en el archivo build.xml, escribo las lineas de arriba y de abajo como referencia, va casi cuando inicia el documento

  1. <project ...
  2. <import file="jaxws-build.xml"/>
  3. <import file="ant-deploy.xml"/>


Esto va en compilation section, en mi caso solo decia -post-compile y no dependia de wsgen-service-compile

  1. <target depends="wsgen-service-compile" name="-post-compile">
  2. <!-- Empty placeholder for easier customization. -->
  3. <!-- You can override this target in the ../build.xml file. -->
  4. </target>


Espero que le haya servido a alguien, por que realmente esto me atraso unos dias...

1 comentario:

Omar dijo...

Hola, sabes cual modulo es el que le dio en la madre a netbeans??? actualmente medio solucione el problema, me refiero a que ya crea los artefactos, solo que netbeans me marca error al llamar los metodos