我用 @CDIUI 注释了我的 UI,并且不使用 web.xml 进行绑定。但是如何设置上下文参数,如 debugMode、heartbeatIntervall、closeIdleSessions ...?有没有办法注释这些功能或将它们传递到 UI 实例中?还是我必须提供 web.xml 吗?System.getProperty(JBoss 属性处理)呢?感谢您提供任何线索。
问问题
1336 次
3 回答
2
尝试DeploymentConfiguration
通过以下方式实现您自己的:
public class ExampleUI extends UI {
private class ExampleConfiguration implements DeploymentConfiguration {
@Override
public int getHeartbeatInterval() {
return 30;
}
@Override
public boolean isCloseIdleSessions() {
return true;
}
}
@Override
protected void init(VaadinRequest request) {
getSession().setConfiguration(new ExampleConfiguration());
...
}
}
ExampleUI
然后您可以以标准方式获取类外部的上下文参数:
VaadinSession.getCurrent().getConfiguration().getHeartbeatInterval();
VaadinSession.getCurrent().getConfiguration().isCloseIdleSessions();
我希望这有帮助。
于 2013-09-08T11:40:47.250 回答
2
虽然 wypieprz 提出的解决方案可以在您的应用程序中手动检索上下文参数,但它实际上并不是一直有效。
特别是setConfiguration()
对于 Vaadin 来说,实际使用配置的心跳间隔等为时已晚。下面是我让它工作的一种方式。基本上它是在这里找到的解决方案,但@WebInitParam
在存在内联 servlet 配置的情况下,还需要让 CDI 再次正确引导。
@WebServlet(value = { "/*", "/VAADIN/*"
initParams = {
@WebInitParam(name = Constants.SERVLET_PARAMETER_UI_PROVIDER, value = "com.vaadin.cdi.CDIUIProvider")
})
@VaadinServletConfiguration(productionMode = false,
ui = MyVaadinUI.class,
closeIdleSessions = true,
heartbeatInterval = 10)
public static class Servlet extends VaadinServlet
{
}
于 2014-06-20T13:40:41.240 回答
0
此外,这些参数可以在属性文件中设置
vaadin.servlet.productionMode=true
vaadin.servlet.heartbeatInterval=55
于 2019-03-29T08:58:25.867 回答