Let me put it another way.
If I remove web.xml why does the following code  give me 404  in jetty 11 ?


import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

/**
 * Root resource (exposed at "myresource" path)
 */
@Path("myresource")
public class MyResource {

    /**
     * Method handling HTTP GET requests. The returned object will be sent
     * to the client as "text/plain" media type.
     *
     * @return String that will be returned as a text/plain response.
     */
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "got, it!";
    }
}

On Sun, 4 Apr 2021, 15:03 Joakim Erdfelt, <[email protected]> wrote:

> <welcome-file-list> is only used when Jetty is in charge of serving static
> content.
> Or said another way, when there is a request for a resource that doesn't
> match a url-pattern that the webapp has specified, then the servlet spec
> Default Servlet kicks in and determines static content, welcome-files, etc
> ...
>
> You have jersey setup with <url-pattern>/*</url-pattern>, which means
> Jersey is responsible for 100% of content served.
> Jetty is not involved in much with that configuration.
>
> I don't understand this kind of configuration, Jersey usage should be
> focused, only on REST api resources, not 100% of content, including static
> and default servlet.
> I would recommend that you specify jersey on a narrow focused url-pattern,
> like `/api/*` and leave the other requests for resources to Jetty (it can
> serve static content WAY BETTER than Jersey can).
>
> Joakim Erdfelt / [email protected]
>
>
> On Sat, Apr 3, 2021 at 1:55 AM Som Lima <[email protected]> wrote:
>
>>
>> IF I have the web.xml then localhost:8080/myresource  works fine
>> BUT the index.jsp is not picked  with localhost:8080 or
>> http://localhost/index.jsp
>> I got an 404.
>> URI: /
>> STATUS: 404
>>
>> IF I remove the web.xml then the index.jsp is picked up which is what is
>> meant to happen with jetty because it's built in functionality
>> assumes an index.jsp file is there and will pick it and publish it.
>> But the I get a 404 with localhost:8080/myresource  now.
>> I want both index.jsp to be picked up and have the jersey functionality
>> localhost:8080/myresource with the web.xml
>> but I can only have one or the other.
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"; xmlns:xsi="
>> http://www.w3.org/2001/XMLSchema-instance";
>>         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
>> https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd";
>>         version="5.0">
>>
>>     <servlet>
>>         <servlet-name>Jersey Web 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>
>>     <servlet-mapping>
>>         <servlet-name>Jersey Web Application</servlet-name>
>>         <url-pattern>/*</url-pattern>
>>     </servlet-mapping>
>>
>>    <!-- no effect  -->
>>     <welcome-file-list>
>>     <welcome-file>index.jsp</welcome-file>
>>     </welcome-file-list>
>>
>> </web-app>
>>
>>
>> import jakarta.ws.rs.GET;
>> import jakarta.ws.rs.Path;
>> import jakarta.ws.rs.Produces;
>> import jakarta.ws.rs.core.MediaType;
>>
>> /**
>>  * Root resource (exposed at "myresource" path)
>>  */
>> @Path("myresource")
>> public class MyResource {
>>
>>     /**
>>      * Method handling HTTP GET requests. The returned object will be sent
>>      * to the client as "text/plain" media type.
>>      *
>>      * @return String that will be returned as a text/plain response.
>>      */
>>     @GET
>>     @Produces(MediaType.TEXT_PLAIN)
>>     public String getIt() {
>>         return "got, it!";
>>     }
>> }
>>
>>
>>
>> Preferably I also want the Rest API Config to work as well as the
>> index.jsp so that I can call the resource localhost:8080/v1/myresource
>>
>> import jakarta.ws.rs.ApplicationPath;
>> import jakarta.ws.rs.core.Application;
>>
>> @ApplicationPath("v1")
>> public class RestAppConfig extends Application{
>> }
>>
>>
>> _______________________________________________
>> jetty-users mailing list
>> [email protected]
>> To unsubscribe from this list, visit
>> https://www.eclipse.org/mailman/listinfo/jetty-users
>>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To unsubscribe from this list, visit
> https://www.eclipse.org/mailman/listinfo/jetty-users
>
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/jetty-users

Reply via email to