为什么不能叫这个简单的网络服务?

时间:2018-11-29 17:19:37

标签: java rest web-services jax-rs glassfish-2.x

我已经在Eclipse上创建了一个带有一个类“ HelloWorld.java”的Web项目,它应该具有一种可以回答GET请求的方法。

package javaeetutorial.hello;

// imports

@Path("base")
public class HelloWorld extends HttpServlet {

    public HelloWorld() {
    }

    @GET
    @Produces("text/html")
    public String getHtml() {
        return "<html lang=\"en\"><body><h1>Hello, World!!</h1></body></html>";
    }
}

然后,在WebContent文件夹的WEB-INF目录中,我创建了一个web.xml文件,其中包含以下内容,以便将对/ hello URL的请求映射到我的servlet。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         metadata-complete="true"
         version="3.1">

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>javaeetutorial.hello.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

我将项目导出到.war文件,然后使用Glassfish进行部署,但是当我调用应该调用我的Web服务的URL时,它将显示“请求的资源()不可用”。

我正在呼叫的网址是:http://localhost:8080/Calculator/hello/base

为什么没有调用我的Web服务?

1 个答案:

答案 0 :(得分:0)

正如VGR在评论中指出的那样,我将JAX-RS与Servlet混淆了。

我选择使用servlet路由。我删除了所有注释并将getHTML方法替换为HttpServlet的doGet方法的替代。现在一切都按预期进行。