lunes, 30 de abril de 2007

Acceder a componentes de Seam desde JSP JSF

Component o = (Component) Contexts.getApplicationContext().get("convProfesores.component");
Profesores profesores = (Profesores) o.getInstance("convProfesores");

y para enviar variables aprovechando el conexto de seam (aunque se podría hacer a través del request):

Contexts.getApplicationContext().set("nombreDeVariable", objeto a enviar);

EntidadConRecursos entidadConRecursos = (EntidadConRecursos) Contexts.getApplicationContext().get(nombreDeVariable);

sábado, 28 de abril de 2007

Convert Date to Calendar

Calendar calendar = Calendar.getInstance();
calendar.setTime(i.getFechaInicio());

@RequestParameter en Seam

@RequestParameter
String idCurso;

viernes, 27 de abril de 2007

NonUniqueObjectException - Illegal attempt to associate a collection with two open sessions

El problema estaba relacionado con los tipos de contexto de Seam e hibernate
Estaba cargando en session unas listas de datos y en contexto (Render phase) de evento hibernate daba error

invertir java.util.List

List invertir=new ArrayList();
for(int index=lista.size()-1; index>=0; index--)
invertir.add(parents.get(index));
return invertir;

jueves, 26 de abril de 2007

obtener el valor del request en jstl/jsf

#{param.nombreDeVariable}

info obtenida en
http://www.exampledepot.com/egs/javax.servlet.jsp.jstl.core/getparam.html?l=rel

JSF ADF RENDER DISPLAY PROBLEM

Si se utiliza más de un formulario en la página el explorer casca en el visualizado

Componentes JSF/ADF y renderizado

<af:panelBorder id="panelBorder"></af:panelBorder>

<af:panelBox id="panelBox"></af:panelBox>

el panelBorder genera un div
y el panelBox un table

miércoles, 25 de abril de 2007

PermGen space Jboss OutOfMemoryError:

hay que incrementar la memoria reservada para el permgen dela siguiente forma en el run .bat del jboss
set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1000m -XX:MaxPermSize=128m

Expression Language EL con conditional

<af:goLink styleClass="#{(appADFServicio.actualPage=='/home.jsp')?'menuPrincipalLinkON':'menuPrincipalLink'}" text="#{messages.home}" destination="home.jsf"/>

Funciones en EL:
incluir la etiqueta: xmlns:fn="http://java.sun.com/jsp/jstl/functions"
y acceder a través del prefijo fn, ejemplo fn:substring

http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html
http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html

Problemas con el character set en java

Actualizar driver y que no haya duplicados de librería
actualmente estoy usando mysql-connector-java-5.0.5-bin.jar

Internacionalización en mysql

SHOW VARIABLES LIKE 'character_set_system';

martes, 24 de abril de 2007

Ejecutar archivos jar desde la linea de comandos

java -cp . -jar archivo.jar

lunes, 23 de abril de 2007

error hibernate.hbm2ddl.auto mysql restrictions

Si al utilizar la herramienta de hibernate: hbm2ddl Si tienes un error parecido a éste:
Caused by: java.sql.BatchUpdateException: null, message from server: "Cannot add or update a child row: a foreign key constraint fails (`pruebasevilla/traducciones`, CONSTRAINT `FK6CE29E6294037F2F` FOREIGN KEY (`entidadTraduccion`) REFERENCES `profesores` (`id`))"

Tienes mysql configurado con restricciones, para arreglarlo sigue estos pasos (hay que reconfigurar mysql):

  1. inicia mysql Server Instance Configuration Wizard
  2. Selecciona: reconfigure Instance
  3. Selecciona: detailed Configuration
  4. Selecciona lo que tu veas yo marqué Developer Machine
  5. Selecciona:Non-Transactional Database Only
  6. Selecciona lo que tu veas yo marqué Decision Support(DSS)/OLAP
  7. Selecciona: Enable TCP/IP Networking
  8. Selecciona: Enable Strict Mode
  9. ...

jboss seam no escanea componentes / scanning problem seam

si no existe el seam.properties no funciona, aunque sea un archivo en blanco debe existir en el source path

crear un nuevo usuario en mysql

GRANT ALL PRIVILEGES
ON *.* TO 'root'@'localhost' IDENTIFIED BY '' WITH
GRANT OPTION;

jueves, 19 de abril de 2007

Problema actualizando la base de datos con dbunit : dbunit Cannot delete or update a parent row:

Bueno pues para que funcione DBUNIt en una base de datos con restricciones de indices, es decir foreigns keys, pues antes de actualizar los datos habría que deshabilitar dichas restricciones de la siguiente forma:
SET FOREIGN_KEY_CHECKS=0, AUTOCOMMIT=0 ===========> DESHABILITAR
SET FOREIGN_KEY_CHECKS=1, AUTOCOMMIT=1 ===========> HABILITAR

