Java Web应用程序需要记住对象状态-需要解决方案的建议

Java Web应用程序需要记住对象状态-需要解决方案的建议,java,javascript,object,servlets,state,Java,Javascript,Object,Servlets,State,我正在构建一个软件系统,它使用Javascript显示一个可编辑的服务器任务队列(假设程序xyz在服务器上一次只执行一个任务) 浏览器UI(O-O JavaScript和JQuery) 阿贾克斯 [有问题的缺失技术] Linux PHP(触发应用程序运行的脚本) 现在UI队列工作得很好,但是如果有人关闭浏览器,JavaScript队列UI应用程序的状态就会丢失(我的linux机器上的程序应该执行的所有任务) 那么,如何实现这一点呢?我需要一个Web应用程序,它作为服务运行在我的RedHat服务器

我正在构建一个软件系统,它使用Javascript显示一个可编辑的服务器任务队列(假设程序xyz在服务器上一次只执行一个任务)

  • 浏览器UI(O-O JavaScript和JQuery)
  • 阿贾克斯
  • [有问题的缺失技术]
  • Linux PHP(触发应用程序运行的脚本)
  • 现在UI队列工作得很好,但是如果有人关闭浏览器,JavaScript队列UI应用程序的状态就会丢失(我的linux机器上的程序应该执行的所有任务)

    那么,如何实现这一点呢?我需要一个Web应用程序,它作为服务运行在我的RedHat服务器上,与我编写的面向对象JavaScript应用程序通信。服务器任务已经通过PHP征用


    这在PHP中是可能的吗?我想避免在这个时候有一个数据库。Java/Tomcat解决方案也浮现在脑海中。你怎么认为?感谢您阅读本文。

    您需要将服务器上的队列状态至少保存到内存,最好也保存到磁盘。要在内存中表示,请创建两个类
    Queue
    QueueEntry
    ,前者由后者组成。如果您只保留到内存,那么如果服务器进程重新启动,您将丢失队列状态—因此,如果您希望通过重新启动来保持状态,请将数据写入磁盘。假设使用Java,请执行必要的操作来生成这些类,并使用a将其写入磁盘以避免争用

    使用DB更新以反映


    使用队列条目表代替序列化。添加一列以指示订单-最可能的插入日期

    您需要将服务器上的队列状态至少保存到内存,最好也保存到磁盘。要在内存中表示,请创建两个类
    Queue
    QueueEntry
    ,前者由后者组成。如果您只保留到内存,那么如果服务器进程重新启动,您将丢失队列状态—因此,如果您希望通过重新启动来保持状态,请将数据写入磁盘。假设使用Java,请执行必要的操作来生成这些类,并使用a将其写入磁盘以避免争用

    使用DB更新以反映


    使用队列条目表代替序列化。添加一列以指示订单-最可能的插入日期

    “我想避免在这个时候有一个数据库”为什么?这是保存数据的正常机制。是的,java可以在服务器上存储状态,php也可以,而且有多种不同的方式。在这种情况下,我对DB解决方案持开放态度……“我现在不想拥有数据库”为什么?这是保存数据的正常机制。是的,java可以在服务器上存储状态,php也可以,而且有多种不同的方式。在这种情况下,我愿意使用DB解决方案……很好的解决方案。最优雅的方式是什么;如果你使用的是OO语言,那么对象就可以用它来写,如果不是对象,我可能会使用哈希数组。至于序列化——这是为了解决没有DB的限制——大多数OO语言都内置了某种序列化(请参阅PHP序列化:),否则您需要使用自己的格式——最有可能的是XML或JSON.PHP文档说:“使用serialize保存对象将保存对象中的所有变量”。这对我来说太模糊了。对值的引用是保存的还是变量本身的值?在DB中存储对象及其状态听起来很不错-我想使用MySQL时,我也必须使用serializable,或者有一个面向对象的DB?不错的解决方案的建议。最优雅的方式是什么;如果你使用的是OO语言,那么对象就可以用它来写,如果不是对象,我可能会使用哈希数组。至于序列化——这是为了解决没有DB的限制——大多数OO语言都内置了某种序列化(请参阅PHP序列化:),否则您需要使用自己的格式——最有可能的是XML或JSON.PHP文档说:“使用serialize保存对象将保存对象中的所有变量”。这对我来说太模糊了。对值的引用是保存的还是变量本身的值?在DB中存储对象及其状态听起来很不错——我想使用MySQL时,我也必须使用serializable,或者对面向对象的DB有什么建议?