首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Java创建一个简单的Restful api

用Java创建一个简单的Restful api
EN

Stack Overflow用户
提问于 2019-01-24 21:13:57
回答 3查看 1.7K关注 0票数 5

我正在尝试通过intellij创建一个简单的Restful hello world api。我用maven-archetype-quickstart创建了一个maven项目,然后在pom.xml中添加了

代码语言:javascript
运行
复制
<dependency>
  <groupId>org.jboss.resteasy</groupId>
  <artifactId>resteasy-jaxrs</artifactId>
  <version>2.3.7.Final</version>
  <scope>provided</scope>
</dependency>

然后在src->main->java->webservice中有两个文件: App.java

代码语言:javascript
运行
复制
    package webservice;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}

和BookRestService.java

代码语言:javascript
运行
复制
package webservice;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/book")
public class BookRestService {
    @GET
    @Produces("text/plain")
    public String getBookTitle() {
        return "H2G2";
    }
}

我使用的是jBoss-6.4。Jboss似乎开始给我以下信息:

代码语言:javascript
运行
复制
15:08:01,550 INFO  [org.jboss.ws.common.management] (MSC service thread 1-2) JBWS022052: Starting JBoss Web Services - Stack CXF Server 4.3.4.Final-redhat-1
15:08:01,824 INFO  [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100: Listening on 127.0.0.1:4447
15:08:01,824 INFO  [org.jboss.as.remoting] (MSC service thread 1-7) JBAS017100: Listening on 127.0.0.1:9999
15:08:01,827 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-3) JBAS015012: Started FileSystemDeploymentService for directory /home/symeon/myprojects/applicationserver/jboss-eap-6.4-clean/standalone/deployments
15:08:02,113 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
15:08:02,114 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
15:08:02,115 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.4.0.GA (AS 7.5.0.Final-redhat-21) started in 5345ms - Started 153 of 191 services (57 services are lazy, passive or on-demand)
Connected to server
[2019-01-24 03:08:02,544] Artifact webservice: Artifact is being deployed, please wait...
15:08:02,721 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015876: Starting deployment of "webservice" (runtime-name: "webservice.war")
15:08:03,236 INFO  [org.jboss.web] (ServerService Thread Pool -- 7) JBAS018210: Register web context: /webservice
15:08:03,400 INFO  [org.jboss.as.server] (management-handler-thread - 2) JBAS015859: Deployed "webservice" (runtime-name : "webservice.war")
[2019-01-24 03:08:03,428] Artifact webservice: Artifact is deployed successfully
[2019-01-24 03:08:03,428] Artifact webservice: Deploy took 884 milliseconds

我所期望的是,当我打开浏览器并编写http://localhost:8080/book时,会看到H2G2作为答案。我也尝试过http://localhost:8080/webservice/book,因为它提到web context已经注册到/webservice,但再次没有成功。我得到一个404未找到的错误。我哪里做错了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-24 21:31:44

在您的App.java中,您需要定义ApplicationPath。类似于下面的内容。

代码语言:javascript
运行
复制
import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/restRoot")
public class App extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        HashSet<Class<?>> classes = new HashSet<Class<?>>();
        classes.add(BookRestService.class);

        return classes;
    }
}

在此之后,您的REST url将变为

代码语言:javascript
运行
复制
http://localhost:8080/webservice/restRoot/book
票数 1
EN

Stack Overflow用户

发布于 2019-01-24 21:18:52

代码语言:javascript
运行
复制
Register web context: /webservice

这意味着您所编码的所有路径都必须在/webservice之后。因此您应该使用http://localhost:8080/webservice/book而不是http://localhost:8080/book

票数 0
EN

Stack Overflow用户

发布于 2019-01-24 21:27:00

默认情况下,resteasy不会扫描整个项目的服务类。你需要告诉resteasy来扫描它。在web.xml中使用以下代码启用扫描。

代码语言:javascript
运行
复制
<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>true</param-value>
</context-param>

Source

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54347519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档