Http GET method shows an error when using knitwear

I follow the tutorial to find out the REST api. Below is my GET annotation code and using the Weblogic server to deploy my application. For some reason, it shows the following error:

HTTP method GET is not supported by this URL

Sample.java

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;

@Path("/v1")
public class V1_status {
    @GET
    @Produces(MediaType.TEXT_HTML)
    public String returnTitle(){
        return "<p> Yess </p>";
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>com.glasschecker.rest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>Jersey REST Service</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.glasschecker.rest</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/api/*</url-pattern>
  </servlet-mapping>

  </web-app>

This is a tutorial:

https://www.youtube.com/watch?v=4DY46f-LZ0M&list=PLu47tUtKqNlwfR- nqjiWUaIWOYEi9FyW0 & index = 2

I use the following URL http: // localhost: 7001 / com.glasschecker.rest / api / v1 the URL pattern is added to the Servlet.

When I try to access http: // localhost: 7001 / com.glasschecker.rest , it correctly displays the index.html file (the first file in my web.xml). I am sure something is in my file.

. java :

com.glasschecker.rest.status

, :

weblogic.application.ModuleException: weblogic.management.DeploymentException: [HTTP:101170]The servlet org.foo.rest.MyApplication is referenced in servlet-mapping /api but not defined in web.xml.
    at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
    at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:237)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:232)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
    Truncated. see log file for complete stacktrace
Caused By: weblogic.management.DeploymentException: [HTTP:101170]The servlet org.foo.rest.MyApplication is referenced in servlet-mapping /api but not defined in web.xml.
    at weblogic.servlet.internal.WebAppServletContext.verifyServletMappings(WebAppServletContext.java:1566)
    at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3066)
    at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1830)
    at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:875)
    at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
+4
5

:

@Path("/ws")
public class V1_status {

@GET
@Path("/title") //this one is optional
@Produces(MediaType.TEXT_HTML)
public String returnTitle(){
return "<p> Yess </p>";
}

}
+3

/v1, /api/v1. :

@Path("/api")
public class V1_status {
    @Path("v1")
    @GET
    @Produces(MediaType.TEXT_HTML)
    public String returnTitle(){
        return "<p> Yess </p>";
    }
}
+1

@Path, JAX-RS, .

0

"com.sun.jersey.config.property.package" , -.

"V1_status": "com.glasschecker.rest.status"

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>com.glasschecker.rest.status</param-value>
</init-param>

ServletContainer

if the initialization parameter "com.sun.jersey.config.property.resourceConfigClass" is not present and a initialization parameter "com.sun.jersey.config.property.packages" is present a new instance of PackagesResourceConfig is created. The initialization parameter "com.sun.jersey.config.property.packages" MUST be set to provide one or more package names.

PackagesResourceConfig . "V1_status" .

0
source
  • Delete the file web.xmlor clear all servlet and servlet objects.
  • There must be a class ApplicationConfigthat extends Application. Annotate ApplicationPath('/')or as you wish.

Here is an example ApplicationConfigclass

@javax.ws.rs.ApplicationPath("/")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<>();
        addRestResourceClasses(resources);
        return resources;
    }

    /**
     * Do not modify addRestResourceClasses() method.
     * It is automatically populated with
     * all resources defined in the project.
     * If required, comment out calling this method in getClasses().
     */
    private void addRestResourceClasses(Set<Class<?>> resources) {
        resources.add(com.testrest.StuffResource.class);
    }

}
0
source

All Articles