java - 如何让 Eclipse 识别动态 Web 服务代码中的更改

标签 java eclipse web-services tomcat jax-rs

我正在尝试了解使用 Eclipse 设置 Web 服务的来龙去脉。我从 this tutorial 开始.我能够让一些东西工作,但我发现如果我对 Java 代码进行简单的更改并尝试重新运行它,我无法让更改后的版本运行。

我的类看起来像这样(禁止导入):

package com.mypackage.mytest;

@Path("/helloworld")
public class HelloWorld {    
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayPlainTextHello() {
        return "Hello World #1";
    }    
    @GET
    @Produces(MediaType.TEXT_XML)
    public String sayXMLHello() {
        return "<?xml version=\"1.0\"?>" + "<hello> Hello World #2 RESTful Jersey"
                + "</hello>";
    }    
    @GET
    @Produces(MediaType.TEXT_HTML)
    public String sayHtmlHello() {
        return "<html> " + "<title>" + "Hello World RESTful #3 Jersey"
                + "</title>" + "<body><h1>" + "Hello World #3 RESTful Jersey"
                + "</body></h1>" + "</html> ";
    }    
}

web.xml 看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>TestService</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>TestService</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.mypackage.mytest</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup> 
  </servlet>
  <servlet-mapping>
    <servlet-name>TestService</servlet-name>
    <url-pattern>/hello/*</url-pattern>
  </servlet-mapping>
</web-app>

我已将其设置为使用 Tomcat 7.0、Servlet 版本 3.0。我通过在项目名称上选择“Run As -> Run On Server”来运行它。

如果我调出 http://localhost:8080/TestService/hello/helloworld , 它显示上述输出之一。

但是,如果我更改上述 Java 代码中的字符串常量(例如,将#1 更改为#4、#2 更改为#5、#3 更改为#6),并尝试重新运行它,它仍然会显示其中一个旧字符串——更改似乎没有发生。我尝试了停止服务器、构建项目和显示“发布”的内容的不同组合,但到目前为止,我发现导致更改出现的唯一内容是项目-> 清理并重新启动 Eclipse。我必须清理我的整个项目才能部署更改,这是没有意义的,所以我一定错过了其他一些基本步骤……但是什么?

最佳答案

我现在可以开始工作了。需要注意的几点:

  1. 我通常会设置 Eclipse,以便在我更改源文件时自动构建它(Window->Preferences->General->Workspace)。不知何故,那个设置被关闭了。这可能是在设置所有内容的复杂过程中发生的事情(这涉及在 Eclipse 中安装新软件以及在 Eclipse 之外进行一些安装)。或者它可能是我做错的其他事情。不管怎样,这就是我的更改没有出现的原因之一——我假设它是自动重建的。

  2. 教程说使用“在服务器上运行”来部署新的网络应用程序。我猜这是第一次有必要。但是在更改之后,“在服务器上运行”根本没有帮助;相反,我必须按下服务器选项卡上的“播放”按钮——这就是所有必要的。

服务器设置(特别是发布和模块自动重新加载)似乎没有什么不同。

关于java - 如何让 Eclipse 识别动态 Web 服务代码中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28601083/

相关文章:

java - HermiT Reasoner 显示错误结果

java - 如何从assets子文件夹中读取PDF文件

java - 通过第一个和最后一个字符删除字符串的一部分?

eclipse - Eclipse搜索菜单被随机禁用

java - Eclipse 在一段时间后停止突出显示引用

java - 如何在同一网络服务中获取@PathParam和请求正文?

web-services - 针对多个请求的高效密码散列

java - Cucumber-junit-platform-engine 中的特征文件发现

java - 如何在 jsf 中使用接缝 validator ?

web-services - 如何使用ssl证书建立双向连接?