如何为eclipse IDE中开发的RESTful Web服务创建War文件

时间:2010-10-07 09:18:44

标签: eclipse tomcat service war

我创建了一个示例REST Web服务,它将一些数据写入xml文件中。现在我已经硬编码了要写入xml文件的路径。我想知道如何在web.xml文件中声明该文件的本地路径作为servlet参数,以及如何从那里获取路径并在codebe中使用它。另外,我需要为需要在tomcat中部署的服务创建WAR文件。此war文件应从web.xml文件中获取该参数。我使用eclipse IDE开发Web服务。谁能告诉我如何做上述事情?

这里我附加了web.xml文件中的servlet代码。

<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 Web服务类的包。

1 个答案:

答案 0 :(得分:2)

假设您在Eclipse中将其创建为动态Web项目,只需右键单击

即可
  

项目名称,&gt;出口&gt; 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> 

* 根据评论*

更新了正确答案

你在getServletContext()。getInitParameter(“filepath”)上得到NullPointerException,因为Context没有注入到web服务方法中。

在您的网络服务中,使用此代码获取路径并使用@Context annotation

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



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

See here for usage and examples of @Context