在JSF中,在哪里关闭打开的客户端或使用java垃圾收集?
我将JSF portlet与Liferay一起使用。在bean的构造函数中,我创建了一些对象和一些客户端来访问一些服务器。我不知道在刷新页面或重定向任何其他页面时,应该在何处解构这些对象或使用垃圾收集器并关闭这些客户端在JSF中,在哪里关闭打开的客户端或使用java垃圾收集?,jsf,elasticsearch,liferay,portlet,Jsf,elasticsearch,Liferay,Portlet,我将JSF portlet与Liferay一起使用。在bean的构造函数中,我创建了一些对象和一些客户端来访问一些服务器。我不知道在刷新页面或重定向任何其他页面时,应该在何处解构这些对象或使用垃圾收集器并关闭这些客户端 谢谢你的帮助。不要使用构造函数。如果您使用的是CDI,则肯定不会。当然,在清理昂贵的资源时,不要依赖GC。只需在所需的方法上使用注释和注释。当bean范围开始和结束时,bean管理框架将自己显式地调用它们 public class Bean { @PostConstru
谢谢你的帮助。不要使用构造函数。如果您使用的是CDI,则肯定不会。当然,在清理昂贵的资源时,不要依赖GC。只需在所需的方法上使用注释和注释。当bean范围开始和结束时,bean管理框架将自己显式地调用它们
public class Bean {
@PostConstruct
public void init() {
// ...
}
@PreDestroy
public void destroy() {
// ...
}
}
这适用于JSF和CDI管理的bean。只有在JSF 2.0-2.1中使用
@ViewScoped
时,才不能保证在所有情况下调用@PreDestroy
。如果您在Servlet(即非Portlet)环境中使用CDI,则解决了JSF 2.0-2.1@ViewScoped
@PreDestroy
失败的问题。谢谢您的建议。