Java org.glassfish.jersey.server.model.ModelValidationException:应用程序资源模型的验证在应用程序初始化期间失败

Java org.glassfish.jersey.server.model.ModelValidationException:应用程序资源模型的验证在应用程序初始化期间失败,java,spring-boot,microservices,Java,Spring Boot,Microservices,我正在开发spring boot微服务示例,链接:。在这个项目中,我只是将父依赖项更新为其最新版本,其他代码文件保持不变。当我单击 2016-09-09 11:46:20.888 ERROR 14152 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : StandardWrapper.Throwable org.glassfish.jersey.server.model.ModelValidationExcepti

我正在开发spring boot微服务示例,链接:。在这个项目中,我只是将父依赖项更新为其最新版本,其他代码文件保持不变。当我单击

2016-09-09 11:46:20.888 ERROR 14152 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : StandardWrapper.Throwable

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] A resource model has ambiguous (sub-)resource method for HTTP method GET and input mime-types as defined by"@Consumes" and "@Produces" annotations at Java methods public java.util.List br.com.alexandreesl.handson.rest.ProductRest.getProducts() and public java.util.List br.com.alexandreesl.handson.rest.CustomerRest.getCustomers() at matching regular expression /. These two methods produces and consumes exactly the same mime-types and therefore their invocation as a resource methods will always fail.; source='org.glassfish.jersey.server.model.RuntimeResource@14c14bf']
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:555) ~[jersey-server-2.23.1.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184) ~[jersey-server-2.23.1.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350) ~[jersey-server-2.23.1.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347) ~[jersey-server-2.23.1.jar:na]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[jersey-common-2.23.1.jar:na]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[jersey-common-2.23.1.jar:na]
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255) ~[jersey-common-2.23.1.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347) ~[jersey-server-2.23.1.jar:na]
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392) ~[jersey-container-servlet-core-2.23.1.jar:na]
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177) ~[jersey-container-servlet-core-2.23.1.jar:na]
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369) ~[jersey-container-servlet-core-2.23.1.jar:na]
    at javax.servlet.GenericServlet.init(GenericServlet.java:158) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1194) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:806) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_102]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_102]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.4.jar:8.5.4]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_102]
ApplicationConfig.java

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
@Configuration
public class ApplicationConfig {
    @Named
    static class JerseyConfig extends ResourceConfig {
        public JerseyConfig() {
            this.packages("br.com.alexandreesl.handson.rest");
        }
    }

    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }
}
public class Order {
    private long id;
    private long amount;
    private Date dateOrder;
    private Customer customer;
    private Product product;
    // setters and getters
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setDateOrder(new Date());
        id++;
        return order;
    }
}
public class Customer {
    private long id;
    private String name;
    private String email;
    // setters and getters
}
@Named
@Path("/")
public class CustomerRest {
    private static List<Customer> customers = new ArrayList<Customer>();

    static {
        Customer customer1 = new Customer();
        customer1.setId(1);
        customer1.setNome("Customer 1");
        customer1.setEmail("customer1@gmail.com");

        Customer customer2 = new Customer();
        customer2.setId(2);
        customer2.setNome("Customer 2");
        customer2.setEmail("Customer2@gmail.com");

        Customer customer3 = new Customer();
        customer3.setId(3);
        customer3.setNome("Customer 3");
        customer3.setEmail("Customer3@gmail.com");

        Customer customer4 = new Customer();
        customer4.setId(4);
        customer4.setNome("Customer 4");
        customer4.setEmail("Customer4@gmail.com");

        Customer customer5 = new Customer();
        customer5.setId(5);
        customer5.setNome("Customer 5");
        customer5.setEmail("Customer5@gmail.com");

        customers.add(customer1);
        customers.add(customer2);
        customers.add(customer3);
        customers.add(customer4);
        customers.add(customer5);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getCustomers() {
        return customers;
    }

    @GET
    @Path("customer")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getCustomer(@QueryParam("id") long id) {
        Customer cli = null;
        for (Customer c : customers) {
            if (c.getId() == id)
                cli = c;
        }
        return cli;
    }
}
public class Product {
    private long id;
    private String sku;
    private String description;
    // setters and getters
}
@Named
@Path("/")
public class ProductRest {
    private static List<Product> products = new ArrayList<Product>();