SessionFactory ds = (SessionFactory)ctx.lookup(getDataSourceJNDIName());
Connection conexionPrincipal = ds.openSession().connection();

conexionPrincipal.createStatement().execute("SET FOREIGN_KEY_CHECKS=0, AUTOCOMMIT=0");
/**
aquí se harían las operaciones de actualizar la base de datos
**/

conexionPrincipal.createStatement().execute("SET FOREIGN_KEY_CHECKS=1, AUTOCOMMIT=1");

información encontrada en:
http://forum.springframework.org/archive/index.php/t-21957.html

windows xp home edition sp2 sobre macos problema restart reboot problem

http://www.apple.com/support/downloads/imacefifirmwareupdate11.html

miércoles, 18 de abril de 2007

Cambiar la memoria del JVM

http://weblogs.java.net/blog/aiqa/archive/2005/04/jvm_memory_usag.html
Aquí he encontrado la solución pero sencillamente hay que cambiar estos parametros:
set JAVA_OPTS=%JAVA_OPTS% -Xms300m -Xmx800m

lunes, 16 de abril de 2007

af:chooseDate


Para conseguir un calendario como éste ( ADF ) con el componente af:chooseDate habría que insertar el siguiente código en la página jsp. Siendo el maxValue y el minValue los limites del calendario, es decir los días en los que se puede hacer click




<af:chooseDate binding="#{Bean.chooseDate1}" id="chooseDate1"

maxValue="#{Bean.maximo}"

minValue="#{Bean.minimo}"/>


y quedando la clase java de la siguiente manera:


import oracle.adf.view.faces.component.core.input.CoreChooseDate;

public class Bean {


private CoreChooseDate chooseDate1;

public CoreChooseDate getChooseDate1() {
return chooseDate1;
}

public void setChooseDate1(CoreChooseDate chooseDate1) {
this.chooseDate1 = chooseDate1;
}

public Date getMaximo(){
Calendar hoy=Calendar.getInstance();
hoy.roll(Calendar.DAY_OF_YEAR,10);
return hoy.getTime();

}

public Date getMinimo(){
Calendar hoy=Calendar.getInstance();
hoy.roll(Calendar.DAY_OF_YEAR,-10);
return hoy.getTime();

}

}

viernes, 13 de abril de 2007

Anotaciones y anotaciones de persistencia



Anotaciones de persistencia:
annotations.hibernate.org/
www.hibernate.org/hib_docs/annotations/reference/en/html_single/

Los EJB3 se caracterizan por ser POJOs, es decir Plain Old Java Object, y esto quiere decir que no tienen nada de especial, son solo clases con propiedades y sus respectivos metodos accesores (get/set).

Las anotaciones (persistencia) se agrupan en dos categorías: mapeo lógico(relaciones y modelado de objeto) y mapeo físico(esquema de la base de datos)

Las clases para ello se encuentran en: javax.persistence.*


Hay que tener en cuenta que todos los campos o metodos no declarados como estaticos o transient se consideran persistentes. Así que habría que anotar todas las propiedades que no queramos persistir con: @Transient. Y la etiqueta minima de persistencia sería la de @Basic la cual puede ir complementada por el tipo de carga que queremos, ejemplo @Basic(fetch= FetchType.LAZY), esto tiene sus restricciones así que hay que mirar el tutorial y enterarse bien.


Framework para javaScript

Me han recomendado este:
www.mochikit.com

extensiones para firefox

Las extensiones simplemente extienden la funcionalidad básica del programa. En este caso dan más funcionalidad al navegador firefox.
Para utilizar el disco de gmail como disco duro Gspace
Para comparar la visualizacion en el explorer: IE Tab
Para el desarrollo web CSS existe una muy util : Firebug
FTP ...
Las extensiones se ordenan en categorias:

Examinar extensiones por categoría

Posicionamiento de divs

http://alistapart.com/articles/holygrail

configurar JAVA_HOME en eclipse y ant

Cuando recibimos el mensaje: Perhaps JAVA_HOME does not point to the JDK, que en mi caso me salió al intentar lanzar unas pruebas desde ANT tenemos que seguir las siguientes instrucciones :


-----------------------------------------------

Of course, JAVA_HOME is pointing to the right location, in both the OS environment and within Eclipse (This variable can be set within Eclipse through Window > Preferences > Java > Classpath Variables).

So how to fix the Ant build problem?

