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