    static {
        Product product1 = new Product();
        product1.setId(1);
        product1.setSku("abcd1");
        product1.setDescription("Product1");
        Product product2 = new Product();
        product2.setId(2);
        product2.setSku("abcd2");
        product2.setDescription("Product2");
        Product product3 = new Product();
        product3.setId(3);
        product3.setSku("abcd3");
        product3.setDescription("Product3");
        Product product4 = new Product();
        product4.setId(4);
        product4.setSku("abcd4");
        product4.setDescription("Product4");
        products.add(product1);
        products.add(product2);
        products.add(product3);
        products.add(product4);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Product> getProducts() {
        return products;
    }

    @GET
    @Path("product")
    @Produces(MediaType.APPLICATION_JSON)
    public Product getProduct(@QueryParam("id") long id) {
        Product prod = null;
        for (Product p : products) {
            if (p.getId() == id)
                prod = p;
        }
        return prod;
    }
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer/getCustomer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product/getProduct?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setOrderDate(new Date());
        id++;
        return order;
    }
}
Order.java

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
@Configuration
public class ApplicationConfig {
    @Named
    static class JerseyConfig extends ResourceConfig {
        public JerseyConfig() {
            this.packages("br.com.alexandreesl.handson.rest");
        }
    }

    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }
}
public class Order {
    private long id;
    private long amount;
    private Date dateOrder;
    private Customer customer;
    private Product product;
    // setters and getters
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setDateOrder(new Date());
        id++;
        return order;
    }
}
public class Customer {
    private long id;
    private String name;
    private String email;
    // setters and getters
}
@Named
@Path("/")
public class CustomerRest {
    private static List<Customer> customers = new ArrayList<Customer>();

    static {
        Customer customer1 = new Customer();
        customer1.setId(1);
        customer1.setNome("Customer 1");
        customer1.setEmail("customer1@gmail.com");

        Customer customer2 = new Customer();
        customer2.setId(2);
        customer2.setNome("Customer 2");
        customer2.setEmail("Customer2@gmail.com");

        Customer customer3 = new Customer();
        customer3.setId(3);
        customer3.setNome("Customer 3");
        customer3.setEmail("Customer3@gmail.com");

        Customer customer4 = new Customer();
        customer4.setId(4);
        customer4.setNome("Customer 4");
        customer4.setEmail("Customer4@gmail.com");

        Customer customer5 = new Customer();
        customer5.setId(5);
        customer5.setNome("Customer 5");
        customer5.setEmail("Customer5@gmail.com");

        customers.add(customer1);
        customers.add(customer2);
        customers.add(customer3);
        customers.add(customer4);
        customers.add(customer5);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getCustomers() {
        return customers;
    }

    @GET
    @Path("customer")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getCustomer(@QueryParam("id") long id) {
        Customer cli = null;
        for (Customer c : customers) {
            if (c.getId() == id)
                cli = c;
        }
        return cli;
    }
}
public class Product {
    private long id;
    private String sku;
    private String description;
    // setters and getters
}
@Named
@Path("/")
public class ProductRest {
    private static List<Product> products = new ArrayList<Product>();

