Хобрук: Ваш путь к мастерству в программировании

Привет, мир RESTful на основе Jersey и Jetty

Я следую этому руководству, чтобы создать веб-сервис hello world и получить застрял, вот мои коды:

MyResource.java:

package com.example;

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

@Path("myresource")
public class MyResource {
    @GET
    @Produces("text/plain")
    public String getIt() {
        return "Got it!";
    }
}

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>ts</groupId>
<artifactId>mtest</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>mtest Maven Webapp</name>
<url>http://maven.apache.org</url>

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-jetty-http</artifactId>
        <version>2.19</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-jetty-servlet</artifactId>
        <version>2.19</version>
    </dependency>
</dependencies>
<build>
    <finalName>mtest</finalName>
    <plugins>
        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.3.0.M1</version>
        </plugin>
    </plugins>
</build>

web.xml:

<web-app version="3.0"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!-- Servlet declaration can be omitted in which case
     it would be automatically added by Jersey -->
<servlet>
    <servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>

<servlet-mapping>
    <servlet-name>javax.ws.rs.core.Application</servlet-name>
    <url-pattern>/myresource/*</url-pattern>
</servlet-mapping>

Now my problems are:

  1. После запуска Jetty я могу получить hello world моего jsp от http://localhost:8080/, но http://localhost:8080/myresource возвращает 404
  2. Интеллидж жалуется Element web-app must be declared

  • <url-pattern> и @Path избыточны. С тем, что у вас есть, вам нужно получить доступ к /myresource/myresource. Измените <url-pattern> на /api/* и используйте /api/myresource 23.07.2015
  • Кроме того, если вы не создаете встроенное приложение для причала, эти зависимости не нужны. Я бы просто использовал jersey-container-servlet 23.07.2015

Ответы:


1

Добавьте объявление сервлета в файл web.xml следующим образом.

<servlet>
    <servlet-name>javax.ws.rs.core.Application</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.example</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

это должно работать. И иногда путь нуждается в такой полосе.

@Path("/myresource")

И увидишь, что если поставить

<url-pattern>/myresource/*</url-pattern>

ты должен ударить

http://localhost:8080/myresource/myresource

один по вашей веб-конфигурации, а другой по пути вашего ресурса.

но если вы пытаетесь это сделать в tomcat, вам также нужно включить артефактId, например:

http://localhost:8080/mtest/myresource/myresource

Я надеюсь, что это поможет вам.

04.08.2015
  • Мое объявление сервлета в порядке, единственная проблема - это путь, в любом случае спасибо за помощь. 05.08.2015
  • Новые материалы

    Введение в контекст React
    В этом посте мы поговорим о Context API, который был представлен в React 16, и о том, как вы можете их использовать. Что такое контекст? Глядя на определение из react docs , оно..

    Шлюз с лицензией OSS, совместимый с Apollo Federation v2, появится в WunderGraph
    Сегодня мы рады сообщить, что мы сотрудничаем с поддерживаемой YC Tailor Technologies, Inc. для внедрения Apollo Federation v2. Реализация будет лицензирована MIT (Engine) и Apache 2.0..

    Это оно
    Ну, я официально уволился с работы! На этой неделе я буду лихорадочно выполнять последние требования Думающего , чтобы я мог сосредоточиться на поиске работы. Что именно это значит?..

    7 полезных библиотек JavaScript, которые вы должны использовать в своем следующем проекте
    Усильте свою разработку JavaScript Есть поговорка «Не нужно изобретать велосипед». Библиотеки — лучший тому пример. Это поможет вам написать сложные и трудоемкие функции простым способом...

    Базовое руководство по переносу концепций обучения в глубокое обучение
    Обзор По мере того, как машинное обучение становится все более мощным и продвинутым, модели, обеспечивающие эту расширенную возможность, становятся все больше и начинают требовать огромного..

    C в C.R.U.D с использованием React-Redux
    Если вы использовали React, возможно, вы знакомы с головной болью, связанной с обратным потоком данных. Передача состояния реквизитам от родительских компонентов к дочерним компонентам может..

    5 обязательных элементов современного инструмента конвейера данных
    В цифровом мире предприятия используют конвейеры данных для перемещения, преобразования и хранения огромных объемов данных. Эти конвейеры составляют основу бизнес-аналитики и играют..