2

我用 @CDIUI 注释了我的 UI,并且不使用 web.xml 进行绑定。但是如何设置上下文参数,如 debugMode、heartbeatIntervall、closeIdleSessions ...?有没有办法注释这些功能或将它们传递到 UI 实例中?还是我必须提供 web.xml 吗?System.getProperty(JBoss 属性处理)呢?感谢您提供任何线索。

4

3 回答 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 回答