    static {
        Product product1 = new Product();
        product1.setId(1);
        product1.setSku("abcd1");
        product1.setDescription("Product1");
        Product product2 = new Product();
        product2.setId(2);
        product2.setSku("abcd2");
        product2.setDescription("Product2");
        Product product3 = new Product();
        product3.setId(3);
        product3.setSku("abcd3");
        product3.setDescription("Product3");
        Product product4 = new Product();
        product4.setId(4);
        product4.setSku("abcd4");
        product4.setDescription("Product4");
        products.add(product1);
        products.add(product2);
        products.add(product3);
        products.add(product4);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Product> getProducts() {
        return products;
    }

    @GET
    @Path("product")
    @Produces(MediaType.APPLICATION_JSON)
    public Product getProduct(@QueryParam("id") long id) {
        Product prod = null;
        for (Product p : products) {
            if (p.getId() == id)
                prod = p;
        }
        return prod;
    }
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer/getCustomer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product/getProduct?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setOrderDate(new Date());
        id++;
        return order;
    }
}
OrderRest.java

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
@Configuration
public class ApplicationConfig {
    @Named
    static class JerseyConfig extends ResourceConfig {
        public JerseyConfig() {
            this.packages("br.com.alexandreesl.handson.rest");
        }
    }

    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }
}
public class Order {
    private long id;
    private long amount;
    private Date dateOrder;
    private Customer customer;
    private Product product;
    // setters and getters
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setDateOrder(new Date());
        id++;
        return order;
    }
}
public class Customer {
    private long id;
    private String name;
    private String email;
    // setters and getters
}
@Named
@Path("/")
public class CustomerRest {
    private static List<Customer> customers = new ArrayList<Customer>();

    static {
        Customer customer1 = new Customer();
        customer1.setId(1);
        customer1.setNome("Customer 1");
        customer1.setEmail("customer1@gmail.com");

        Customer customer2 = new Customer();
        customer2.setId(2);
        customer2.setNome("Customer 2");
        customer2.setEmail("Customer2@gmail.com");

        Customer customer3 = new Customer();
        customer3.setId(3);
        customer3.setNome("Customer 3");
        customer3.setEmail("Customer3@gmail.com");

        Customer customer4 = new Customer();
        customer4.setId(4);
        customer4.setNome("Customer 4");
        customer4.setEmail("Customer4@gmail.com");

        Customer customer5 = new Customer();
        customer5.setId(5);
        customer5.setNome("Customer 5");
        customer5.setEmail("Customer5@gmail.com");

        customers.add(customer1);
        customers.add(customer2);
        customers.add(customer3);
        customers.add(customer4);
        customers.add(customer5);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getCustomers() {
        return customers;
    }

    @GET
    @Path("customer")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getCustomer(@QueryParam("id") long id) {
        Customer cli = null;
        for (Customer c : customers) {
            if (c.getId() == id)
                cli = c;
        }
        return cli;
    }
}
public class Product {
    private long id;
    private String sku;
    private String description;
    // setters and getters
}
@Named
@Path("/")
public class ProductRest {
    private static List<Product> products = new ArrayList<Product>();

    static {
        Product product1 = new Product();
        product1.setId(1);
        product1.setSku("abcd1");
        product1.setDescription("Product1");
        Product product2 = new Product();
        product2.setId(2);
        product2.setSku("abcd2");
        product2.setDescription("Product2");
        Product product3 = new Product();
        product3.setId(3);
        product3.setSku("abcd3");
        product3.setDescription("Product3");
        Product product4 = new Product();
        product4.setId(4);
        product4.setSku("abcd4");
        product4.setDescription("Product4");
        products.add(product1);
        products.add(product2);
        products.add(product3);
        products.add(product4);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Product> getProducts() {
        return products;
    }

    @GET
    @Path("product")
    @Produces(MediaType.APPLICATION_JSON)
    public Product getProduct(@QueryParam("id") long id) {
        Product prod = null;
        for (Product p : products) {
            if (p.getId() == id)
                prod = p;
        }
        return prod;
    }
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer/getCustomer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product/getProduct?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setOrderDate(new Date());
        id++;
        return order;
    }
}
Customer.java

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
@Configuration
public class ApplicationConfig {
    @Named
    static class JerseyConfig extends ResourceConfig {
        public JerseyConfig() {
            this.packages("br.com.alexandreesl.handson.rest");
        }
    }

    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }
}
public class Order {
    private long id;
    private long amount;
    private Date dateOrder;
    private Customer customer;
    private Product product;
    // setters and getters
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setDateOrder(new Date());
        id++;
        return order;
    }
}
public class Customer {
    private long id;
    private String name;
    private String email;
    // setters and getters
}
@Named
@Path("/")
public class CustomerRest {
    private static List<Customer> customers = new ArrayList<Customer>();

