Службы отдыха - Tomcat умеет запускаться, домашняя страница работает нормально, но не может сделать GET - PullRequest
0 голосов
/ 27 июня 2019

` https://www.pegaxchange.com/2016/08/11/jax-rs-java-rest-service-eclipse-tomcat/

Я пытался создать службу рабочего отдыха с помощью этого руководства. И до сих пор я борюсь.

Я могу видеть домашнюю страницу Tomcat через http://localhost:8080 Но не вижу ни одного запроса GET и т. Д.

Пытался получить по URL ниже http://localhost:8080/SampleWebProject/search?name= http://localhost:8080/SampleWebProject/productcatalog/search?name= http://localhost:8080/SampleWebProject/myRestServices/search?name=

Я все еще получаю 404

Тип отчета о состоянии

Сообщение / SampleWebProject / search

Описание Исходный сервер не нашел текущего представления для целевого ресурса или не хочет раскрывать, что он существует.

Что я делаю не так?


Пытался собрать его 4 раза с нуля, на разных ПК, дважды проверял библиотеки, использовал Postman и Insomnia.

package com.pegaxchange.java.web.rest;
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;

@ApplicationPath("restservices")
public class MyRESTServices extends ResourceConfig {
    public MyRESTServices() {
        packages("com.fasterxml.jackson.jaxrs.json");
        packages("com.pegaxchange.java.web.rest");
    }
}



----------


package com.pegaxchange.java.web.rest;

import java.util.*;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.pegaxchange.java.bean.Product;
import com.pegaxchange.java.bean.Status;
@Path("productcatalog")
public class ProductCatalogResource {
    private static List<Product> productCatalog;
    public ProductCatalogResource() {
        initializeProductCatalog();
    }
 @GET
    @Path("search")
    @Produces(MediaType.APPLICATION_JSON)
    public Product[] searchByName(@QueryParam("name") String name) {
        List<Product> products = new ArrayList<Product>();
            for (Product p : productCatalog) {
            if (name != null && p.getName().toLowerCase().startsWith(name.toLowerCase())) {
                products.add(p);
            }
        }
        return products.toArray(new Product[products.size()]);
    }

   @POST
    @Path("insert")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Status insert(Product product) {
        productCatalog.add(product);
        return new Status("SUCCESS", "Inserted " + product.getName());
    }

    @GET
    @Path("getId")
    @Produces(MediaType.APPLICATION_JSON)
    public Product get(@QueryParam("id") int id) {
        Product product = null;

        for (Product p: productCatalog) {
            if (id == p.getId() ) {
                product = p;
                break;
            }
        }

        return product; 
    }

    @POST
    @Path("update")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Status update(Product product) {
        Status stat = new Status("ERROR", "No ID " + product.getId());

        Product prod = get(product.getId());

        if (prod != null) {
            if (product.getName() != null) {
                prod.setName(product.getName());
            }
            if (product.getUnitPrice() != null) {
                prod.setUnitPrice(product.getUnitPrice());
            }
            stat = new Status("Success", "updated ID " + product.getId());
        }
        return stat;    
    }

    @DELETE
    @Path("delete")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Status delete(@QueryParam("id") int id) {
        Status stat = new Status("ERROR", "No ID " + id);

        Product product = get(id);

        if (product != null) {
            productCatalog.remove(product);
            stat = new Status("Success", "deleted" + product.getId());
        }
        return stat;
    }

    private void initializeProductCatalog() {
        if (productCatalog == null) {
            productCatalog = new ArrayList<Product>();
            productCatalog.add(new Product(1, "Keyboard", 29.99D));
            productCatalog.add(new Product(2, "Mouse", 9.95D));
            productCatalog.add(new Product(3, "17\" Monitor", 159.49D));
            productCatalog.add(new Product(4, "Hammer", 9.95D));
            productCatalog.add(new Product(5, "Screwdriver", 7.95D));
            productCatalog.add(new Product(6, "English Dictionary", 11.39D));
            productCatalog.add(new Product(7, "A House in Bali", 15.99D));
            productCatalog.add(new Product(8, "An Alaskan Odyssey", 799.99D));
            productCatalog.add(new Product(9, "LCD Projector", 1199.19D));
            productCatalog.add(new Product(10, "Smart Thermostat", 1199.19D));
        }
    }
}


---

package com.pegaxchange.java.bean;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Status implements Serializable {
    private static final long serialVersionUID = -9130603850117689481L;
    private String status;
    private String message;

    public Status() {} // needed for JAXB

    public Status(String status, String message) {
        this.status = status;
        this.message = message;
    }

    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

--

package com.pegaxchange.java.bean;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Product implements Serializable {
    private static final long serialVersionUID = 6826191735682596960L;
    private int id;
    private String name;
    private Double unitPrice;

    public Product() {} // needed for JAXB
    public Product(int id, String name, double unitPrice) {
        this.id = id;
        this.name = name;
        this.unitPrice = unitPrice;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Double getUnitPrice() {
        return unitPrice;
    }`enter code here`
    public void setUnitPrice(double unitPrice) {
        this.unitPrice = unitPrice;
    }
}

1 Ответ

0 голосов
/ 27 июня 2019

Сразу после публикации я нашел решение. Потому что его хорошо видно ... Неверные URL

http://localhost:8080/SampleWebProject/restservices/productcatalog/search?name=Hammer и теперь работает нормально.

...