gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:45:58 25 4
gpt4 key购买 nike

我已经创建了一个示例 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 服务类所在的包。

最佳答案

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

project name, > Export > WAR file

并填写它要求的详细信息。

在你的 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 未注入(inject)到 Web 服务方法中。

并且在您的网络服务中,使用此代码获取路径并使用 @Context 注释 写入它

 @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

关于eclipse - 如何为在 Eclipse IDE 中开发的 RESTful Web 服务创建 War 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com