我创建了一个示例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服务类的包。
答案 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;
}