我使用@CDIUI注释了我的UI,并且不使用web.xml进行绑定。但是如何设置上下文参数,如debugMode,heartbeatIntervall,closeIdleSessions ......?有没有办法在UI实例中注释这些功能或传递它们?或者我还要提供web.xml吗?那么System.getProperty(JBoss属性处理)呢?谢谢你的任何线索。
答案 0 :(得分: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();
我希望这会有所帮助。
答案 1 :(得分:2)
虽然wypieprz提出的解决方案可以在您的应用程序中手动检索上下文参数,但它实际上并不是一直有效。
特别是setConfiguration()
为Vaadin实际使用配置的心跳间隔等发生得太迟了。
以下是我开始工作的一种方式。基本上,它是找到here的解决方案,但是在存在内联servlet配置的情况下,还需要额外的@WebInitParam
来使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
{
}
答案 2 :(得分:0)
此外,这些参数可以在属性文件中设置
vaadin.servlet.productionMode=true
vaadin.servlet.heartbeatInterval=55