Go to Window > Preferences > Ant > Runtime. Choose the Classpath tab. Select the Global Properties node in the tree and click Add External JARs. Select tools.jar from your JDK directory (e.g., j2sdk1.4.2_03\lib\tools.jar).
------------------------------------------------

miércoles, 11 de abril de 2007

¿qué es un Aspecto en una instancia de clase u objeto?

¿qué es un aspecto en la programación orientada a aspectos POA?

Un aspecto es una serie de operaciones que se repiten y pueden afectar a diferentes objetos y operaciones diferentes.
Un caso común es la métrica o testeo de la aplicación en tiempo. Si tenemos que incluir el código relacionado con medir el tiempo que tarda un método en ejecutarse dentro del propio método, entonces estamos mezclando aspectos diferentes e independientes del programa, tales como la ejecucion de una suma y el tiempo que tarda el producirse.



**** en desarrollo pero se refiere al aspecto en su forma más abstracta o dicho de otra forma el aspecto como perteneciente a un proceso

  1. El aspecto se puede referir al estado temporal (entendido como fase temporal o estado) del ciclo de vida de un objeto.
  2. También se puede entender como un comportamiento (interfaz) de la clase o instancia.

Los aspectos se implementan en forma de interceptores.
Un interceptor es un proxy.
En un programa orientado a aspectos debe existir un objeto que se encarga de devolver las nuevas instancias de las clases implicadas en la ejecución del programa. Este objeto encargado de la creación de nuevos objetos (el típico SpringFrameWork o Jboss Seam) devuelve proxys que tiene el mismo comportamiento que la clase esperada pero además aporta más comportamientos a la clase.


Ideas a desarrollar:
Entender la programación como un algoritmo de ciclos temporales/vitales de la instancia de un objeto.

Hibernate y ¿Para qué y cuando usar: equals y hashCode?


Según el tutorial de hibernate-3, esto se hace para utilizar las colecciones de tipo java.util.Set se implementaría así:


Teniendo en cuenta que se hace por el tema de indexación en un java.util.Set

public class Cat {
...
public boolean equals(Object other) {
if (this == other) return true;
if ( !(other instanceof Cat) ) return false;
final Cat cat = (Cat) other;
if ( !cat.getLitterId().equals( getLitterId() ) ) return false;
if ( !cat.getMother().equals( getMother() ) ) return false;
return true;
}
public int hashCode() {
int result;
result = getMother().hashCode();
result = 29 * result + getLitterId();
return result;
}
}

***HAY QUE ACCEDER A LAS PROPIEDADES A TRAVÉS DE SUS ACESORES PORQUE ES DE ESA FORMA QUE HIBERNATE CARGA LAS PROPIEDADES

Could not find selected item matching value af:selectOneChoice f:selectItems

Este problema se da cuando en un selecItems no encuentra en la lista de posibles valores el valor seleccionado (selected) aunque veamos que de hecho si existe.

ADF/JSF al intentar seleccionar el valor de la lista de posibles valores lo hace a través del metodo equals() que tenemos que sobreescribir para que compare las claves de negocio y no compare por serialización del objeto (en este caso nunca serian iguales dos instancias con iguales valores de una clase).

Y el problema se produce cuando el acceso a los valores lo hacemos sin el correspondiente metodo interceptado por hibernate (PORQUE SI UTILIZAMOS HIBERNATE ESTAMOS UTILIZANDO POA [programación orientada a aspectos y por lo tanto interceptores] )
por un problema en la implementacion del equals e Hibernate.

La razón de este error es la siguiente:

Al acceder a las propiedades de los objetos sin el metodo adecuado (interceptado por hibernate) es decir los getter, el valor que devuelve es el que tiene por defecto la clase o el que tenga la instancia del objeto en un momento dado del programa.

miércoles, 4 de abril de 2007

CURRICULUM VITAE




domingo, 1 de abril de 2007

Variables de entorno

set [sin argumentos] ---> visualizar todas las variables

Ejemplos para incluir variable:

  • JAVA_HOME="${JAVA_HOME}:/usr/javatools/jdk1.5.0/:"
  • PATH="${PATH}:/home/my_user/bin:"

export variable=valor
---> incluir variable con valor en el proceso actual

echo $nombre_variable --> visualiza valor de variable


*Nota:
(Dos puntos sin incluir después un directorio son tratados como
el directorio de trabajo actual)

Definir variables de entorno en macosx

Habría que editar el siguiente archivo
~/.MacOSX/environment.plist

siendo ~/ el directorio del usuario a modificar


En caso de no existir dicho archivo hay que crearlo a mano y también colocarle las directivas xml correspondientes

Y podemos utilizar la herramienta:
/Developer/Applications/PropertyListEditor.app

Hay que reiniciar la sesión de usuario para que surja efecto.






Ejemplo: