【问题标题】:Run application in apache localhost:8080在 apache localhost:8080 中运行应用程序
【发布时间】:2016-08-30 13:33:27
【问题描述】:

我必须在 Apache Tomcat 上运行 java URL="http://localhost:8080/RESTfulExample/rest/json/metallica/get" 但出现 404 错误。我想得到 json 响应,我在做什么?

@Path("/json/metallica")
public class JSONService {

    @GET
    @Path("/get")
    @Produces(MediaType.APPLICATION_JSON)
    public Track getTrackInJSON() {

        Track track = new Track();
        track.setTitle("Enter Sandman");
        track.setSinger("Metallica");

        return track;

    }

public class NetClientGet {


    public static void main(String[] args) {

        try {

            URL url = new URL(
                    "http://localhost:8080/RESTfulExample/rest/json/metallica/get");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");



            BufferedReader br = new BufferedReader(new InputStreamReader(
                    (conn.getInputStream())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {

                System.out.println(output);
            }

            conn.disconnect();

        } catch (MalformedURLException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

例外:

java.lang.RuntimeException: 失败: HTTP 错误代码: 404 at com.mkyong.client.JerseyClientPost.main(JerseyClientPost.java:24)

Web.xml:

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Restful Web Application</display-name>

    <servlet>
        <servlet-name>jersey-serlvet</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.mkyong.rest</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/rest/</url-pattern>
    </servlet-mapping>

</web-app>

【问题讨论】:

  • 你注册 JSONService 为 restful 应用了吗?您使用的是哪种 JAX-RS 实现?
  • 是的,JSONService 注册为 RESTful 应用程序。我正在使用 Jersey 实现。
  • 发布您的 web.xml servlets 配置。
  • register(com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider.class); 也注册 JSON 提供者。
  • 还是不行……

标签: java rest restful-url


【解决方案1】:

【讨论】:

  • Thnx :) 你能给我这个问题的答案吗?
  • 这是怎么回事?您的机器上是否运行了输出该数据的服务器?
  • 是的,我的机器上正在运行服务器,但我没有得到这个输出数据。我想要的
【解决方案2】:

您的问题没有显示使用 /RESTfulExample/rest 作为基本路径。
因此,假设应用程序的名称是 RESTfulExample,您似乎正在使用这条路径:
/RESTfulExample/json/metallica/get

此外,您的代码中应该有两个 ** 的编译错误:
**track.setTitle("Enter Sandman");

【讨论】:

    猜你喜欢
    • 2019-11-24
    • 2011-06-27
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2015-05-28
    • 2016-10-05
    相关资源
    最近更新 更多