lunes, 12 de noviembre de 2007
ServletContext null in Action method: init()
En la inicialización de un action a través de algún método (eg init()) no está disponible el ServletContext a partir de ServletActionContext.getServletContext(); (devuelve null). En cambio en los métodos a llamar por struts si se asigna.
viernes, 9 de noviembre de 2007
Struts2 action not wiring in Spring
Para cablear el action a través de Spring en el struts.xml, en el atributo class del action se debe poner el id del bean del action definido en el appctx.xml de spring.
martes, 23 de octubre de 2007
Null Pointer in getStep method (Workflow descriptor)
Los StepDescriptors tienen dos métodos referidos al Id, uno se refiere al Id del step modelo y otro al Id de la entity persistente:
currentSteps = workflow.getCurrentSteps(workflowId);
Step currentStep = currentSteps.iterator().next();
assertEquals("Unexpected current step", 1, currentStep.getStepId());
logger.debug("Current step id:" + currentStep.getStepId());
logger.debug("Step entity id:" + currentStep.getId());
logger.debug("Step name:"+ wd.getStep((int) currentStep.getStepId()).getName());
En el caso en que se accese:
logger.debug("Step name:"+ wd.getStep((int) currentStep.getId()).getName());
se estará tratando de acceder al StepDescriptor con el id(db primary key) de un objeto persistido. Puede coincidir, más si el id(PK) es chico, que exista algún descriptor con ese número, pero seguramente va a ser una info errónea.
currentSteps = workflow.getCurrentSteps(workflowId);
Step currentStep = currentSteps.iterator().next();
assertEquals("Unexpected current step", 1, currentStep.getStepId());
logger.debug("Current step id:" + currentStep.getStepId());
logger.debug("Step entity id:" + currentStep.getId());
logger.debug("Step name:"+ wd.getStep((int) currentStep.getStepId()).getName());
En el caso en que se accese:
logger.debug("Step name:"+ wd.getStep((int) currentStep.getId()).getName());
se estará tratando de acceder al StepDescriptor con el id(db primary key) de un objeto persistido. Puede coincidir, más si el id(PK) es chico, que exista algún descriptor con ese número, pero seguramente va a ser una info errónea.
viernes, 5 de octubre de 2007
Upload File Error in HttpUnit
El file es readable y lo accedo en el test via inputStream.read() pero en la llamada desde httpunit
escupe la exception:
java.io.IOException: Read error
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:194)
at com.meterware.httpunit.MimeEncodedMessageBody$MimeEncoding.addFile(MimeEncodedMessageBody.java:145)
at com.meterware.httpunit.FileSubmitFormControl.addValues(FormControl.java:944)
at com.meterware.httpunit.WebForm.recordParameters(WebForm.java:584)
escupe la exception:
java.io.IOException: Read error
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:194)
at com.meterware.httpunit.MimeEncodedMessageBody$MimeEncoding.addFile(MimeEncodedMessageBody.java:145)
at com.meterware.httpunit.FileSubmitFormControl.addValues(FormControl.java:944)
at com.meterware.httpunit.WebForm.recordParameters(WebForm.java:584)
miércoles, 3 de octubre de 2007
HttpUnit & Javascripst fail
Cuando se submitea un form a través de un javasscript HttpUnit parece que se pierde porque no se realiza el submit. Si bien es una practica no recomendada, en casos legacy puede aparecer. Caso:
function agregar(f){
f.action = "form!save.action?";
f.submit();
return true;
}
Llamada en el test:
addButton.click();
WebResponse addResponse = wc.getCurrentPage();
El JSP:
-form action="" method="post" name="documentosAdmin" .....
......
-input type="button" name="agregar" value="Agregar" class="boton2" onClick="javascript:agregarDocumento(documentosAdmin);">
Fix: para lograr que corra el test (y para mejorar un poco el código también!) se puede sacar el submit del script:
//f.submit();
y cambiar el input type por submit:
-input type="submit" ...
Entonces el script cambia el action pero el submit se hace desde el boton y el test funciona.
function agregar(f){
f.action = "form!save.action?";
f.submit();
return true;
}
Llamada en el test:
addButton.click();
WebResponse addResponse = wc.getCurrentPage();
El JSP:
-form action="" method="post" name="documentosAdmin" .....
......
-input type="button" name="agregar" value="Agregar" class="boton2" onClick="javascript:agregarDocumento(documentosAdmin);">
Fix: para lograr que corra el test (y para mejorar un poco el código también!) se puede sacar el submit del script:
//f.submit();
y cambiar el input type por submit:
-input type="submit" ...
Entonces el script cambia el action pero el submit se hace desde el boton y el test funciona.
martes, 2 de octubre de 2007
HttpUnit fail javascript
org.mozilla.javascript.EvaluatorException: The undefined value has no properties. (httpunit; line 26)
at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:76)
Problema con algun javascript, en este caso se pudo detectar con una herramienta de bugs en el firefox.
at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:76)
Problema con algun javascript, en este caso se pudo detectar con una herramienta de bugs en el firefox.
lunes, 17 de septiembre de 2007
Unable to intantiate Action!
Exception:
javax.servlet.ServletException: Unable to intantiate Action! - action - file:/C:/work/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/RegionCrud/WEB-INF/classes/struts.xml:18:18 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
Verificar cableado de los beans, no se loguea bien la instanciación cruzada entre el struts.xml y el appctx.xml. En este caso una interface genérica no se enlazaba a la implementación.
javax.servlet.ServletException: Unable to intantiate Action! - action - file:/C:/work/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/RegionCrud/WEB-INF/classes/struts.xml:18:18 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
Verificar cableado de los beans, no se loguea bien la instanciación cruzada entre el struts.xml y el appctx.xml. En este caso una interface genérica no se enlazaba a la implementación.
viernes, 14 de septiembre de 2007
Null entity, null object from form in jsp
Exception derivada de que el objeto que se esperaba del jsp viene en null:
SEVERE: Servlet.service() for servlet default threw exception
java.lang.IllegalArgumentException: attempt to create merge event with null entity
at org.hibernate.event.MergeEvent.(MergeEvent.java:37)
El problema en este caso es que el field del objeto en el action no tenía el setter, pero por lo visto no se loguea la falta del setter y la no asignación.
SEVERE: Servlet.service() for servlet default threw exception
java.lang.IllegalArgumentException: attempt to create merge event with null entity
at org.hibernate.event.MergeEvent.
El problema en este caso es que el field del objeto en el action no tenía el setter, pero por lo visto no se loguea la falta del setter y la no asignación.
Entity is not mapped Exception
Exception: org.hibernate.hql.ast.QuerySyntaxException: Country is not mapped
Posibles causas:
-La entidad no tiene las annotations, no está en el orm o no tiene un hbm mapeado.
-HibernateSupport no está enlazado al JPA EntityManager que procesa las annot.
Posibles causas:
-La entidad no tiene las annotations, no está en el orm o no tiene un hbm mapeado.
-HibernateSupport no está enlazado al JPA EntityManager que procesa las annot.
miércoles, 12 de septiembre de 2007
xwork2.ObjectFactory ... already loaded
Exception:
SEVERE: Exception starting filter struts Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory ...
bean already loaded...
Incompatibilidad de librerias, en este caso había dos jars de struts de diferentes versiones.
SEVERE: Exception starting filter struts Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory ...
bean already loaded...
Incompatibilidad de librerias, en este caso había dos jars de struts de diferentes versiones.
lunes, 3 de septiembre de 2007
org.springframework.beans.factory.BeanCreationException: Error creating bean
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name '.....Service' defined in file [D:\work....\applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.PersistenceContext.properties()[Ljavax/persistence/PersistenceProperty;
Caused by: java.lang.NoSuchMethodError: javax.persistence.PersistenceContext.properties()[Ljavax/persistence/PersistenceProperty;
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.addIfPresent(PersistenceAnnotationBeanPostProcessor.java:327)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.access$000(PersistenceAnnotationBeanPostProcessor.java:148)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor$2.doWith(PersistenceAnnotationBeanPostProcessor.java:304)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:226)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:203)
Problema de librerías, algun jar incompatible.
Solución:sacar los jars de las libs de spring o de algun lugar confiable
Caused by: java.lang.NoSuchMethodError: javax.persistence.PersistenceContext.properties()[Ljavax/persistence/PersistenceProperty;
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.addIfPresent(PersistenceAnnotationBeanPostProcessor.java:327)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.access$000(PersistenceAnnotationBeanPostProcessor.java:148)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor$2.doWith(PersistenceAnnotationBeanPostProcessor.java:304)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:226)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:203)
Problema de librerías, algun jar incompatible.
Solución:sacar los jars de las libs de spring o de algun lugar confiable
viernes, 31 de agosto de 2007
Unknowk entity for JPA
org.hibernate.MappingException: Unknown entity: com.....model.EntityClass
Problema: Al inicializar la sessionFactory a través del xml, las entidades mapeadas por JPA annotations (org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor) no están reconocidas
Problema: Al inicializar la sessionFactory a través del xml, las entidades mapeadas por JPA annotations (org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor) no están reconocidas
Invalid property (arranque Spring)
Clasico 1:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'beanName' while setting bean property 'prop'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personDao' defined in ServletContext resource
Problema de referencia de cableo, chequear que la property en el xml esté matcheada en la clase a cablear y que tenga el setter.
Clasico 2
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [com....] for property 'dao'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [com.....] for property 'dao': no matching editors or conversion strategy found
Problema de referencia, chequear el parámetro de la property en el xml (value o ref)
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'beanName' while setting bean property 'prop'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personDao' defined in ServletContext resource
Problema de referencia de cableo, chequear que la property en el xml esté matcheada en la clase a cablear y que tenga el setter.
Clasico 2
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [com....] for property 'dao'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [com.....] for property 'dao': no matching editors or conversion strategy found
Problema de referencia, chequear el parámetro de la property en el xml (value o ref)
martes, 28 de agosto de 2007
Validator Exception (XWork)
ERROR - DomHelper$StartHandler.error(347) | Attribute "type" is required and must be specified for element type "validator". at (null:5:109)
org.xml.sax.SAXParseException: Attribute "type" is required and must be specified for element type "validator".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
Problema:configuración xml de validators o jar faltante
Gambeta: sacar la validación
org.xml.sax.SAXParseException: Attribute "type" is required and must be specified for element type "validator".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
Problema:configuración xml de validators o jar faltante
Gambeta: sacar la validación
lunes, 27 de agosto de 2007
Unable to load config class org.apache.struts2.interceptor.debugging.DebuggingInterceptor
Algo asi:
WARN - InterceptorBuilder.constructInterceptorReference(60) | Unable to load config class org.apache.struts2.interceptor.debugging.DebuggingInterceptor at interceptor - jar:file:/D:/work/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/pxw/WEB-INF/lib/struts2-core-2.0.8.jar!/struts-default.xml:76:115 probably due to a missing jar, which might be fine if you never plan to use the debugging interceptor
Problema: enlace struts-spring, hay un file con properties de struts http://cwiki.apache.org/WW/strutsproperties.html
donde se explica algo.
Solución: en struts.properties se comentó la linea:
#struts.objectFactory=spring
WARN - InterceptorBuilder.constructInterceptorReference(60) | Unable to load config class org.apache.struts2.interceptor.debugging.DebuggingInterceptor at interceptor - jar:file:/D:/work/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/pxw/WEB-INF/lib/struts2-core-2.0.8.jar!/struts-default.xml:76:115 probably due to a missing jar, which might be fine if you never plan to use the debugging interceptor
Problema: enlace struts-spring, hay un file con properties de struts http://cwiki.apache.org/WW/strutsproperties.html
donde se explica algo.
Solución: en struts.properties se comentó la linea:
#struts.objectFactory=spring
Struts2+Spring2 Severe exception
SEVERE: Exception starting filter struts
Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:223)
Problema: Falta el struts2-spring-plugin.jar
Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:223)
Problema: Falta el struts2-spring-plugin.jar
jueves, 9 de agosto de 2007
findAll List wrong size
La lista de elementos retornada por findAll() tiene un elemento null al final que hace saltar las iteraciones
jueves, 2 de agosto de 2007
JPA error (xmlRootContentNode)
java.lang.NullPointerException
at org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode.handleJavaElementChangedEvent(XmlRootContentNode.java:341)
at org.eclipse.jpt.core.internal.JpaFile.handleEvent(JpaFile.java:212)
at org.eclipse.jpt.core.internal.JpaProject.handleEvent(JpaProject.java:647)
at org.eclipse.jpt.core.internal.JpaModel.handleEvent(JpaModel.java:187)
at org.eclipse.jpt.core.internal.JpaModelManager$ElementChangeProcessor.elementChanged(JpaModelManager.java:529)
at org.eclipse.jpt.core.internal.JpaModelManager$ElementChangeListener.elementChanged(JpaModelManager.java:508)
at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1552)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1542)
at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1377)
at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1353)
at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1916)
at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:368)
at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:311)
at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1018)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:150)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
at org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode.handleJavaElementChangedEvent(XmlRootContentNode.java:341)
at org.eclipse.jpt.core.internal.JpaFile.handleEvent(JpaFile.java:212)
at org.eclipse.jpt.core.internal.JpaProject.handleEvent(JpaProject.java:647)
at org.eclipse.jpt.core.internal.JpaModel.handleEvent(JpaModel.java:187)
at org.eclipse.jpt.core.internal.JpaModelManager$ElementChangeProcessor.elementChanged(JpaModelManager.java:529)
at org.eclipse.jpt.core.internal.JpaModelManager$ElementChangeListener.elementChanged(JpaModelManager.java:508)
at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1552)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1542)
at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1377)
at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1353)
at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1916)
at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:368)
at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:311)
at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1018)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:150)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
jueves, 26 de julio de 2007
Struts2+spring2
Exception al arrancar:
org.mortbay.util.MultiException[Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]]
Falta el jar struts-spring-plugin-x.x.x.jar
org.mortbay.util.MultiException[Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]]
Falta el jar struts-spring-plugin-x.x.x.jar
martes, 24 de julio de 2007
Librerias WEB
Creación de una user-library con commons-validator,loggins,.... y compañia para agilizar el tema de las librerías en eclipse. En el build-path, add Library, User Library.
jueves, 19 de julio de 2007
Starting preview server
19/07/2007 17:23:07 org.mortbay.jetty.servlet.ServletHandler handle
WARNING: EXCEPTION
javax.servlet.ServletException: org/apache/commons/el/ExpressionEvaluatorImpl
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:272)
Configure the "J2EE Preview at localhost" "Run" settings, go to the classpath section and add the missing jars (so far org.apache.commons.el and org.apache.jasper) as "User entries"
Ir al Run dialog y agregar el jar como "user entry"
WARNING: EXCEPTION
javax.servlet.ServletException: org/apache/commons/el/ExpressionEvaluatorImpl
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:272)
workaround for me is:
Configure the "J2EE Preview at localhost" "Run" settings, go to the classpath section and add the missing jars (so far org.apache.commons.el and org.apache.jasper) as "User entries"
After doing that I can run simple JSP pages on the Preview server!
Ir al Run dialog y agregar el jar como "user entry"
Suscribirse a:
Comentarios (Atom)