Если вы действительно хотите сделать это в среде сервлетов, в вашем веб-приложении потенциально могут быть два сервлета: один для приложения / компонента Restlet и один для вашей инициализации, используя load-on-startup
(который вы не обязательно отобразите на любой URL, насколько я знаю, вы не обязаны). Таким образом, вам не придется создавать подкласс org.restlet.ext.servlet.ServerServlet
. Я думаю, что это, вероятно, проще, так как этот сервлет инициализации будет просто содержать init()
, но это будет работать только для вещей, которые не зависят от приложения / компонента Restlet, которые будут инициализироваться первыми.
<context-param>
<param-name>org.restlet.clients</param-name>
<param-value>HTTP HTTPS CLAP FILE</param-value>
</context-param>
<servlet>
<servlet-name>ExampleInit</servlet-name>
<servlet-class>example.TestInitServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Example</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>example.TestApplication</param-value>
</init-param>
<init-param>
<param-name>org.restlet.autoWire</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Example</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
В качестве альтернативы (или, возможно, в дополнение к этому), я склонен использовать JNDI для инициализации соединений с базой данных и некоторых других параметров конфигурации. Это также позволяет мне сохранять одинаковые механизмы конфигурации и загрузки, независимо от того, использую ли я автономный сервер Restlet или Restlet в веб-приложении.
Например, для развертывания в контейнере сервлета (например, Jetty или Tomcat) я использую конфигурацию JNDI контейнера, но для локальных тестов (с автономным приложением Restlet) я использую фабрику контекста JNDI Jetty (которую можно получить как отдельная банка от остальной части пристани).