我用@cdiui注解了我的ui,不使用web.xml进行绑定。但是如何设置诸如debugmode、heartbeatintervall、closeidresessions之类的上下文参数呢?有没有一种方法可以注解这些特性或者在ui示例中传递它们?还是必须提供web.xml?system.getproperty(jboss属性处理)呢?谢谢你的线索。
6ovsh4lw1#
虽然wypiprz提出的解决方案可以在应用程序中手动检索上下文参数,但实际上并不是一路有效。特别是 setConfiguration() 对vaadin来说太晚了,无法真正使用配置的心跳间隔等。下面是我让它工作的一种方法。基本上是这里找到的解决方案,但有一个额外的 @WebInitParam 使cdi在内联servlet配置存在的情况下再次正确引导。
setConfiguration()
@WebInitParam
@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 { }
bkhjykvo2#
试着实现你自己的 DeploymentConfiguration 按以下方式:
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 以标准方式上课:
ExampleUI
VaadinSession.getCurrent().getConfiguration().getHeartbeatInterval(); VaadinSession.getCurrent().getConfiguration().isCloseIdleSessions();
我希望这有帮助。
ou6hu8tu3#
此外,可以在属性文件中设置这些参数
vaadin.servlet.productionMode=true vaadin.servlet.heartbeatInterval=55
3条答案
按热度按时间6ovsh4lw1#
虽然wypiprz提出的解决方案可以在应用程序中手动检索上下文参数,但实际上并不是一路有效。
特别是
setConfiguration()
对vaadin来说太晚了,无法真正使用配置的心跳间隔等。下面是我让它工作的一种方法。基本上是这里找到的解决方案,但有一个额外的@WebInitParam
使cdi在内联servlet配置存在的情况下再次正确引导。bkhjykvo2#
试着实现你自己的
DeploymentConfiguration
按以下方式:然后可以在外部获取上下文参数
ExampleUI
以标准方式上课:我希望这有帮助。
ou6hu8tu3#
此外,可以在属性文件中设置这些参数