我的课程必须经过一个学习步骤,大约需要15分钟才能完成。这种学习的结果是存储在两个公共对象中的两个模型,然后将在其他类中使用。我把这个学习步骤放在以下方法中:
public void init()
以便在服务器启动时执行。问题是,每次服务器重新加载时,它都会重新执行学习步骤。我必须再等15分钟才能看到一个小变化的影响。我想知道是否有办法在整个程序和服务器的运行过程中保留一些对象的值。这是我的代码:
public static Model model1;
public static Model model2;
@Override
public void init()
{
model1= readModel(source1)
model2= readModel(source2)
}
PS。我正在使用带有JSP页面和Tomcat服务器的Servlet。
答案 0 :(得分:-1)
作为一般解决方案,我建议您将学习部分和模型保留在服务容器之外。可能是不同的VM /进程。这样,只要需要运行该进程,您就可以保留模型,而与您的tomcat客户端进程的状态无关。
<强>详细强>
您可以通过几个步骤实现这一目标
<强>替代地强>
正如我在评论中建议的那样,一旦模型被训练,您也可以将模型二进制文件转储到文件系统。在tomcat启动时缓存模型。 io将比学习阶段快得多。
答案 1 :(得分:-1)
根据需要将其设置为会话或应用程序范围的bean,并将其作为bean而不是普通对象访问。
答案 2 :(得分:-1)
你可以看看here? 想法是在某个地方保存会话并将模型对象放在那里或者只使用Hazelcast(可能是过度杀戮:))