    static {
        Customer customer1 = new Customer();
        customer1.setId(1);
        customer1.setNome("Customer 1");
        customer1.setEmail("customer1@gmail.com");

        Customer customer2 = new Customer();
        customer2.setId(2);
        customer2.setNome("Customer 2");
        customer2.setEmail("Customer2@gmail.com");

        Customer customer3 = new Customer();
        customer3.setId(3);
        customer3.setNome("Customer 3");
        customer3.setEmail("Customer3@gmail.com");

        Customer customer4 = new Customer();
        customer4.setId(4);
        customer4.setNome("Customer 4");
        customer4.setEmail("Customer4@gmail.com");

        Customer customer5 = new Customer();
        customer5.setId(5);
        customer5.setNome("Customer 5");
        customer5.setEmail("Customer5@gmail.com");

        customers.add(customer1);
        customers.add(customer2);
        customers.add(customer3);
        customers.add(customer4);
        customers.add(customer5);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getCustomers() {
        return customers;
    }

    @GET
    @Path("customer")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getCustomer(@QueryParam("id") long id) {
        Customer cli = null;
        for (Customer c : customers) {
            if (c.getId() == id)
                cli = c;
        }
        return cli;
    }
}
public class Product {
    private long id;
    private String sku;
    private String description;
    // setters and getters
}
@Named
@Path("/")
public class ProductRest {
    private static List<Product> products = new ArrayList<Product>();

    static {
        Product product1 = new Product();
        product1.setId(1);
        product1.setSku("abcd1");
        product1.setDescription("Product1");
        Product product2 = new Product();
        product2.setId(2);
        product2.setSku("abcd2");
        product2.setDescription("Product2");
        Product product3 = new Product();
        product3.setId(3);
        product3.setSku("abcd3");
        product3.setDescription("Product3");
        Product product4 = new Product();
        product4.setId(4);
        product4.setSku("abcd4");
        product4.setDescription("Product4");
        products.add(product1);
        products.add(product2);
        products.add(product3);
        products.add(product4);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Product> getProducts() {
        return products;
    }

    @GET
    @Path("product")
    @Produces(MediaType.APPLICATION_JSON)
    public Product getProduct(@QueryParam("id") long id) {
        Product prod = null;
        for (Product p : products) {
            if (p.getId() == id)
                prod = p;
        }
        return prod;
    }
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer/getCustomer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product/getProduct?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setOrderDate(new Date());
        id++;
        return order;
    }
}
CustomerRest.java

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
@Configuration
public class ApplicationConfig {
    @Named
    static class JerseyConfig extends ResourceConfig {
        public JerseyConfig() {
            this.packages("br.com.alexandreesl.handson.rest");
        }
    }

    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }
}
public class Order {
    private long id;
    private long amount;
    private Date dateOrder;
    private Customer customer;
    private Product product;
    // setters and getters
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setDateOrder(new Date());
        id++;
        return order;
    }
}
public class Customer {
    private long id;
    private String name;
    private String email;
    // setters and getters
}
@Named
@Path("/")
public class CustomerRest {
    private static List<Customer> customers = new ArrayList<Customer>();

