我正在管理使用应用程序运行tomcat6的服务器,由我们的程序员编写。它使用ActiveMQ。应用程序将ActiveMQ队列数据保存在$ JAVA_TEMP / activemq-data中。 Debian Squeeze上的Tomcat6在每次重启时清除$ JAVA_TEMP(默认情况下为/ tmp / tomcat6-temp)。程序员说,这个数据必须在服务重启之间保持不变。 java servlet保存持久数据的适当位置是什么?恕我直言,这不是$ JAVA_TEMP目录。或者可能是程序员是对的,我应该更改默认的Debian tomcat行为?
答案 0 :(得分:2)
ActiveMQ提供持久性适配器来存储服务器重启所需的消息。持久化消息有不同的策略。
基于文件的持久性存储:在此策略中,消息存储在文件存储中。您可以在ActiveMQ配置中指定目录。请参阅下面的示例,有关配置的更多详细信息,请参阅:http://activemq.apache.org/amq-message-store.html
<broker brokerName="broker" persistent="true" useShutdownHook="false">
<persistenceAdapter>
<amqPersistenceAdapter directory="activemq-data" maxFileLength="32mb"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
基于数据库的持久性存储:在此策略中,消息存储在数据库中,如果您的消息很关键,请使用此消息。有关配置JDBC - 数据库持久性的信息,请参阅http://activemq.apache.org/jdbc-support.html
答案 1 :(得分:0)
当谈到java servlet的存储时,可以考虑可伸缩性。通常,Java servlet的构建和设计可以同时在多个服务器(tomcat实例等)上进行部署,以进行垂直扩展。因此,thumbe规则是尽可能使用数据库存储。在您的特定情况下,您似乎运行单个服务器,您可以使用所需文件系统上的任何位置。您可能希望将数据存储在NAS / SAN上。
ActiveMQ可以通过持久性适配器处理大多数存储选项。
这个link描述了ActiveMQ如何处理持久性以及如何配置它。它是一个丰富的域,它依赖于很多要求以及你喜欢设置的方式。