【问题标题】:how to create War file for a RESTful web service developed in eclipse IDE如何为在 Eclipse IDE 中开发的 RESTful Web 服务创建 War 文件
【发布时间】:2010-10-07 09:18:43
【问题描述】:

我创建了一个示例 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 tomcat service war


    【解决方案1】:

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

    项目名称,> 导出> 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> 
    

    *根据 cmets 更新了正确答案 *

    您在 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

    【讨论】:

    • 你好 JoseK。感谢您的回复。正如你所说,我已经修改了web.xml并编写了上面的代码来获取HttpServlet类的doGet方法中的路径并创建了WAR文件。我可以知道如何运行这个战争文件吗?我正在 Eclipse IDE 中尝试它?
    • 您可以直接从 Eclipse 运行它。右键单击项目 > 运行方式 > 在服务器上运行。您必须首先通过“运行配置”在 Eclipse 中配置 Tomcat 服务器
    • 你好 JoseK。实际上我正在写入服务器端的xml,即。在 RESTful Web 服务上。我想知道如何访问 REST Web 服务类中的 web.xml 文件中存在的文件路径,即。在 REST 的 PUT 方法中。但我无法访问 Web 服务中的 ServletConfig 对象。你能告诉我怎么做吗?
    • 我尝试使用 getServletConfig().getInitParameter("filepath") 和 getServletContext().getInitParameter("filepath") 方法来检索文件路径。我在 GenericServlet 类中得到空指针异常。我能知道它有什么问题吗?
    • 感谢 JoseK 的回复。现在我没有得到例外。但仍然是打印为空的文件路径。我在 web.xml 以及 getInitParameter("filepath") 方法中给出了完全相同的名称。
    猜你喜欢
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多