A reminder this is the Main function I am working with for jetty 11.
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
/**
* This class launches the web application in an embedded Jetty container.
* This is the entry point to your application. The Java
* command that is used for launching should fire this main method.
*/
public class Main {
public static void main(String[] args) throws Exception{
// The port that we should run on can be set into an environment
variable
// Look for that variable and default to 8080 if it isn't there.
String webPort = System.getenv("PORT");
if (webPort == null || webPort.isEmpty()) {
webPort = "8080";
}
final Server server = new Server(Integer.valueOf(webPort));
final WebAppContext root = new WebAppContext();
root.setContextPath("/");
root.setParentLoaderPriority(true);
final String webappDirLocation = "src/main/webapp/";
root.setDescriptor(webappDirLocation + "/WEB-INF/web.xml");
root.setResourceBase(webappDirLocation);
server.setHandler(root);
server.start();
server.join();
}
}
<http://www.backbutton.co.uk/>
On Mon, 5 Apr 2021, 01:31 Som Lima, <[email protected]> wrote:
> Thank you I also agree that is the correct jetty reponse.
>
> I am using embedded jetty 11.
> Using webAppContext for configuration.
> we also have agreed that
> " in jetty 11 there is indeed no ClassList, so that part is "broken". ".
>
> What other method of configuration I have available for adding
> features as and when I need them
> to the embedded jetty 11 org.eclipse.jetty.server.Server object apart
> from using ServletContextHandler ?
>
> Please send me link showing the instructions.
>
>
>
>
>
> On Sun, 4 Apr 2021, 23:23 Greg Wilkins, <[email protected]> wrote:
>
>> 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 <[email protected]> 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, <[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
>>>
>>
>>
>> --
>> Greg Wilkins <[email protected]> CTO http://webtide.com
>> _______________________________________________
>> 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