26 de abril de 2011

Diseño Modelado con Seam

Cuando se arma el modelo de las entities en seam, la visibilidad elegida define la navegación generada por el seam-gen.

Tanto para la visibilidad ManyToOne o ManyToMany en las pantallas crea tabs para contemplar esta visibilidad.

Por lo tanto una regla a la hora de elegir la visibilidad del modelo, sería identificar las entities que son más relevantes ( aquellas que llevan ABM ) y que sean ellas quienes tengan visibilidad sobre el resto.

25 de abril de 2011

SEAM page error "duplicate Id for a component selectParent"

Yes, it is a bug. Quick solution:look at seam-home/seam-gen/view/edit.page.xml.ftl
and change the following line:
<s:button id="${'#'}{${homeName}.instance.${property.name} != null ? 'changeParent' : 'selectParent'}" value="${'#'}{${homeName}.instance.${property.name} != null ? 'Change' : 'Select'} ${property.name}"
for:
<s:button id="${'#'}{${homeName}.instance.${property.name} != null ? 'changeParent${property.name}' : 'selectParent${property.name}'}" value="${'#'}{${homeName}.instance.${property.name} != null ? 'Change' : 'Select'} ${property.name}"
Enjoy!!!


Esto soluciona el bug del generador de seam

en mi caso debí cambiar la página 
Esto 
        <div class="actionButtons">
            <s:button id="#{beneficiarioHome.instance.direccionContacto != null ? 'changeParent ' : 'selectParent '}" 
            value="#{beneficiarioHome.instance.direccionContacto != null ? 'Change' : 'Select'} direccionContacto"
                       view="/DireccionContactoList.xhtml">
                <f:param name="from" value="BeneficiarioEdit"/>
            </s:button>

por esto:



        <div class="actionButtons">
            <s:button id="#{beneficiarioHome.instance.direccionContacto != null ? 'changeParentdireccionContacto ' : 'selectParentdireccionContacto '}" 
            value="#{beneficiarioHome.instance.direccionContacto != null ? 'Change' : 'Select'} direccionContacto"
                       view="/DireccionContactoList.xhtml">
                <f:param name="from" value="BeneficiarioEdit"/>
            </s:button>

 Y ESO TAMPOCO ANDUVO ASÍ QUE LE SAQUE EL id="#{bla bla}" 

12 de abril de 2011

Jboss 5.1 eclipse Jboss tools y proyecto Seam vs netbeans jboss 4.2 y EJB+JSF

Utilizar seam reduce los tiempos de desarrollo ?

En la experiencia personal trabajando con jboss 5.1 o 4.2 y eclipse con jbossTools se tienen muchos problemas técnicos que nada tienen que ver con programación a tal punto que se pierde más tiempo arreglando estos problemas que desarrollando en sí.

Ventajas Seam:

mejora el pasaje de parámetros a las páginas
mejora la sintaxis de navegación de páginas
separa las navegaciones por página para tener las cosas más ordenadas
Prácticamente no se utilizan converters
Mejora la interacción con logger
Evita el código replicado que se ocasiona al trabajar en capas separadas
Provee anotaciones para

  • Trabajo con Roles de usuario
  • Biyección
  • Insertar métodos que se disparan durante el ciclo de vida 
  • Demarcación de contextos Begin y End
  • Demarcación de transacciones Rollback
  • Para Manejo de excepciones redirect y HttpError
  • Validación IfInvalid
  • Remoting
  • Seam interceptors 
  • Asincronismo
  • Jsf DataTable selección automática ( sin converters ni cosas raras )

8 de abril de 2011

Net beans seam glassfish

Probando un nuevo entorno de desarrollo

http://www.coffeecrew.org/files/2010/10/netbeansFaceletsSeamEjb3.pdf


http://blogs.sun.com/arungupta/entry/java_ee_6_glassfish_31

El plugin para que netbeans soporte seam ya no está disponible.

igual seam deja levantar el proyecto
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=JBossSeam_primeros_pasos#03

1 de abril de 2011

Seam Error: entity not mapped jboss tools

query syntax exception not mapped

El Bug esta reportado aca https://issues.jboss.org/browse/JBSEAM-3821

Solución cambiar el persistence.xml y el components.xml de la siguiente forma


--components.xml
<persistence:entity-manager-factory name="bookingDatabase" installed="false"/>
<!-- If Seam loads the persistence unit (JBoss 4.x), the EntityManagerFactory will be resolved from #{bookingDatabase}.
On JBoss AS 5, the EntityManagerFactory is retrieved from JNDI (the binding occurs during application deployment). -->
<persistence:managed-persistence-context name="em" auto-create="true"
entity-manager-factory="#{bookingDatabase}" persistence-unit-jndi-name="java:/bookingEntityManagerFactory"/>
--persistence.xml
<!-- Binds the EntityManagerFactory to JNDI where Seam can look it up.
This is only relevant when the container automatically loads the persistence unit, as is the case in JBoss AS 5. -->
<property name="jboss.entity.manager.factory.jndi.name" value="java:/bookingEntityManagerFactory"/>

11 de marzo de 2011

java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory

Causa:      no se encuentran los jar de jsf en el build path
No Solución:  configure build path , add jar seleccionar jsf-api y jsf-impl
No Solución: copilar los jar api e impl a web-inf/lib
Causa: Problema del hot deploy de tomcat
Solución: Agregar en el web.xml


<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<!-- Listener implementation to handle web application lifecycle events -->
<listener>
<listener-class>com.sun.faces.application.WebappLifecycleListener</listener-class>
</listener>

3 de marzo de 2011

Piques JBoss

Consola de administración

http://localhost:8080/admin-console/
Default user password
admin / admin

Tiene la sección de aplicaciones y otra de recursos los cuales son utilizados por las aplicaciones

se puede controlar el deploy de las aplicaciones

Levantar jboss por fuera de eclipse para que es escuche desde fuera de la lan.
cd c:\jboss-5.1.0.GA\bin
run -b 0.0.0.0

Cuando copiamos a deploy se realiza el deploy automatico. para evitar esto modificamos la entrada de /conf/jboss-service.xml al final de todo
<attribute name="ScanEnabled">true</attribute> lo cambiamos a false, reiniciamos y listo


Servicios Web
http://localhost:8080/jbossws/services


para generar el proxy del web service y que incluya el codigo fuente ( los .java )
jboss-4.2.2.GA/bin/wsconsume -k http://cosa.com/archivo.xsdl