java—使用vaadin cdi时以编程方式设置上下文参数

xxb16uws  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(354)

我用@cdiui注解了我的ui,不使用web.xml进行绑定。但是如何设置诸如debugmode、heartbeatintervall、closeidresessions之类的上下文参数呢?有没有一种方法可以注解这些特性或者在ui示例中传递它们?还是必须提供web.xml?system.getproperty(jboss属性处理)呢?谢谢你的线索。

6ovsh4lw

6ovsh4lw1#

虽然wypiprz提出的解决方案可以在应用程序中手动检索上下文参数,但实际上并不是一路有效。
特别是 setConfiguration() 对vaadin来说太晚了,无法真正使用配置的心跳间隔等。下面是我让它工作的一种方法。基本上是这里找到的解决方案,但有一个额外的 @WebInitParam 使cdi在内联servlet配置存在的情况下再次正确引导。

  1. @WebServlet(value = { "/*", "/VAADIN/*"
  2. initParams = {
  3. @WebInitParam(name = Constants.SERVLET_PARAMETER_UI_PROVIDER, value = "com.vaadin.cdi.CDIUIProvider")
  4. })
  5. @VaadinServletConfiguration(productionMode = false,
  6. ui = MyVaadinUI.class,
  7. closeIdleSessions = true,
  8. heartbeatInterval = 10)
  9. public static class Servlet extends VaadinServlet
  10. {
  11. }
bkhjykvo

bkhjykvo2#

试着实现你自己的 DeploymentConfiguration 按以下方式:

  1. public class ExampleUI extends UI {
  2. private class ExampleConfiguration implements DeploymentConfiguration {
  3. @Override
  4. public int getHeartbeatInterval() {
  5. return 30;
  6. }
  7. @Override
  8. public boolean isCloseIdleSessions() {
  9. return true;
  10. }
  11. }
  12. @Override
  13. protected void init(VaadinRequest request) {
  14. getSession().setConfiguration(new ExampleConfiguration());
  15. ...
  16. }
  17. }

然后可以在外部获取上下文参数 ExampleUI 以标准方式上课:

  1. VaadinSession.getCurrent().getConfiguration().getHeartbeatInterval();
  2. VaadinSession.getCurrent().getConfiguration().isCloseIdleSessions();

我希望这有帮助。

展开查看全部
ou6hu8tu

ou6hu8tu3#

此外,可以在属性文件中设置这些参数

  1. vaadin.servlet.productionMode=true
  2. vaadin.servlet.heartbeatInterval=55

相关问题