Utilizo un eje para autogenerar artefactos del servicio web que luego convierto en objetos usados en nuestra aplicación. ¿Hay un patrón sensato para hacer esto? Hemos escrito métodos de transformación para producir nuestros objetos desde los objetos creados por el eje, otras veces hemos escrito un conjunto intermedio de clases de transformadores que transforman los objetos del eje en nuestros objetos de aplicación. ¿Hay alguna forma común de abordar esto?Patrones: Conversión de clases de Java a partir de los objetos del eje
Respuesta
Nos hemos topado con problemas similares en el pasado. Recientemente, para un servicio web complejo para el que Axis generó artefactos, terminamos con 157 clases Java con nombres como "MaintainOffersRequestTypeReqReqDataMaintEnhancementCancellationReason".
Concluimos escribiendo clases que transforman estos objetos generados por Axis en objetos comerciales, similar a su última idea. No sé si es la mejor manera, pero sin duda es una solución viable.
Si entiendo correctamente, desea utilizar la función WSDL2Java de Axis para generar código de un WSDL y luego asignarlo a su modelo de objeto de aplicación existente. En ese caso, es posible que desee considerar el uso de Axis con el enlace JiBX.
Si utiliza Axis 1, sus clases de negocio tienen el mismo nombre calificado que la clase de datos de Axis, y se aplican algunas otras condiciones, puede usar sus clases de negocio en lugar de las de Axis sin necesidad de configuración. Lo hemos hecho muchas veces.
Para Axis 2, hemos tenido problemas con enlaces de datos distintos de ADB (el valor predeterminado), por lo que utilizamos Apache Commons Beanutils extensivamente para copiar datos de ida y vuelta entre las clases de Axis y nuestras clases de negocio.
Si el objetivo es traducir el "eje generado" a sus objetos comerciales puede probar una herramienta como dozer (http://dozer.sourceforge.net/) que es un "mapeador" para copiar de una implementación de objetos a otra implementación. No sé cómo usarlo (creo que tienes que explicar la traducción en archivos xml) y luego debería funcionar (no me usé pero algunos colegas lo usaron para un propósito similar y pareció funcionar)
Supongo que hay un sentido común manera de hacerlo. Resume un poco tu mente e imagina capas.
- Obtiene una biblioteca con el IO básico y quizás la funcionalidad de sesión básica y/o credenciales.
- Crea una capa de conversión. Aquí colocará todo el código necesario para construir sus objetos dependientes de la aplicación. Termina esta capa con una interfaz agradable para tu aplicación.
La capa de conversión se puede realizar de múltiples maneras.
Si la conversión es simple, puede combinar la primera y segunda capa casi todo en uno. Extienda el POJOS para proporcionar funcionalidad de transformación. Esto le proporcionará, al menos dos códigos, la funcionalidad y las extensiones automáticamente generadas
Si hablamos de enormes XML que deben convertirse a múltiples objetos de aplicaciones pequeñas. Ok, deje la primera capa tal como es y en el segundo uso:
- patrón Comando: para encapsular las transformaciones.
- Si la transformación también se vuelve desordenada: Cadena de responsabilidad le ayudará a generar un árbol de transformaciones.
espero que esto ayude a
- 1. Conversión de objetos XML a Java
- 2. Generar clases de Java a partir de archivos .XSD ...?
- 3. Conversión de archivo plano a objetos Java
- 4. conversión de ancho a partir del porcentaje de píxeles
- 5. Generación de clases Java a partir de XMLSchema.xsd usando JAXB
- 6. Conversión de objetos lisos para funcionar casos ("clases") en javascript
- 7. Creación de objetos BSON a partir de la cadena JSON
- 8. Lista de patrones de conversión Log4net
- 9. ¿Las clases de Java son objetos?
- 10. Patrones de control de versiones de objetos
- 11. ¿Cómo generar AST a partir del código fuente de Java?
- 12. Eliminar los valores del eje de trazado
- 13. Generar archivo XML a partir de los datos del modelo
- 14. Recurso en línea para generar clases Java a partir del archivo XML
- 15. Java GC: clases de objetos superiores promocionadas (por tamaño)?
- 16. método genérico - "conversión sin control para ajustarse a T a partir del tipo" de advertencia
- 17. Miembros de objetos JavaScript que se crean como matrices de prototipos a partir de todas las instancias de clases
- 18. Generación de archivos .proto a partir de objetos Java existentes o xsd
- 19. Calcular BPM a partir de los datos del sensor Kinect
- 20. ¿Cuál es la forma correcta de especificar dimensiones en DIP a partir del código de Java?
- 21. Inyectar conversión de tipo personalizado a clases de biblioteca .NET
- 22. Cabecera de seguridad del eje
- 23. Conversión de tipo de C a Java
- 24. ¿Cómo asignar los objetos JSON a las clases Objective C?
- 25. Conversión de NSArray a NSSet, las instancias de clases personalizadas se transfieren de manera incoherente
- 26. JAVA: GMT a conversión de hora local
- 27. Java flotante de conversión a entero
- 28. Creación de objetos con Guava a partir de los archivos de propiedades
- 29. Formateo del número de control en el eje de los gráficos R
- 30. Cómo generar clases hyperate POJO a partir de tablas DB