Установите VaadinServlet ProductonMode, если он объявлен как Bean

Мы используем Vaadin7 в более крупном приложении OSGI (karaf 4) и объявляем VaadinServlet с помощью схемы:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint default-activation="eager" xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<!-- Vaadin servlet serving static Vaadin resources -->
<service interface="javax.servlet.Servlet">
  <service-properties>
    <entry key="servlet-name" value="Vaadin Resources" />
    <entry key="alias" value="/VAADIN-ui" />
    <entry key="contextId" value="app-vaadin" />
  </service-properties>
  <bean class="com.vaadin.server.VaadinServlet" />
</service>

By default Vaadin runs in debug mode and has a setting of ProductionMode which needs to set to true. This can done as a context-param but the application does not use a web.xml file. I've tried to set it as property of the bean but it is not recognised.


person JamesP    schedule 15.06.2017    source источник


Ответы (1)


Вы можете расширить VaadinServlet и использовать аннотацию VaadinServletConfiguration.

Из документов:

Аннотация для настройки подклассов VaadinServlet. Для класса VaadinServlet с этой аннотацией определенные значения считываются во время инициализации и будут доступны с помощью DeploymentConfiguration.getApplicationOrSystemProperty(String, String), а также из определенных методов в DeploymentConfiguration. Параметры инициализации, определенные в web.xml или аннотации @WebServlet, имеют приоритет над значениями, определенными в этой аннотации.

Вы можете использовать его следующим образом:

@VaadinServletConfiguration(productionMode = false)
public class MyAppServlet extends VaadinServlet {
}
person mczerwi    schedule 15.06.2017
comment
Не уверен, как это сделать, поскольку ни один из кодов JAVA не объявляет VaadinServlet, он упоминается только в XML-схеме. На самом деле есть пара сервлетов, объявленных в разных пакетах. Тот, что выше, предназначен только для обработки ресурсов, другой запускает класс UIProvider. - person JamesP; 16.06.2017
comment
Вы используете реализацию по умолчанию VaadinServlet (com.vaadin.server.VaadinServlet), поэтому ее нет в вашем Java-коде. Вы можете создать свой собственный класс сервлета, расширяющий класс по умолчанию (он может быть пустым, как в приведенном выше примере), а затем установить его в своем проекте xml. Чтение официальных документов может помочь вам лучше понять это. . - person mczerwi; 17.06.2017
comment
Спасибо, я прочитал много документов, но не нашел эту страницу. - person JamesP; 19.06.2017