Mostrando entradas con la etiqueta Seam. Mostrar todas las entradas
Mostrando entradas con la etiqueta Seam. Mostrar todas las entradas

miércoles, 25 de marzo de 2009

Duplicate websession with Seam 2.1.0.BETA1

por lo visto se carga varias veces el archivo components.xml lo que genera componentes duplicados.
En este enlace se habla de comentar los componentes "problematicos" y volver a generar el jar correspondiente:
jar cvf ../jboss-seam.jar ./
http://www.seamframework.org/Community/DuplicateWebsessionWithSeam210BETA1

lunes, 6 de octubre de 2008

Seam Framework con Ivy en la gestion de dependencias

http://in.relation.to/Bloggers/ManagingTheDependenciesOfASeamgenProjectWithIvy

Si alguno de vosotros ha intentado mavenizar un proyecto que utilice Seam seguramente habrá visto la escasez de recursos y dificultad para realizarlo (en mi caso no he llegado a conseguirlo). Y para más complicación cuando llega la hora de la herencia con MAVEN y su famoso superpom. EN resumen si utilizais Seam-gen podéis integrarlo con Ivy para la gestión de dependencias y la integración continua

martes, 16 de octubre de 2007

jndiPatter en components.xml

<component name="org.jboss.seam.core.init">
< property> name="jndiPattern" pruebaSevilla/#{ejbName}/local/ <property>
</component>

martes, 12 de junio de 2007

configurar IntelliJ Idea con seam para TestNG

settings>proyect structure
modules>actualModule

  1. addContentroot
    • add jbossseam folder
    • mark lib as sourcefolder
  2. actual module
    • sourceFolders:
      • embedded-ejb/conf
      • resources
      • src/action
      • src/model
    • testFolders:
      • src/test

Dependencies:
  • proyectDependencies:
    • addClasses: actualModule/lib/*



References to resources outside module: relative



Si te da un error
javax.naming.NameAlreadyBoundException
puede ser que la librería jboss-seam.jar y el source seam/src/main estén arrancando el datasource dos veces!!!


mirar en ejemplos del SEAM!!!

Create the jboss-seam Eclipse project with the following directories
in your source path:

src/main/
examples/blog/src/
examples/blog/resources/
embedded-ejb/conf/

And all jar files from the following directories in your classpath:

lib/
embedded-ejb/lib

3. Run examples/blog/src/org/jboss/seam/example/blog/test/testng.xml
using the TestNG plugin.

miércoles, 6 de junio de 2007

deleted object would be re-saved by cascadE

La excepción que lanza es la siguiente:
org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [es.cafs.model.RecursoProfesorImpl#33]

y ocurría la segunda vez que intentaba borrar un item(RecursoProfesorImagen) de un Set de un Objeto(Profesor), y además el scope era de Conversation, así que el error era que había que refrescar la entidad principal una vez que se volvia a seleccionar la entidad hija.

lunes, 21 de mayo de 2007

Seam contexto evento en componente produce errores en adf:Switcher

Falla el af:switcher.setFacetName(String name) cuando el componente que lo activa pierde el render.

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

@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

lunes, 23 de abril de 2007

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

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.

martes, 27 de marzo de 2007

Interceptores Jboss Seam

Fases de JSF ya es mucha diferencia

Hay que crear una @interface que la utilizaremos para etiquetar/interceptar la clase(componente en terminos de Seam) correspondiente


import javax.interceptor.Interceptors;
import java.lang.annotation.Documented;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;

/**
* Created by IntelliJ IDEA.
* User: juanitu
* Date: 12-abr-2007
* Time: 17:43:24
* To change this template use File | Settings | File Templates.
*/
@Target(TYPE)
@Retention(RUNTIME)
@Documented
@Interceptors(Interceptor.class)
public @interface EtiquetaInterceptora {

}


Despues definimos el interceptor poniendo especial interes en como tratamos el tema de las fases de la aplicacion:



import org.jboss.seam.annotations.Around;
import org.jboss.seam.annotations.Within;
import org.jboss.seam.interceptors.*;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.Lifecycle;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import javax.faces.event.PhaseId;

import es.cafs.dao.CafsDAO;
import es.cafs.metadata.componentes.Componentes;

import java.lang.reflect.Method;

/**
* Created by IntelliJ IDEA.
* User: juanitu
* Date: 12-abr-2007
* Time: 17:45:36
* To change this template use File | Settings | File Templates.
*/
@Around({BijectionInterceptor.class, ValidationInterceptor.class,
ConversationInterceptor.class, BusinessProcessInterceptor.class})
@Within(RemoveInterceptor.class)
public class Interceptor {

protected static Log log = LogFactory.getLog(org.jboss.seam.interceptors.Interceptor.class);

@AroundInvoke
public Object checkLoggedIn(InvocationContext invocation) throws Exception {

CafsDAO dao = (CafsDAO) Contexts.getApplicationContext().get(Componentes.appCafsDAO);
log.error(dao==null);

Method method = invocation.getMethod();
log.error(invocation.getTarget().getClass()+"-"+method.getName() + " " + method.getReturnType());
if (Lifecycle.getPhaseId() == PhaseId.INVOKE_APPLICATION) {
log.error("INVOCANDO FASE");
} else {
log.error(invocation.getTarget().getClass()+"-"+method.getName() + " " + method.getReturnType());
log.error("OTRA FASE");

}

return invocation.proceed();
}
}





Y por último hay que etiquetar el componente correspondiente


@Scope(ScopeType.CONVERSATION)
@Name(Componentes.convVisorInformacion)
@Logeando
public class VisorInformacion{
}