Ir al contenido principal

¿Error IllegalAnnotationsException en JAXB? ¡Aquí está la solución! 🚫

¡Hola a todos! Si estás trabajando con servicios web en Spring y te has topado con el error com.sun.xml.bind.v2.runtime.IllegalAnnotationsException al desplegar en Tomcat, sé lo frustrante que puede ser. A primera vista, el mensaje de error puede no ser muy claro, especialmente cuando el método parece estar bien.

Hace poco me encontré con este mismo problema, y tras una inspección detallada, descubrí que la causa era muy simple pero difícil de notar a primera vista. La clave estaba en la declaración de las variables de la clase de la excepción.


El problema: Visibilidad de las propiedades

El error IllegalAnnotationsException con el mensaje Class has two properties of the same name ocurre cuando el motor de JAXB (Java Architecture for XML Binding) que usa CXF intenta serializar una clase y encuentra dos "propiedades" con el mismo nombre.

Esto puede suceder si declaras una variable de clase con visibilidad public y, además, tienes métodos getter y setter para esa misma variable. Por ejemplo:

// Código con error
public class MiClase {
    public String miPropiedad; // Visibilidad pública
    
    public String getMiPropiedad() {
        return miPropiedad;
    }
    
    public void setMiPropiedad(String miPropiedad) {
        this.miPropiedad = miPropiedad;
    }
}

JAXB ve la variable public miPropiedad como una propiedad y también ve los métodos getMiPropiedad() y setMiPropiedad() como una segunda propiedad (basada en la convención de get/set), lo que resulta en un conflicto.


La solución: Cambiar la visibilidad

La solución es simple: cambiar la visibilidad de la variable de clase de public a private.

// Código corregido
public class MiClase {
    private String miPropiedad; // Visibilidad privada
    
    public String getMiPropiedad() {
        return miPropiedad;
    }
    
    public void setMiPropiedad(String miPropiedad) {
        this.miPropiedad = miPropiedad;
    }
}

Al hacer esto, la variable miPropiedad ya no es accesible directamente y JAXB solo detecta la propiedad a través de los métodos getter y setter. Esto resuelve el conflicto y permite que la serialización a XML se realice sin problemas.

Espero que esta solución te ahorre tiempo y frustración en tus proyectos. A veces, la respuesta está en los pequeños detalles.

¿Qué otros errores de configuración te han sorprendido en el desarrollo de servicios web? ¡Déjanos un comentario y comparte tu experiencia!

Comentarios

Entradas Populares

Renombrar una columna en Oracle: Guía rápida y sencilla 💻

¡Hola a todos! En el mundo de las bases de datos, es común necesitar hacer ajustes en la estructura de las tablas, y una de las tareas más frecuentes es renombrar una columna. Ya sea por un error tipográfico, una mejora en la nomenclatura o un cambio en los requisitos, saber cómo hacerlo de manera eficiente es fundamental. Afortunadamente, Oracle facilita esta tarea con una sintaxis simple y directa. A continuación, te muestro cómo puedes renombrar una columna de una tabla en un solo paso. La sintaxis para renombrar una columna Para cambiar el nombre de una columna, utilizamos la sentencia ALTER TABLE . Esta es la forma más segura y recomendada de modificar la estructura de una tabla sin afectar los datos existentes. ALTER TABLE <nombre_de_la_tabla> RENAME COLUMN <nombre_antiguo_del_campo> TO <nuevo_nombre_del_campo>; COMMIT; Análisis de la sintaxis: ALTER TABLE <nombre_de_la_tabla> : Esta parte de la sentencia le indica a Oracle que vas a modificar la estructur...

¿Tu PC no puede instalar la actualización KB5034441? No te preocupes, aquí tienes la solución y la explicación

Sabemos que iniciar el 2024 con problemas técnicos no es lo ideal. Si has intentado instalar la reciente actualización KB5034441 y te has encontrado con el frustrante error 0x80070643 , no estás solo. Este problema ha afectado a muchos usuarios y puede causar una gran confusión, especialmente cuando la descarga parece ir bien, pero la instalación se detiene en 0%. En este artículo, vamos a desglosar qué es lo que está causando este error, por qué no es tan grave como parece y qué pasos puedes seguir para manejarlo. Mensaje de Error Entendiendo el error 0x80070643 en la actualización KB5034441 La actualización KB5034441 está diseñada para reforzar la seguridad de tu entorno de recuperación de Windows (Windows Recovery Environment, WinRE), especialmente para aquellos que utilizan la función de cifrado de disco BitLocker. La intención es buena, pero la implementación ha revelado un problema para ciertos sistemas. El código de error 0x80070643 se traduce como ERROR_INSTALL_FAILURE , y e...