2010-07-17 3 views
0

Я хочу установить путь в своем web.xml, который относится к WEB-INF или WEB-INF/классам.Установить путь в web.xml относительно WEB-INF

Однако, следующий код (repository.home), кажется, подбирает путь относительно пути c: root на моем компьютере с Windows здесь.

<servlet> 
    <servlet-name>ContentRepository</servlet-name> 
    <servlet-class>org.apache.jackrabbit.servlet.jackrabbit.JackrabbitRepositoryServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    <init-param> 
     <param-name>repository.home</param-name> 
     <param-value>/WEB-INF/classes/testit</param-value> 
    </init-param> 
</servlet> 

<servlet> 
    <servlet-name>JackrabbitServlet</servlet-name> 
    <servlet-class>com.orsa.seam.JackrabbitServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

ответ

1

Этот параметр в порядке, то есть, когда вы читаете это, то это будет еще строка со значением:

/WEB-INF/classes/testit
параметр в файле web.xml только параметр - это не «путь».

Итак, вопрос в том, что вы делаете с этим параметром?

Поскольку вы пытаетесь получить доступ к ресурсам (файлам) внутри контейнера сервлетов, вам необходимо использовать определенные методы, например. что-то вроде

ServletContext#getRealPath()

, чтобы получить реальный путь, например./WEB-INF/классы/TestIt, чем

  • добавить к этому то, что вам нужно (таким образом, имея полный путь к этим файлам внутри этого каталога), или вычесть его из других «полных путей», таким образом, имея относительные пути к нему. Например. если у вас есть /testit/test1.txt '' /testit/test2.txt, вы можете получить доступ к этим файлам, просто добавив их к реальному пути, полученному выше.

  • Или вычтите этот путь из других «полных путей», таким образом, имея относительный путь к вашему параметру. Например. если у вас есть полный путь (c: /tomcat/webapps/myapp/WEB-INF/data/testit/test.txt), вам просто нужно вычесть полный путь к вашему параметру, поэтому вы получите относительный путь: '/testit/test2.txt'