Som,

Without a web.xml, the Jersey servlet is not setup to handle requests.
Without Jersey, there is nothing in Jetty to map any request to MyResource.

Unless there is something annotated or in a discovered webfragment, then
Jetty has no handler for that request and 404 is the correct response.

regards



On Mon, 5 Apr 2021 at 00:10, Som Lima <somplastic...@gmail.com> wrote:

> 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, <joa...@webtide.com> 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 / joa...@webtide.com
>>
>>
>> On Sat, Apr 3, 2021 at 1:55 AM Som Lima <somplastic...@gmail.com> 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
>>> jetty-users@eclipse.org
>>> To unsubscribe from this list, visit
>>> https://www.eclipse.org/mailman/listinfo/jetty-users
>>>
>> _______________________________________________
>> jetty-users mailing list
>> jetty-users@eclipse.org
>> To unsubscribe from this list, visit
>> https://www.eclipse.org/mailman/listinfo/jetty-users
>>
> _______________________________________________
> jetty-users mailing list
> jetty-users@eclipse.org
> To unsubscribe from this list, visit
> https://www.eclipse.org/mailman/listinfo/jetty-users
>


-- 
Greg Wilkins <gr...@webtide.com> CTO http://webtide.com
_______________________________________________
jetty-users mailing list
jetty-users@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/jetty-users

Reply via email to