    static {
        Customer customer1 = new Customer();
        customer1.setId(1);
        customer1.setNome("Customer 1");
        customer1.setEmail("customer1@gmail.com");

        Customer customer2 = new Customer();
        customer2.setId(2);
        customer2.setNome("Customer 2");
        customer2.setEmail("Customer2@gmail.com");

        Customer customer3 = new Customer();
        customer3.setId(3);
        customer3.setNome("Customer 3");
        customer3.setEmail("Customer3@gmail.com");

        Customer customer4 = new Customer();
        customer4.setId(4);
        customer4.setNome("Customer 4");
        customer4.setEmail("Customer4@gmail.com");

        Customer customer5 = new Customer();
        customer5.setId(5);
        customer5.setNome("Customer 5");
        customer5.setEmail("Customer5@gmail.com");

        customers.add(customer1);
        customers.add(customer2);
        customers.add(customer3);
        customers.add(customer4);
        customers.add(customer5);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getCustomers() {
        return customers;
    }

    @GET
    @Path("customer")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getCustomer(@QueryParam("id") long id) {
        Customer cli = null;
        for (Customer c : customers) {
            if (c.getId() == id)
                cli = c;
        }
        return cli;
    }
}
public class Product {
    private long id;
    private String sku;
    private String description;
    // setters and getters
}
@Named
@Path("/")
public class ProductRest {
    private static List<Product> products = new ArrayList<Product>();

    static {
        Product product1 = new Product();
        product1.setId(1);
        product1.setSku("abcd1");
        product1.setDescription("Product1");
        Product product2 = new Product();
        product2.setId(2);
        product2.setSku("abcd2");
        product2.setDescription("Product2");
        Product product3 = new Product();
        product3.setId(3);
        product3.setSku("abcd3");
        product3.setDescription("Product3");
        Product product4 = new Product();
        product4.setId(4);
        product4.setSku("abcd4");
        product4.setDescription("Product4");
        products.add(product1);
        products.add(product2);
        products.add(product3);
        products.add(product4);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Product> getProducts() {
        return products;
    }

    @GET
    @Path("product")
    @Produces(MediaType.APPLICATION_JSON)
    public Product getProduct(@QueryParam("id") long id) {
        Product prod = null;
        for (Product p : products) {
            if (p.getId() == id)
                prod = p;
        }
        return prod;
    }
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer/getCustomer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product/getProduct?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setOrderDate(new Date());
        id++;
        return order;
    }
}
ProductRest.java

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
@Configuration
public class ApplicationConfig {
    @Named
    static class JerseyConfig extends ResourceConfig {
        public JerseyConfig() {
            this.packages("br.com.alexandreesl.handson.rest");
        }
    }

    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }
}
public class Order {
    private long id;
    private long amount;
    private Date dateOrder;
    private Customer customer;
    private Product product;
    // setters and getters
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setDateOrder(new Date());
        id++;
        return order;
    }
}
public class Customer {
    private long id;
    private String name;
    private String email;
    // setters and getters
}
@Named
@Path("/")
public class CustomerRest {
    private static List<Customer> customers = new ArrayList<Customer>();

    static {
        Customer customer1 = new Customer();
        customer1.setId(1);
        customer1.setNome("Customer 1");
        customer1.setEmail("customer1@gmail.com");

        Customer customer2 = new Customer();
        customer2.setId(2);
        customer2.setNome("Customer 2");
        customer2.setEmail("Customer2@gmail.com");

        Customer customer3 = new Customer();
        customer3.setId(3);
        customer3.setNome("Customer 3");
        customer3.setEmail("Customer3@gmail.com");

        Customer customer4 = new Customer();
        customer4.setId(4);
        customer4.setNome("Customer 4");
        customer4.setEmail("Customer4@gmail.com");

        Customer customer5 = new Customer();
        customer5.setId(5);
        customer5.setNome("Customer 5");
        customer5.setEmail("Customer5@gmail.com");

        customers.add(customer1);
        customers.add(customer2);
        customers.add(customer3);
        customers.add(customer4);
        customers.add(customer5);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getCustomers() {
        return customers;
    }

    @GET
    @Path("customer")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getCustomer(@QueryParam("id") long id) {
        Customer cli = null;
        for (Customer c : customers) {
            if (c.getId() == id)
                cli = c;
        }
        return cli;
    }
}
public class Product {
    private long id;
    private String sku;
    private String description;
    // setters and getters
}
@Named
@Path("/")
public class ProductRest {
    private static List<Product> products = new ArrayList<Product>();

