Файл web.xml
является стандартным дескриптором веб-приложения Java EE, и должен быть создан для блоков Middleware, Web Client и Web Portal.
В проекте приложения файлы web.xml
располагаются в каталогах web/WEB-INF
соответствующих модулей.
Рассмотрим содержимое web.xml
блока Middleware (модуль core проекта):
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <!-- Application properties config files --> <context-param> <param-name>appPropertiesConfig</param-name> <param-value> classpath:cuba-app.properties classpath:app.properties file:${catalina.home}/conf/app-core/local.app.properties </param-value> </context-param> <listener> <listener-class>com.haulmont.cuba.core.sys.AppContextLoader</listener-class> </listener> <servlet> <servlet-name>remoting</servlet-name> <servlet-class>com.haulmont.cuba.core.sys.remoting.RemotingServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>remoting</servlet-name> <url-pattern>/remoting/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>restapi</servlet-name> <servlet-class>com.haulmont.cuba.core.sys.restapi.RestApiServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>restapi</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping> </web-app>
В элементах context-param
задаются инициализирующие параметры объекта ServletContext
данного веб-приложения. Здесь определен параметр appPropertiesConfig
, значением которого является список файлов свойств приложения.
В элементе listener
задается класс слушателя, реализующего интерфейс ServletContextListener
. В блоке Middleware CUBA-приложения в качестве слушателя должен использоваться класс AppContextLoader
, выполняющий инициализацию
AppContext
.
Далее следуют определения сервлетов, среди которых обязательным для Middleware является класс RemotingServlet
, связанный с контейнером удаленного доступа (см. Раздел A.8, «remoting-spring.xml»). Данный сервлет отображен на URL /remoting/*
.
Рассмотрим содержимое web.xml
блока Web Client (модуль web проекта):
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <context-param> <description>Vaadin production mode</description> <param-name>productionMode</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>appPropertiesConfig</param-name> <param-value> classpath:cuba-web-app.properties classpath:web-app.properties file:${catalina.home}/conf/app/local.app.properties </param-value> </context-param> <listener> <listener-class>com.haulmont.cuba.web.sys.WebAppContextLoader</listener-class> </listener> <servlet> <servlet-name>app_servlet</servlet-name> <servlet-class>com.haulmont.cuba.web.sys.CubaApplicationServlet</servlet-class> <init-param> <param-name>application</param-name> <param-value>com.haulmont.sales.web.App</param-value> </init-param> <init-param> <param-name>widgetset</param-name> <param-value>com.haulmont.cuba.web.toolkit.ui.WidgetSet</param-value> </init-param> <init-param> <param-name>UI</param-name> <param-value>com.haulmont.cuba.web.AppUI</param-value> </init-param> <init-param> <param-name>UIProvider</param-name> <param-value>com.haulmont.cuba.web.sys.CubaUIProvider</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>app_servlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <filter> <filter-name>cuba_filter</filter-name> <filter-class>com.haulmont.cuba.web.sys.CubaHttpFilter</filter-class> </filter> <filter-mapping> <filter-name>cuba_filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
В данном файле определены два параметра: appPropertiesConfig
, значением которого является список файлов свойств приложения, и productionMode
, отключающий режим отладки фреймворка Vaadin.
В качестве ServletContextListener
в блоке Web Client используется класс WebAppContextLoader
.
Далее определяется сервлет CubaApplicationServlet
, входящий в состав основанной на фреймворке Vaadin реализации универсального пользовательского интерфейса. Сервлет имеет несколько параметров, в том числе:
-
application
- задает специфический для проекта класс клиентского приложения, который должен быть наследникомcom.haulmont.cuba.web.App
-
widgetset
- задает набор GWT компонентов, используемых на стороне веб-браузера
После определения сервлетов подключается фильтр CubaHttpFilter
, необходимый для функционирования блока Web Client.