2013-12-04 1 views
2

Я использую Tomcat's Jasper HowTo для установки параметров init для своих сервлетов. Но я не понял, как установить эти параметры глобально в файле web.xml. Как избежать дублирования моих инициализационных параметров в каждом описании сервлета?Как установить параметры инициализации Jasper глобально для всех сервлетов в web.xml Tomcat?

<web-app version="3.0" 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_3_0.xsd" 
     metadata-complete="true"> 

    <servlet> 
     <servlet-name>foo</servlet-name> 
     <jsp-file>/WEB-INF/foo/foo.jsp</jsp-file> 
     <init-param> 
      <param-name>compilerTargetVM</param-name> 
      <param-value>1.7</param-value> 
     </init-param> 
    </servlet> 

    <servlet> 
     <servlet-name>bar</servlet-name> 
     <jsp-file>/WEB-INF/bar/bar.jsp</jsp-file> 
     <init-param> 
      <param-name>compilerTargetVM</param-name> 
      <param-value>1.7</param-value> 
     </init-param> 
    </servlet> 

</web-app> 

ответ

4

Я считаю, что ответ находится в связанном документе:

сервлет, который реализует Джаспера конфигурируется с помощью параметров инициализации в вашем глобальном $CATALINA_BASE/conf/web.xml

Так открыть этот файл и добавить соответствующие init-params в сервлете Jasper (<servlet-name>jsp</servlet-name>).

Это установит параметры для всего сервера. Я не пытался устанавливать параметры только для одного приложения; это may можно повторить объявление сервлета jsp и отображение из глобального web.xml в собственный и добавить init-params. (Тем не менее, для паров вы устанавливаете, compilerTargetVM, это имеет смысл, чтобы применить его глобально для всего сервера.)


У меня не было Tomcat доступного поэтому я тестировал сейчас с Tomcat версией 7.0.47: Вы можете добавить <servlet>jsp</servlet> в web.xml приложения (копируя его из глобального conf/web.xml и изменяя то, что вы хотите) и его DOES работа. То есть все JSP в этом приложении запускаются с требуемыми параметрами инициализации, тогда как другие приложения не затрагиваются.

+0

upvoted вашего ответу, спасибо – Keerthivasan

+0

@Nikos: вы нашли какие-либо ссылки на документах об этом поведении? Я думал, что это глобальная настройка, и я был удивлен, что теперь он работает и в приложении web.xml. Пробовал это на месте, и действительно, кажется, он работает. – rlegendi

+0

@rlegendi На самом деле нет, но мой мыслительный процесс заключается в том, что JSP - это не что-то особенное, а другое расширение файла (' * .jsp'), обработанное сервлетами (сервлетами jsp), которые * произойдет *, который будет предоставляться сервером и настроен на уровне сервера. Таким образом, можно переопределить конфигурацию на уровне веб-приложений. Это, скорее всего, специфично для реализации, поэтому теперь он предназначен для Tomcat * сейчас *, но может быть неверен для Jetty или для следующей версии Tomcat. –

1

Как Никос сказал, Вы можете установить параметры, например JSPServlet путем редактирования web.xml в $ {TOMCAT_HOME}/конф каталог. Таким образом, это свойство будет установлено в экземпляре org.apache.jasper.servlet.JspServlet во время запуска сервера. В вашем случае, чтобы установить параметр compilerTargetVM, вы можете отредактировать JspServlet декларации

<servlet> 
     <servlet-name>jsp</servlet-name> 
     <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
     <init-param> 
      <param-name>fork</param-name> 
      <param-value>false</param-value> 
     </init-param> 
     <init-param> 
      <param-name>xpoweredBy</param-name> 
      <param-value>false</param-value> 
     </init-param> 
     <!-- Added the user parameter --> 
      <init-param> 
      <param-name>compilerTargetVM</param-name> 
      <param-value>1.7</param-value> 
     </init-param> 
     <load-on-startup>3</load-on-startup> 
</servlet> 

Надеется, что это помогает

+0

Итак, добавление этой записи сервлета в мое приложение web.xml не будет работать? – neu242

+0

Да, вы должны сделать это на уровне сервера – Keerthivasan

+0

Нет, вы ** МОЖЕТ ** сделать это в приложении web.xml, протестированном прямо сейчас с Tomcat 7.0.47, см. Edit в моем ответе. –