Menu

Liferay Tab null, pero si muestra elementos.

Alejandro
2011-06-01
2012-11-26
  • Alejandro

    Alejandro - 2011-06-01

    Hola.

    Tengo el siguiente problema:

    Cuando estoy en modo lista y teniendo la tabla registros, si me quiero pasar al modo detalle me aparece el mensaje:
    Imposible ir a modo detalle, no hay elementos en la lista.

    Además me muestra una excepción porque el tab es null. Es como si perdiera la referencia a la vista.

    Lo he probado en Tomcat y en Weblogic fuera del portal y en estos casos si funciona correctamente.

    Estoy utilizando Liferay 5.2.3

    Adjuto la clase y la traza de la excepción por si puede dar alguna pista.

    Un saludo y gracias por adelantado.

    @Entity
    @Table(name = "COMERCIO")
    public class Comercio implements java.io.Serializable {

    private long idcomercio;
    private String comercio;

    public Comercio() {
    }

    @Id
    @Column(name = "IDCOMERCIO", unique = true, nullable = false, precision = 18, scale = 0)
    public long getIdcomercio() {
    return this.idcomercio;
    }

    public void setIdcomercio(long idcomercio) {
    this.idcomercio = idcomercio;
    }

    @Column(name = "COMERCIO", nullable = false, length = 12)
    public String getcomercio() {
    return this.comercio;
    }

    public void setcomercio(String comercio) {
    this.comercio = comercio;
    }

    }


    2011-06-01 09:13:03,578 | ERROR |  Tab:331 |
    java.lang.NullPointerException
    at org.openxava.component.MetaComponent.get(MetaComponent.java:57)
    at org.openxava.tab.Tab.getMetaTab(Tab.java:237)
    at org.openxava.tab.Tab.createTableModel(Tab.java:347)
    at org.openxava.tab.Tab.getTableModel(Tab.java:328)
    at org.openxava.tab.Tab.getTotalSize(Tab.java:921)
    at org.openxava.actions.GoDetailAction.execute(GoDetailAction.java:27)
    at org.openxava.controller.ModuleManager.executeAction(ModuleManager.java:379)
    at org.openxava.controller.ModuleManager.executeAction(ModuleManager.java:296)
    at org.openxava.controller.ModuleManager.execute(ModuleManager.java:256)
    at jsp_servlet._web_45_inf._jsp._xava.__execute._jspService(__execute.java:200)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
    at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
    at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
    at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
    at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444)
    at org.openxava.web.servlets.Servlets.getURIAsStream(Servlets.java:66)
    at org.openxava.web.dwr.Module.getURIAsStream(Module.java:183)
    at org.openxava.web.dwr.Module.request(Module.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
    at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
    at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
    at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
    at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at es.gv.pca.ox.filters.LocaleFilter.doFilterInternal(LocaleFilter.java:78)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    2011-06-01 09:13:03,578 | WARN  |  Tab:924 | ¡ADVERTENCIA! Imposible obtener el tamaño total de un tab
    java.lang.NullPointerException
    at org.openxava.component.MetaComponent.get(MetaComponent.java:57)
    at org.openxava.tab.Tab.getMetaTab(Tab.java:237)
    at org.openxava.tab.Tab.cloneMetaTab(Tab.java:230)
    at org.openxava.tab.Tab.restoreDefaultProperties(Tab.java:1243)
    at org.openxava.tab.Tab.getTableModel(Tab.java:332)
    at org.openxava.tab.Tab.getTotalSize(Tab.java:921)
    at org.openxava.actions.GoDetailAction.execute(GoDetailAction.java:27)
    at org.openxava.controller.ModuleManager.executeAction(ModuleManager.java:379)
    at org.openxava.controller.ModuleManager.executeAction(ModuleManager.java:296)
    at org.openxava.controller.ModuleManager.execute(ModuleManager.java:256)
    at jsp_servlet._web_45_inf._jsp._xava.__execute._jspService(__execute.java:200)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
    at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
    at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
    at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
    at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444)
    at org.openxava.web.servlets.Servlets.getURIAsStream(Servlets.java:66)
    at org.openxava.web.dwr.Module.getURIAsStream(Module.java:183)
    at org.openxava.web.dwr.Module.request(Module.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
    at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
    at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
    at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
    at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at es.gv.pca.ox.filters.LocaleFilter.doFilterInternal(LocaleFilter.java:78)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)

     
  • Javier Paniza

    Javier Paniza - 2011-06-02

    Hola Alejandro,

    este problema es muy extraño para mí. Es como si el objeto tab desapareciera mágicamente de la sesión. Investiga en la documentación y foros sobre weblogic + liferay para ver si encuentras algún problema parecido. Si no tendremos que depurar hasta averiguar que es lo que está pasando. Lo que más me preocupa es que si el objeto xava_tab desaparece, también le puede pasar lo mismo a otros objetos de sesión, lo que significa que puede fallar cualqueir otra cosa en cualquier momento. La forma de asegurarse de que todo funciona bien es pasando la suite completa de tests de OpenXava contra WebLogic + Liferay.

    Por cierto, ¿al final del execute.jsp tienes puesto lo siguiente?:

    context.put(request,"xava_tab",tab);
    

    Aprende OpenXava con ejemplos: Consigue el libro

     
  • Alejandro

    Alejandro - 2011-06-03

    Hola Javier.

    Realmente se está perdiendo todo el contexto, no solo el tab.

    Esto pasa al hacer una llamada por segunda vez en el módulo cuando se llama a execute.jsp desde Module, en vez de en el PortletXava a través de portlet.jsp y module.jsp.

    getURIAsStream("execute.jsp", values, multipleValues, selected, additionalParameters);

    En el execute.jsp instancia un nuevo context y al no haber en el contexto xava_view ni  xava_tab se instancian una nueva vista y un nuevo tab.

    No se si podría estar relacionado de alguna forma con el problema con liferay que se menciona en portlet.jsp

    Calling directly to module.jsp does not work well in liferay (at least until 4.1.3)
    because the parameter sent from the portlet to the jsp are frozen for all the next
    JSP calls.

    Gracias por tu ayuda Javier, un saludo.

     
  • Javier Paniza

    Javier Paniza - 2011-06-06

    Hola Alejandro,

    no me has respondido a la pregunta que te hice: "¿al final del execute.jsp tienes puesto lo siguiente?: "

    context.put(request,"xava_tab",tab);
    

    No se si podría estar relacionado de alguna forma con el problema con liferay

    No, porque eso tiene que ver con los parametros que se envian desde el portlet a los jsp, pero no a los que se envían entre los propios jsp. Además, el problema es que los objetos de sesión.

    Prueba cambiar en module.jsp, lo siguiente

    boolean coreViaAJAX = !manager.getPreviousModules().isEmpty() || manager.getDialogLevel() > 0;
    

    por

    boolean coreViaAJAX = true;
    

    y dime que tal va.


    Aprende OpenXava con ejemplos: Consigue el libro

     
  • Alejandro

    Alejandro - 2011-06-06

    Hola Javier.

    En el código tengo esa línea.

       context.put(request,"xava_tab",tab);

    El problema lo tengo cuando llamo al execute.jsp desde Module.java no a través de module.jsp en XavaPortlet. La prueba que me comentas debería afectar
    a las posteriores llamadas desde Module.java?

    Un saludo.

     
  • Alejandro

    Alejandro - 2011-06-06

    Hola de nuevo Javier.

    Disculpa el bombardeo de mensajes.

    Creo que me he equivocado y pense que no me habías entendido, pero al ser la llamada mediante dwr tiene sentido la prueba que me proponías.

    Todavía no he podido probarlo, desgraciadamente estoy teniendo serios problemas con mi entorno weblogic para poder hacer las pruebas.

    Hasta ahora he podido ver que dentro del execute.jsp se pierde el context, pero  que puedo hacer un put a la sesión del context con otro nombre (mi_context).

    Module.java:

    .
    .
    .
    request.getSession().setAttribute("MI_CONTEXT", getContext(request));
    getURIAsStream("execute.jsp", values, multipleValues, selected, additionalParameters);

    Esto quizás me permita asignarselo al context de execute.jsp cuando detecte que este se ha perdido. Aún así tu propuesta resultaría mas sencilla.

    execute.jsp

    .
    .
    .
    <%
    String browser = (String) request.getAttribute("xava.portlet.user-agent");
    if (browser == null) {
    browser = request.getHeader("user-agent");
    request.setAttribute("xava.portlet.user-agent", browser);
    }
    Locales.setCurrent(request);

    org.openxava.controller.ModuleManager manager = (org.openxava.controller.ModuleManager) context.get(request, "manager", "org.openxava.controller.ModuleManager");
    manager.setSession(session);
    manager.resetPersistence();

    org.openxava.tab.Tab t = (org.openxava.tab.Tab) context.get(request, "xava_tab");

    if (null == t.getModelName()) {
    context=(org.openxava.controller.ModuleContext)request.getSession().getAttribute("MI_CONTEXT");
    manager = (org.openxava.controller.ModuleManager) context.get(request, "manager", "org.openxava.controller.ModuleManager");
    manager.setSession(session);
    manager.resetPersistence();

    t = (org.openxava.tab.Tab) context.get(request, "xava_tab");
    }

    Un saludo y muchas gracias por tu ayuda.

     
  • Javier Paniza

    Javier Paniza - 2011-06-07

    Hola Alejandro,

    Hasta ahora he podido ver que dentro del execute.jsp se pierde el context

    ¿Sabes en que punto se pierder?

    Esto quizás me permita asignarselo al context de execute.jsp cuando detecte que este se ha perdido
    Si funciona es una buena opción, porque en el context está todo el estado del módulo. Yo todavía me pregunto porque se pierde.
    Si pudieramos hacer un portlet y un servlet simple (sin nada de OX) que intenten compartir el estado de la sesión y fallen, podriamos dar de alta un bug en Liferay con este caso.

    ¿Has probado con la última versión de Liferay? O con el último nivel de parches de la versión que utilizas
    ¿Has probado con la última versión de WebLogic? O con el último nivel de parches de la versión que utilizas
    ¿No has encontrado ningún bug en los trackers de estos proyectos que tenga que ver con nuestro problema?


    Aprende OpenXava con ejemplos: Consigue el libro

     
  • Alejandro

    Alejandro - 2011-06-08

    Hola Javier.

    ¿Has probado con la última versión de Liferay? O con el último nivel de parches de la versión que utilizas
    ¿Has probado con la última versión de WebLogic? O con el último nivel de parches de la versión que utilizas

    He probado con actualizando y con nuevas versiones, pero el resultado es siempre el mismo.

    Tocat + Liferay funciona.
    La diferencia radica en que con weblogic en la llamada dwr no aparece nada en el httpsessionid.

    Weblogic + 4m1 o 4.12 funciona
    Weblogic + 4m1 + 5.1.2 funciona

    ¿No has encontrado ningún bug en los trackers de estos proyectos que tenga que ver con nuestro problema?

    Desgraciadamente no he podido encontrar nada que pueda ayudar.

    Funciona parcialmente si cambio de posición el el execute.jsp el context.put(request,"xava_tab",tab);
    Puedo cambiar entre los modos de vista, pero no funciona SaveAction que parece que pierde los datos.
    Imposible modificar: no existe un registro con esa clave

        context.put(request,"xava_tab",tab);
    
        manager.initModule(request, errors, messages);
        manager.executeOnEachRequestActions(request, errors, messages); 
        if (hasProcessRequest) {
            manager.execute(request, errors, messages); 
            if (manager.isListMode()) { // here and before execute the action
                tab.setModelName(manager.getModelName());   
                if (tab.getTabName() == null) { 
                    tab.setTabName(manager.getTabName());
                }
            }
        }
    //after-each-request
    manager.executeAfterEachRequestActions(request, errors, messages);
    

    Esto lleva a pensar que de la 4m1 a la versión actual a cambiado algo en el flujo que se sigue para realizar la acción
    y que hay otro punto en este flujo en el que necesitaría hacer de nuevo el put para resolver el problema.

    ¿Sabes en que punto se pierde?

    Cuando hago un getSession.getAttribute("context");

    Aunque yo meta un context_auxiliar a la sesión al recuperarlo sus valores quedan a null.
    Parece ser que lo que hace es una desserialización. Los atributos de la clase ModuleContext son transient (Map contexts y Map globalContext),
    cuando se deserializa estos pasan a valer null de nuevo. He visto que en la versión 4m1 no están como transient.
    He probado a dejarlos sin ser transient y funciona esa parte, puedo pasar al modo detalle pero no volver al modo lista.

    El fallo da porque no puede recuperar "tabObject" de la request.
    Curiosamente en el execute.jsp se hace lo siguiente

    tab.setRequest(request);
    

    y request es transient en la clase org.openxava.tab.Tab, hay mas atributos transient y
    me preocupa que pueda afectar al comportamiento del resto de la aplicación si lo cambio.

    Muchas gracias por tu ayuda Javier.

     
  • Alejandro

    Alejandro - 2011-06-09

    Hola Javier.

    He probado a aunar las dos modificaciones, el put y quitando los atributos transient.

    De esta manera funciona, pero si la clase contiene también una collection aparece una
    Excepción diciendome que no se puede desserializar MetaUseObject. La he hecho serializable, pero no se si necesitaré que alguna clase más sea serializable.

    public class MetaUseObject implements java.io.Serializable{
    
        private String name;
        private String actionProperty;
    
        public String getName() {
            return name;
        }
        /**
         * If is not set it assumes the object name without prefix. <p>
         * 
         * For example, if the name is 'view' it assumes 'view' and 
         * if it's 'xava_view' it assumes 'view'.
         */
        public String getActionProperty() {
            if (!Is.emptyString(actionProperty)) return actionProperty; 
            if (name==null) return "";
            int dotIdx = name.indexOf('_'); 
            if (dotIdx >= 0) {
                return name.substring(dotIdx+1); 
            }
            else {
                return name;
            }
        }
        public void setName(String string) {
            name = string;
        }
        public void setActionProperty(String string) {
            actionProperty = string;
        }
    

    Llegado a este punto se reproducen dos problemas más, relacionados con la perdida de valores, me preocupa
    que pueda pasar en más puntos, una vez salvados estos:

    1- La edición de registros de la colección no funciona. Se abre la ventana pero esta vacia y al cerrarla
    se pierden los valores de la colección. De nuevo parece que se estan perdiendo valores, en este caso de la vista

    2011-06-09 11:40:00,250 | ERROR |  DWRBase:120 | 
    java.lang.NullPointerException
        at org.openxava.view.View.getRequest(View.java:2924)
        at org.openxava.view.View.getRequest(View.java:2924)
        at org.openxava.view.View.getLabelFor(View.java:3657)
        at jsp_servlet._web_45_inf._jsp._xava.__editor._jspService(__editor.java:188)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524)
        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444)
        at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:163)
        at jsp_servlet._web_45_inf._jsp._xava.__detail._jspService(__detail.java:484)
    

    2- Conversión de Boolean al intentar cargar datos en un tab, porque intenta hacer una conversión de Boolean utilizando
    HibernateTypeConverter y el type es null en la Metapropety.

    La excepción que aparece en el log es esta:

    2011-06-08 13:27:20,859 | ERROR |  HibernateTypeConverter:45 | Problema convirtiendo tipo de dato usando el Type de Hibernate null
    java.lang.NullPointerException
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at org.openxava.converters.typeadapters.HibernateTypeBaseConverter.getHibernateType(HibernateTypeBaseConverter.java:22)
        at org.openxava.converters.typeadapters.HibernateTypeConverter.toJava(HibernateTypeConverter.java:27)
        at org.openxava.tab.impl.EntityTabDataProvider.doConversions(EntityTabDataProvider.java:195)
        at org.openxava.tab.impl.EntityTabDataProvider.nextChunk(EntityTabDataProvider.java:49)
        at org.openxava.tab.impl.EntityTab.nextChunk(EntityTab.java:303)
        at org.openxava.tab.impl.TableModelBean.getRow(TableModelBean.java:121)
        at org.openxava.tab.impl.TableModelBean.getObjectAt(TableModelBean.java:150)
        at org.openxava.tab.impl.XTableModelDecoratorBase.getObjectAt(XTableModelDecoratorBase.java:55)
        at es.gv.pca.ox.actions.EditElementInCollectionAction.execute(EditElementInCollectionAction.java:42)
    

    El código de esa propiedad es el siguiente:

        @Column(name = "ACTIVO", length = 1)
        @Type(type = "org.openxava.types.SiNoType")
        public Boolean getActivo() {
            return this.activo;
        }
    

    He probado, sin exito a poner en el default-converters lo siguiente:

        <for-type type="java.lang.Boolean"
            converter-class="org.openxava.converters.BooleanSNConverter"
            cmp-type="java.lang.Boolean"/>
    

    Gracias por tu ayuda, un saludo.

     
  • Alejandro

    Alejandro - 2011-06-09

    Hola de nuevo Javier.

    Un detalle más, con respecto al problema  1- La edición de registros de la colección no funciona.

    La request es transient en la clase org.openxava.view.View, así que supongo que se este deserializando la clase View y pierda ahí la request.

    java.lang.NullPointerException at org.openxava.view.View.getRequest(View.java:2924)
    
     
  • Javier Paniza

    Javier Paniza - 2011-06-09

    Hola Alejandro,

    La request es transient en la clase org.openxava.view.View, así que supongo que se este deserializando la clase View

    Sí, pero siempre se debería de trabajar con un request fresquito, y no se debería guardar el request nunca entre petición, y petición. Así que esto sí que es un bug de OX que podemos arreglar.

    Añádelo como bug y pon, por favor, la traza completa y los pasos que has de dar para que falle.

     
  • Javier Paniza

    Javier Paniza - 2011-06-10

    Hola Alejandro,

    Conversión de Boolean al intentar cargar datos en un tab, porque intenta hacer una conversión de Boolean utilizando HibernateTypeConverter y el type es null en la Metapropety

    ¿Falla sólo con esa propiedad o falla con todas?
    ¿Las otras propiedades de esa MetaProperty tienen valor?

    Por cierto, ¿lo has probado ya con versiones más actuales de Liferay y WebLogic?
    Prueba también probar tu aplicación de ejemplo usando OX3.0.3 (que no usaba AJAX), ¿te funciona?


    Aprende OpenXava con ejemplos: Consigue el libro

     
  • Alejandro

    Alejandro - 2011-06-10

    Hola Javier.

    ¿Falla sólo con esa propiedad o falla con todas?
    ¿Las otras propiedades de esa MetaProperty tienen valor?

    Aparentemente sólo se pierde ese atributo, pero me resulta imposible asegurarlo cien por cien, puesto que no es fácil
    saber si los valores que tienen los atributos son por defecto o si son correctos o si en ese momento no tienen porque
    tener valor.

    Fuerzo el converter BoleanSNMediante debug y así consigo continuar interactuando con el sistema. Consigo  ver la tabla de la collección,
    pero ahora falla al intentar editar uno de los objetos de la collección.

    Retomanto el tema de el transient y la request, me he dado cuenta de que la request de view tiene que ser transient ya que si no,
    se producirían referencias circulares. View contiene a request, pero request contiene a view, también pasa lo mismo con los tab.

    Pense en trucar la deserialización de View para que la request siga siendo transient pero serialicemos algo el lugar de esa request
    que luego al deserializar pusieramos en la request,  pero para mi hay demasiadas dependencias como para poder saber que objetos tendría que serializar.

    Habría que asegurarse que estos objetos fueran frescos como planteabas con la request. Cómo asegurarse que son frescos?

    Incluyo la traza completa del error.

    2011-06-10 14:17:13,796 | ERROR |  DWRBase:120 | 
    java.lang.NullPointerException
        at org.openxava.view.View.getRequest(View.java:2924)
        at org.openxava.view.View.getRequest(View.java:2924)
        at org.openxava.view.View.getLabelFor(View.java:3657)
        at jsp_servlet._web_45_inf._jsp._xava.__editor._jspService(__editor.java:188)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524)
        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444)
        at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:163)
        at jsp_servlet._web_45_inf._jsp._xava.__detail._jspService(__detail.java:484)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524)
        at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444)
        at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:163)
        at jsp_servlet._web_45_inf._jsp._xava.__core._jspService(__core.java:426)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:165)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:105)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524)
        at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:253)
        at org.openxava.web.servlets.Servlets.getURIAsString(Servlets.java:120)
        at org.openxava.web.servlets.Servlets.getURIAsString(Servlets.java:99)
        at org.openxava.web.dwr.Module.getURIAsString(Module.java:205)
        at org.openxava.web.dwr.Module.fillResult(Module.java:215)
        at org.openxava.web.dwr.Module.request(Module.java:101)
        at sun.reflect.GeneratedMethodAccessor719.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
        at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
        at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
        at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
        at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
        at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
        at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at es.gv.pca.ox.filters.LocaleFilter.doFilterInternal(LocaleFilter.java:78)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    

    Por cierto, ¿lo has probado ya con versiones más actuales de Liferay y WebLogic?

    La pruebas que hemos hecho hasta ahora han sido tanto con nuestros entornos naturales de trabajo con actualizaciones y nuevas
    versiones de ellos.

    Prueba también probar tu aplicación de ejemplo usando OX3.0.3 (que no usaba AJAX), ¿te funciona?

    No he podido probar todavía, pero el problema se reproduce migrando de la 4m1 a la versión actual, así que en principio no debería afectar la utilización de Ajax.
    Tendría sentido probar con boolean coreViaAJAX = false; en module.jsp

    Han cambiado tantas cosas de una versión a otra con respecto a atributos transient y clases serializables, así como su flujo como para que Openxava deje de funcionar en un entorno con serialización? 

    Gracias Javier y un saludo

     
  • Javier Paniza

    Javier Paniza - 2011-06-13

    Hola Alejandro,

    Cómo asegurarse que son frescos?

    Dado que los request son transient en View y Tab, cada vez que da una NullPointerException, es que hemos fallado al asignar el request actual.

    Deberías sacar por el log el request que recibe el método request() de la clase Module, y después visualizarlos en Tab y View siempre que se usen. En el momento que no coincidan hemos encontrado un caso en que no se asigna el request fresco.

    Tendría sentido probar con boolean coreViaAJAX = false; en module.jsp

    Bueno, funciona así por defecto. Lo que podemos probar es coreViaAJAX = true.


    Aprende OpenXava con ejemplos: Consigue el libro

     
  • donkelito

    donkelito - 2011-06-14

    Hola Javier,

    Primero agradecerte los consejos que nos has indicado,

    Segundo por desgracia adelantarte que vemos imposible modificar lo suficiente OpenXava 4.1.2 para que tenga un comportamiento normal en Weblogic 10.3.4 (esta versión es la que necesita porque incorpora soporte a JPA 2) con Liferays ni 5.1.2 ni 6.0.6

    Por esta razón, entiendo la incompatibilidad de estos tres entornos: Openxava 4.1.2 + Weblogic 10.3.X+ Liferay -  ni 5.1.2 ni 6.0.6  - Y es la mezcla de los tres porque.
    * liferay + tomcat + nuestra app ox  formato porlet  funciona ok
    * weblogic + nuestra app ox formato app funciona ok

    Es curioso que Openxava 4m1 si funcionaba (con los retoques relacionados con parámetros), por eso no comprendíamos que fallase en 4.1.2 pero debe estar muy relacionado con todos los cambios relacionados con la serialización ya que: pierde contexto, pierde parámetros, etc. que hacen en las ejecuciones que el comportamiento no sea normal.

    Me gustaría preguntarte tres cosas, ya abusando de confianza:

    * ¿ tu crees que tiene solución  este problema o directamente abandonamos la posibilidad. ?

    * Como solucionar un problema que tenemos importantillo con la 4m1 solucionado en la 4.1.2 y anteriores que te indicamos en https://sourceforge.net/projects/openxava/forums/forum/437013/topic/4474595?message=9907874 Si solucionamos esto quizá podemos seguir con la 4m1 durante un tiempo

    * Openxava 4.1.2 es viable desplegándolo como aplicación en Weblogic (no como porlet), éste funciona correctamente (sin Liferay por medio) ¿ves viable hacerse un login y menu dentro del propio war del proyecto OpenXava o esto por arquitectura es inviable?

    Sinceramente  a pesar del temporal que estamos sufriendo creo que OpenXava es un gran framework pero este problema se está convirtiendo en un full-stopper porque comprendemos que Weblogic con un Liferay es un escenario típico en un entorno J2EE

    Saludos y de nuevo mil gracias por prestarnos ayuda.

     
  • Javier Paniza

    Javier Paniza - 2011-06-16

    Hola Donkelito,

    ¿ tu crees que tiene solución este problema o directamente abandonamos la posibilidad. ?

    Yo creo que tiene solución, estás cosas suelen funcionar, pero a veces hay que sufrir mucho, y tener suerte. Después de hacer que las aplicaciones OpenXava funcionen en un WebSphere Portal sobre AS/400 creo que todo es posible.

    Como solucionar un problema que tenemos importantillo con la 4m1 solucionado en la 4.1.2 y anteriores que te indicamos en https://sourceforge.net/projects/openxava/forums/forum/437013/topic/4474595?message=9907874 Si solucionamos esto quizá podemos seguir con la 4m1 durante un tiempo

    Como allí digo no tengo localizado el código que resuelve el problema. Habría que volver a solucionarlo para la 4m1, y hacer una 4m1sp1 o algo así.

    ¿ves viable hacerse un login y menu dentro del propio war del proyecto OpenXava o esto por arquitectura es inviable?

    Es totalmente viable. De hecho, parte de la comunidad OpenXava lo hace así.

    comprendemos que Weblogic con un Liferay es un escenario típico

    Sí, yo a veces me he encontrado con casos de esos en lo que piensas que es imposible que cosas tan básicas fallen, y lo hacen, y te dices a tí mismo: ¿Habré sido yo el primero en llegar aquí? Aunque en este caso hay esperanza, porque OX4m1 funciona, así que es posible.

    se está convirtiendo en un full-stopper

    Bueno como ya te he comentado siempre tienes la opción de la ayuda profesional, tanto para arreglar el bug en OX4m1 como para hacer que OX4.2.x funcione en weblogic + liferay.

     

Log in to post a comment.