IBM WebSphere Application Server - ND, 6.0.0.1
Número de build: o0445.08
Fecha de build: 11/10/04
Frameworks: Spring & XFire.
Error:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xfire.typeMappingRegistry' defined in class path resource [org/codehaus/xfire/spring/xfire.xml]: Initialization of bean failed; nested exception is java.lang.VerifyError: (class: org/codehaus/xfire/aegis/type/basic/ObjectType, method: writeSchema signature: (Lorg/jdom/Element V) Incompatible argument to method
La solución es:
WAS tiene po defecto una libreria de JDOM versión 0.7, XFire usa la versión 1.0, al levantar la aplicación el contenedor utiliza las clases de 0.7 de JDOM dado que están en el classLoader del servidor sin importarle la del classLoader de la aplicación (WEB-INF\lib).
Hay que copiar dentro de las librerias del server (C:\Archivos de programa\IBM\WebSphere\AppServer1\lib) la versión 1.0 de JDOM.
Referencia:
Error creating bean with name 'xfire.typeMappingRegistry'
Blog dedicados a trucos y buenas prácticas tanto de desarrollo de Sw como de papiroflexía.
sábado, diciembre 16, 2006
miércoles, septiembre 13, 2006
jueves, junio 29, 2006
one-to-one with Hibernate
Cuando tiene una relación uno a uno en la BD, se supone que ambas tablas tiene la misma llave.
Cuando Hibernate hace el mapeo crea una relación one-to-one y como tienen la misma llave, ambas tablas deberian usar el mismo Objeto PK.
Tip: Solemos usar herramientas para generar los mapeos y las clases Java a partir de la BD que no saben identificar el escenario antes descrito (no conozco ningúna herramienta capaz), para no invertirle demasido tiempo a ésto basta con que en la clase hija (de la relación de BD) use la misma PK que la padre, y de la PK que se generó para la clase hija hacer que extienda de la clase PK del padre:
Ejemplo:
Padre en la BD:
Hija en la BD:
Si vemos tenemos la misma clase, en la hija la gerramienta me generó una llamada: 'CasaXFamPK' e identica a SubdelegacionPK
La cual modifique de la siguiente forma:
public class CasaXFamPK extends FamiliaPK {
La excepción provacada cuando caemos en el error de no usar la misma clase para relaciones one-to-one es: