как создать файл War для веб-сервиса RESTful, разработанного в Eclipse IDE - PullRequest
0 голосов
/ 07 октября 2010

Я создал образец веб-службы REST, которая записывает некоторые данные в XML-файл. Теперь я жестко запрограммировал путь, куда должен быть записан XML-файл. Я хочу знать, как объявить этот локальный путь к файлу в файле web.xml в качестве параметра сервлета и как получить путь оттуда и использовать его в codebe. Также мне нужно создать WAR-файл для сервиса, который нужно развернуть в tomcat. Этот военный файл должен принимать этот параметр из файла web.xml. Я использовал eclipse IDE для разработки веб-сервиса. Может кто-нибудь сказать мне, как сделать вышеупомянутые вещи?

Здесь я прикрепил код сервлета, присутствующий в файле web.xml.

<servlet>
  <servlet-name>Jersey REST Service</servlet-name>
<servlet-class>
  com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>com.sample.service</param-value>
  </init-param>
  <init-param>
    <param-name>filepath</param-name>
    <param-value>filepath value</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>Jersey REST Service</servlet-name>
  <url-pattern>/api/*</url-pattern>
</servlet-mapping>

com.sample.service - это пакет, в котором у меня есть класс веб-службы Rest.

1 Ответ

2 голосов
/ 07 октября 2010

Предполагая, что вы создали его как динамический веб-проект в Eclipse, просто щелкните правой кнопкой мыши имя проекта

,> Экспорт> WAR-файл

и заполнитеподробности, которые он запрашивает.

В вашем файле web.xml вы можете определить свой путь к файлу, как показано ниже

<servlet>  
<servlet-name>MyServletName</servlet-name>  
<servlet-class>com.mycompany.MyServlet</servlet-class>  
<init-param>  
<param-name>filepath</param-name>  
<param-value>D:\hard-coded-path.xml</param-value>  
</init-param>  
</servlet> 

* Обновлено с правильным ответом в соответствии с комментариями *

Вы получаете исключение NullPointerException для getServletContext (). GetInitParameter ("filepath"), поскольку контекст не внедряется в метод веб-службы.

И в своем веб-сервисе используйте этот код дляполучите путь и запишите его, используя @Context annotation

 @GET
@Produces("text/plain")
public String doStuff(@Context ServletConfig sc) {



   String xmlpath = "Output filepath is: " + sc.getInitParameter("filepath");
    return xmlpath;
}

См. здесь использование и примеры @ Context

...