    static {
        Product product1 = new Product();
        product1.setId(1);
        product1.setSku("abcd1");
        product1.setDescription("Product1");
        Product product2 = new Product();
        product2.setId(2);
        product2.setSku("abcd2");
        product2.setDescription("Product2");
        Product product3 = new Product();
        product3.setId(3);
        product3.setSku("abcd3");
        product3.setDescription("Product3");
        Product product4 = new Product();
        product4.setId(4);
        product4.setSku("abcd4");
        product4.setDescription("Product4");
        products.add(product1);
        products.add(product2);
        products.add(product3);
        products.add(product4);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Product> getProducts() {
        return products;
    }

    @GET
    @Path("product")
    @Produces(MediaType.APPLICATION_JSON)
    public Product getProduct(@QueryParam("id") long id) {
        Product prod = null;
        for (Product p : products) {
            if (p.getId() == id)
                prod = p;
        }
        return prod;
    }
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer/getCustomer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product/getProduct?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setOrderDate(new Date());
        id++;
        return order;
    }
}
@Named
@路径(“/”)
公共类ProductRest{
私有静态列表产品=新的ArrayList();
静止的{
product1=新产品();
产品1.setId(1);
产品1.setSku(“abcd1”);
产品1.设置说明(“产品1”);
product2=新产品();
产品2.setId(2);
产品2.setSku(“abcd2”);
产品2.设置说明(“产品2”);
product3=新产品();
产品3.setId(3);
产品3.setSku(“abcd3”);
产品3.设置说明(“产品3”);
product4=新产品();
产品4.setId(4);
产品4.setSku(“abcd4”);
产品4.设置说明(“产品4”);
产品。添加(产品1);
产品。添加(产品2);
产品。添加(产品3);
产品。添加(产品4);
}
@得到
@产生(MediaType.APPLICATION_JSON)
公共列表产品(){
退货产品;
}
@得到
@路径(“产品”)
@产生(MediaType.APPLICATION_JSON)
公共产品getProduct(@QueryParam(“id”)长id){
产品生产=空;
对于(产品p:产品){
if(p.getId()==id)
prod=p;
}
返回产品;
}
}

请就这个问题提供指导。

我能够解决这个问题。您需要对映射请求URL进行一些更改。我想知道块中的代码是如何工作而没有错误的

根据我的理解,一个可能的原因是您有两个或更多适用于该URL调用的映射
CustomerRest.java
ProductRest.java
都映射到
/

@Path("/")

Jersey
无法判断实际应该调用什么方法,并给出了此错误

您需要更正以下文件: OrderRest.java

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
@Configuration
public class ApplicationConfig {
    @Named
    static class JerseyConfig extends ResourceConfig {
        public JerseyConfig() {
            this.packages("br.com.alexandreesl.handson.rest");
        }
    }

    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }
}
public class Order {
    private long id;
    private long amount;
    private Date dateOrder;
    private Customer customer;
    private Product product;
    // setters and getters
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setDateOrder(new Date());
        id++;
        return order;
    }
}
public class Customer {
    private long id;
    private String name;
    private String email;
    // setters and getters
}
@Named
@Path("/")
public class CustomerRest {
    private static List<Customer> customers = new ArrayList<Customer>();

