Hola chicos en esta oportunidad postearé, sobre un utilitario que manejo
para el manejo de WebService. Todos sabrán que ahora el manejo de los Servicios
Web esta muy de moda, sobre todo como una fuerte modalidad de INTEGRACION de
sistemas legacy con otros tipos de sistemas, en IDEs de INTEGRACION como IBM
Websphere Message Broker o el OSB de ORACLE. La cuestión es que en el mercado
existen muchos Frameworks para la generación de WebService y Proxys (Clientes
WS) tales como: AXIS, AXIS2, JAXRPC, JAXWS, uno mas antiguos que otros y otros
mejores que otros. Por motivos de trabajo he tenido la necesidad que trabajar
con todos y los conozco bien pero particularmente prefiero por motivos de mejor
generación de objetos, mantenibilidad, etc JAXWS.
Una cosa que no me gusta es que por ejemplo las IDES como ECLIPSE, JDEVELOPER, etc no tienen el soporte a todas estos Frameworks y constantemente uno tiene que bajar un plugin o sino manejar varias herramientas por ejemplo ECLIPSE soporta WS embebido con AXIS solamente y si quiero trabajar con JAXWS me tengo que apoyar en por ejemplo el WID de IBM que lo tiene embebido y si quiero AXIS2 bajarme un plugin adicional. Algo similar pasa con JDeveloper. Por otro lado, el manejo de Wizards como que nunca me gusto mucho así que para mi la modalidad compartida a continuación es la mas optima.
Lo que manejo es un proyecto de tipo MAVEN, que solo lo utilizo como Generador de Objetos y clases JAVA en base al WSDL (en FISICO o URL) respectivamente. Esto lo hago mediante Plugins de MAVEN para cada tipo diferente de FRAMEWORK.
ESCENARIO #1: "Tengo un WSDL y requiero hacer un WS o un PROXY". Que necesito GENERAR el WS o el PROXY (Independientemente de lo que necesite) en base al WSDL (esto es lo mejor osea tener ya creado el WSDL).
SOLUCION #1: Apoyarnos en una o varias IDEs dependiendo de que Framework querer usar y realizar dicha generación.
Una cosa que no me gusta es que por ejemplo las IDES como ECLIPSE, JDEVELOPER, etc no tienen el soporte a todas estos Frameworks y constantemente uno tiene que bajar un plugin o sino manejar varias herramientas por ejemplo ECLIPSE soporta WS embebido con AXIS solamente y si quiero trabajar con JAXWS me tengo que apoyar en por ejemplo el WID de IBM que lo tiene embebido y si quiero AXIS2 bajarme un plugin adicional. Algo similar pasa con JDeveloper. Por otro lado, el manejo de Wizards como que nunca me gusto mucho así que para mi la modalidad compartida a continuación es la mas optima.
Lo que manejo es un proyecto de tipo MAVEN, que solo lo utilizo como Generador de Objetos y clases JAVA en base al WSDL (en FISICO o URL) respectivamente. Esto lo hago mediante Plugins de MAVEN para cada tipo diferente de FRAMEWORK.
ESCENARIO #1: "Tengo un WSDL y requiero hacer un WS o un PROXY". Que necesito GENERAR el WS o el PROXY (Independientemente de lo que necesite) en base al WSDL (esto es lo mejor osea tener ya creado el WSDL).
SOLUCION #1: Apoyarnos en una o varias IDEs dependiendo de que Framework querer usar y realizar dicha generación.
SOLUCION #2: Bajarnos los comprimidos de cada Framework, mapearlos en
variables de entorno y ejecutar los comandos respectivos por tipo de Framework desde consola.
SOLUCION #3:
Trabajar con la solución planteada WSDL_MavenGenerator_JaxWs_Axis1_Axis2.zip. Ya que solo requiere 2
cosas: Que tengas tu MAVEN configurado y cambiar el plugin del POM.xml en base
al framework deseado, de donde de: resources/IMPORTANTE.txt y listo se genera el
paquete de clases y objetos requeridos para que los cortes y lo lleves a tu
proyecto JAVA donde trabajaras. Ya no necesitaras varias IDES ni nada en un
PROYECTO MAVEN lo tienes todo para generar con: AXIS, AXIS2 y JAXWS.
Aqui les comparto los PLUGINs manejados (Por Motivos del BLOG, he cambiado los simbolos de MAYOR / MEJOR por corchetes):
//------------------------------------------------------------------------//
//----------------------- PLUGIN: JAXWS -----------------------//
//------------------------------------------------------------------------//
[!-- GENERACION DE CLASES .JAVA (JAXWS), EN BASE AL [.WSDL] --]
[plugin]
[groupId]:[/groupId]
[artifactId]jaxws-maven-plugin[/artifactId]
[executions]
[execution]
[goals]
[goal]wsimport[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageName]pe.com.javaman.dummy.jaxws[/packageName]
[wsdlDirectory]src/main/webapp/wsdl[/wsdlDirectory]
[sourceDestDir]src/main/java[/sourceDestDir]
[!-- keep=true: MAVEN mantiene FUENTES. keep=false: MAVEN regenera FUENTES. --]
[keep]false[/keep]
[verbose]true[/verbose]
[/configuration]
[/plugin]
[!-- GENERACION DE CLASES .JAVA (MAPPING JAXWS), EN BASE A LA [URL] --]
[plugin]
[groupId]org.codehaus.mojo[/groupId]
[artifactId]jaxws-maven-plugin[/artifactId]
[executions]
[execution]
[goals]
[goal]wsimport[/goal]
[/goals]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageName]pe.com.javaman.dummy.jaxws[/packageName]
[wsdlUrls]
[wsdlUrl]http://localhost:8090/GestionDatosUsuarioWS/GestionDatosUsuarioWSService?wsdl[/wsdlUrl]
[/wsdlUrls]
[sourceDestDir]src/main/java[/sourceDestDir]
[!-- keep=true: MAVEN mantiene FUENTES. keep=false: MAVEN regenera FUENTES. --]
[keep]false[/keep]
[verbose]true[/verbose]
[/configuration]
[/execution]
[/executions]
[/plugin]
//----------------------------------------------------------------------//
//----------------------- PLUGIN: AXIS1 -----------------------//
//----------------------------------------------------------------------//
[!-- GENERACION DE CLASES .JAVA (AXIS1), EN BASE AL [.WSDL] --]
[plugin]
[groupId]org.codehaus.mojo[/groupId]
[artifactId]axistools-maven-plugin[/artifactId]
[version]1.4[/version]
[executions]
[execution]
[goals]
[goal]wsdl2java[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageSpace]pe.com.javaman.dummy.axis1[/packageSpace]
[sourceDirectory]src/main/webapp/wsdl/[/sourceDirectory]
[outputDirectory]src/main/java[/outputDirectory]
[helperGen]true[/helperGen]
[verbose]true[/verbose]
[/configuration]
[/plugin]
[!-- GENERACION DE CLASES .JAVA (AXIS1), EN BASE AL [.URL] --]
[plugin]
[groupId]org.codehaus.mojo[/groupId]
[artifactId]axistools-maven-plugin[/artifactId]
[version]1.4[/version]
[executions]
[execution]
[goals]
[goal]wsdl2java[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageSpace]pe.com.javaman.dummy.axis1[/packageSpace]
[urls]
[url]http://localhost:8090/GestionDatosUsuarioWS/GestionDatosUsuarioWSService?wsdl[/url]
[/urls]
[outputDirectory]src/main/java[/outputDirectory]
[helperGen]true[/helperGen]
[verbose]true[/verbose]
[/configuration]
[/plugin]
//-----------------------------------------------------------------------//
//----------------------- PLUGIN: AXIS2 -----------------------//
//----------------------------------------------------------------------//
[!-- GENERACION DE CLASES .JAVA (AXIS2), EN BASE AL [.WSDL] --]
[plugin]
[groupId]org.apache.axis2[/groupId]
[artifactId]axis2-wsdl2code-maven-plugin[/artifactId]
[version]1.5.4[/version]
[executions]
[execution]
[goals]
[goal]wsdl2code[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageName]pe.com.javaman.generate.axis2[/packageName]
[wsdlFile]src/main/webapp/wsdl/GestionDatosUsuarioWSService.wsdl[/wsdlFile]
[outputDirectory]src/main/[/outputDirectory]
[targetSourceFolderLocation]java[/targetSourceFolderLocation]
[databindingName]xmlbeans[/databindingName]
[unpackClasses]true[/unpackClasses]
[verbose]true[/verbose]
[options]
[uwc]true[/uwc]
[/options]
[/configuration]
[/plugin]
[!-- GENERACION DE CLASES .JAVA (AXIS2), EN BASE AL [.URL] --]
[plugin]
[groupId]org.apache.axis2[/groupId]
[artifactId]axis2-wsdl2code-maven-plugin[/artifactId]
[version]1.5.4[/version]
[executions]
[execution]
[goals]
[goal]wsdl2code[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageName]pe.com.javaman.generate.axis2[/packageName]
[wsdlFile]http://localhost:8090/GestionDatosUsuarioWS/GestionDatosUsuarioWSService?wsdl[/wsdlFile]
[outputDirectory]src/main/[/outputDirectory]
[targetSourceFolderLocation]java[/targetSourceFolderLocation]
[databindingName]xmlbeans[/databindingName]
[unpackClasses]true[/unpackClasses]
[verbose]true[/verbose]
[options]
[uwc]true[/uwc]
[/options]
[/configuration]
[/plugin]
Aqui les comparto los PLUGINs manejados (Por Motivos del BLOG, he cambiado los simbolos de MAYOR / MEJOR por corchetes):
//------------------------------------------------------------------------//
//----------------------- PLUGIN: JAXWS -----------------------//
//------------------------------------------------------------------------//
[!-- GENERACION DE CLASES .JAVA (JAXWS), EN BASE AL [.WSDL] --]
[plugin]
[groupId]:[/groupId]
[artifactId]jaxws-maven-plugin[/artifactId]
[executions]
[execution]
[goals]
[goal]wsimport[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageName]pe.com.javaman.dummy.jaxws[/packageName]
[wsdlDirectory]src/main/webapp/wsdl[/wsdlDirectory]
[sourceDestDir]src/main/java[/sourceDestDir]
[!-- keep=true: MAVEN mantiene FUENTES. keep=false: MAVEN regenera FUENTES. --]
[keep]false[/keep]
[verbose]true[/verbose]
[/configuration]
[/plugin]
[!-- GENERACION DE CLASES .JAVA (MAPPING JAXWS), EN BASE A LA [URL] --]
[plugin]
[groupId]org.codehaus.mojo[/groupId]
[artifactId]jaxws-maven-plugin[/artifactId]
[executions]
[execution]
[goals]
[goal]wsimport[/goal]
[/goals]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageName]pe.com.javaman.dummy.jaxws[/packageName]
[wsdlUrls]
[wsdlUrl]http://localhost:8090/GestionDatosUsuarioWS/GestionDatosUsuarioWSService?wsdl[/wsdlUrl]
[/wsdlUrls]
[sourceDestDir]src/main/java[/sourceDestDir]
[!-- keep=true: MAVEN mantiene FUENTES. keep=false: MAVEN regenera FUENTES. --]
[keep]false[/keep]
[verbose]true[/verbose]
[/configuration]
[/execution]
[/executions]
[/plugin]
//----------------------------------------------------------------------//
//----------------------- PLUGIN: AXIS1 -----------------------//
//----------------------------------------------------------------------//
[!-- GENERACION DE CLASES .JAVA (AXIS1), EN BASE AL [.WSDL] --]
[plugin]
[groupId]org.codehaus.mojo[/groupId]
[artifactId]axistools-maven-plugin[/artifactId]
[version]1.4[/version]
[executions]
[execution]
[goals]
[goal]wsdl2java[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageSpace]pe.com.javaman.dummy.axis1[/packageSpace]
[sourceDirectory]src/main/webapp/wsdl/[/sourceDirectory]
[outputDirectory]src/main/java[/outputDirectory]
[helperGen]true[/helperGen]
[verbose]true[/verbose]
[/configuration]
[/plugin]
[!-- GENERACION DE CLASES .JAVA (AXIS1), EN BASE AL [.URL] --]
[plugin]
[groupId]org.codehaus.mojo[/groupId]
[artifactId]axistools-maven-plugin[/artifactId]
[version]1.4[/version]
[executions]
[execution]
[goals]
[goal]wsdl2java[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageSpace]pe.com.javaman.dummy.axis1[/packageSpace]
[urls]
[url]http://localhost:8090/GestionDatosUsuarioWS/GestionDatosUsuarioWSService?wsdl[/url]
[/urls]
[outputDirectory]src/main/java[/outputDirectory]
[helperGen]true[/helperGen]
[verbose]true[/verbose]
[/configuration]
[/plugin]
//-----------------------------------------------------------------------//
//----------------------- PLUGIN: AXIS2 -----------------------//
//----------------------------------------------------------------------//
[!-- GENERACION DE CLASES .JAVA (AXIS2), EN BASE AL [.WSDL] --]
[plugin]
[groupId]org.apache.axis2[/groupId]
[artifactId]axis2-wsdl2code-maven-plugin[/artifactId]
[version]1.5.4[/version]
[executions]
[execution]
[goals]
[goal]wsdl2code[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageName]pe.com.javaman.generate.axis2[/packageName]
[wsdlFile]src/main/webapp/wsdl/GestionDatosUsuarioWSService.wsdl[/wsdlFile]
[outputDirectory]src/main/[/outputDirectory]
[targetSourceFolderLocation]java[/targetSourceFolderLocation]
[databindingName]xmlbeans[/databindingName]
[unpackClasses]true[/unpackClasses]
[verbose]true[/verbose]
[options]
[uwc]true[/uwc]
[/options]
[/configuration]
[/plugin]
[!-- GENERACION DE CLASES .JAVA (AXIS2), EN BASE AL [.URL] --]
[plugin]
[groupId]org.apache.axis2[/groupId]
[artifactId]axis2-wsdl2code-maven-plugin[/artifactId]
[version]1.5.4[/version]
[executions]
[execution]
[goals]
[goal]wsdl2code[/goal]
[/goals]
[/execution]
[/executions]
[configuration]
[!-- ASIGNACION DE [PAQUETE] DE CLASES GENERADAS --]
[packageName]pe.com.javaman.generate.axis2[/packageName]
[wsdlFile]http://localhost:8090/GestionDatosUsuarioWS/GestionDatosUsuarioWSService?wsdl[/wsdlFile]
[outputDirectory]src/main/[/outputDirectory]
[targetSourceFolderLocation]java[/targetSourceFolderLocation]
[databindingName]xmlbeans[/databindingName]
[unpackClasses]true[/unpackClasses]
[verbose]true[/verbose]
[options]
[uwc]true[/uwc]
[/options]
[/configuration]
[/plugin]
Para poder descargar el generador de WSDL pulsar: WSDL_MavenGenerator_JaxWs_Axis1_Axis2.zip
Saludos.
No hay comentarios:
Publicar un comentario