tapestry持久对象失败

时间:2014-03-05 12:48:16

标签: tapestry

我们目前正在使用java 1.7将我们的tapestry应用程序迁移到新服务器。应用程序运行顺利,直到此迁移导致应用程序中的大多数功能出现故障。经过分析,我们发现用@Persist注释的对象不再是持久化的。

btw:

相同的Tomcat版本

相同的操作系统

使用tapetsry 5.3.6和相关的罐子。

它是否与java版本或其他东西todo?有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

通常@Persist的默认值为" Session"在你的情况下,理论上应该是真的。但正如你所说,情况已不再如此。

Persist倾向于遍历整个层次结构以确定其默认值。

也许在你的情况下,某个类中的某个人,即更高层次的人,使用了注释@Meta("tapestry.persistence-strategy=flash"),它会自动将你程序中的所有@Persist设置为&#34; flash&#34;。< / p>

如果你实现了一个HttpSesseionListener并通过那个调试,你可以试着找出发生了什么,这样你就可以知道你的会话是否正在创建。

   import java.util.Date; 
   import javax.servlet.http.HttpSession; 
   import javax.servlet.http.HttpSessionEvent; 
   import javax.servlet.http.HttpSessionListener; 


public class MyHttpSessionListener implements HttpSessionListener { 
    public void sessionCreated(HttpSessionEvent se) 
    { 
        HttpSession session = se.getSession(); 
        System.out.print(getTime() + " (session) Created:"); 
        System.out.println("ID=" + session.getId() + " MaxInactiveInterval=" 
+ session.getMaxInactiveInterval()); 
    } 
    public void sessionDestroyed(HttpSessionEvent se) 
    { 
        HttpSession session = se.getSession(); 
        // session has been invalidated and all session data (except Id)is 
no longer available 
        System.out.println(getTime() + " (session) Destroyed:ID=" + 
session.getId()); 
    } 
    private String getTime() 
    { 
        return new Date(System.currentTimeMillis()).toString(); 
    }
}

如果您应该尝试使用Listener,请使用以下命令在web.xml中调用它:

<listener>
   <listener-class>YOURPACKAGENAME.MyHttpSessionListener</listener-class>
</listener>

说实话,在网络上找不到Tapestry更复杂问题的帮助很多,我觉得很难过。

通过在创建变量会话后的某个位置在Listener中设置断点,您应该能够看到问题的开始时间和地点(或者可能不是因为永远不会创建会话,这意味着@某人确实改变了持久性默认值

我自己的项目有很多麻烦,到目前为止还没有找到任何答案。

希望这个能给你一个正确方向的推动,这样你就能找到问题的根源。