    static {
        Customer customer1 = new Customer();
        customer1.setId(1);
        customer1.setNome("Customer 1");
        customer1.setEmail("customer1@gmail.com");

        Customer customer2 = new Customer();
        customer2.setId(2);
        customer2.setNome("Customer 2");
        customer2.setEmail("Customer2@gmail.com");

        Customer customer3 = new Customer();
        customer3.setId(3);
        customer3.setNome("Customer 3");
        customer3.setEmail("Customer3@gmail.com");

        Customer customer4 = new Customer();
        customer4.setId(4);
        customer4.setNome("Customer 4");
        customer4.setEmail("Customer4@gmail.com");

        Customer customer5 = new Customer();
        customer5.setId(5);
        customer5.setNome("Customer 5");
        customer5.setEmail("Customer5@gmail.com");

        customers.add(customer1);
        customers.add(customer2);
        customers.add(customer3);
        customers.add(customer4);
        customers.add(customer5);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getCustomers() {
        return customers;
    }

    @GET
    @Path("customer")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getCustomer(@QueryParam("id") long id) {
        Customer cli = null;
        for (Customer c : customers) {
            if (c.getId() == id)
                cli = c;
        }
        return cli;
    }
}
public class Product {
    private long id;
    private String sku;
    private String description;
    // setters and getters
}
@Named
@Path("/")
public class ProductRest {
    private static List<Product> products = new ArrayList<Product>();

    static {
        Product product1 = new Product();
        product1.setId(1);
        product1.setSku("abcd1");
        product1.setDescription("Product1");
        Product product2 = new Product();
        product2.setId(2);
        product2.setSku("abcd2");
        product2.setDescription("Product2");
        Product product3 = new Product();
        product3.setId(3);
        product3.setSku("abcd3");
        product3.setDescription("Product3");
        Product product4 = new Product();
        product4.setId(4);
        product4.setSku("abcd4");
        product4.setDescription("Product4");
        products.add(product1);
        products.add(product2);
        products.add(product3);
        products.add(product4);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Product> getProducts() {
        return products;
    }

    @GET
    @Path("product")
    @Produces(MediaType.APPLICATION_JSON)
    public Product getProduct(@QueryParam("id") long id) {
        Product prod = null;
        for (Product p : products) {
            if (p.getId() == id)
                prod = p;
        }
        return prod;
    }
}
@Named
@Path("/")
public class OrderRest {
    private long id = 1;

    @Inject
    private RestTemplate restTemplate;

    @GET
    @Path("order")
    @Produces(MediaType.APPLICATION_JSON)
    public Order submitOrder(@QueryParam("idCustomer") long idCustomer,
            @QueryParam("idProduct") long idProduct,
            @QueryParam("amount") long amount) {

        Customer customer = restTemplate.getForObject("http://localhost:8080/customer/getCustomer?id={id}", Customer.class, idCustomer);
        Product product = restTemplate.getForObject("http://localhost:8080/product/getProduct?id={id}", Product.class,idProduct);

        Order order = new Order();
        order.setCustomer(customer);
        order.setProduct(product);
        order.setId(id);
        order.setAmount(amount);
        order.setOrderDate(new Date());
        id++;
        return order;
    }
}
在CustomerRest.java中使用

@GET
    @Path("/getCustomer")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getCustomer(@QueryParam("id") long id) {
        Customer cli = null;
        for (Customer c : customers) {
            if (c.getId() == id)
                cli = c;
        }
        return cli;
    }
@GET
    @Path("/getProduct")
    @Produces(MediaType.APPLICATION_JSON)
    public Product getProduct(@QueryParam("id") long id) {
        Product prod = null;
        for (Product p : products) {
            if (p.getId() == id)
                prod = p;
        }
        return prod;
    }
ProductRest中-使用此

@GET
    @Path("/getCustomer")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getCustomer(@QueryParam("id") long id) {
        Customer cli = null;
        for (Customer c : customers) {
            if (c.getId() == id)
                cli = c;
        }
        return cli;
    }
@GET
    @Path("/getProduct")
    @Produces(MediaType.APPLICATION_JSON)
    public Product getProduct(@QueryParam("id") long id) {
        Product prod = null;
        for (Product p : products) {
            if (p.getId() == id)
                prod = p;
        }
        return prod;
    }
以下是输出:

可能存在的副本