Hi Lachlan, Would this replace previous handlers from the server?
Best, Aniruddha ======== ᐧ On Sun, May 2, 2021 at 6:47 PM Lachlan Roberts <[email protected]> wrote: > Aniruddha, > > You should not be setting the ServletContextHandler as the handler for > the server, but instead just add it to the ContextHandlerCollection. > > Try replacing the line > server.setHandler(ctx); with > contexts.addHandler(ctx); > > Cheers, > Lachlan > > On Mon, May 3, 2021 at 9:22 AM Aniruddha Tekade via jetty-users < > [email protected]> wrote: > >> Hello all, >> >> I am using Jetty 11 (Jakarta namespace ) and trying to integrate >> swagger into it. I am very new to swagger as well as Jetty, I am >> referring a github gist - >> https://gist.github.com/nosmokingpistol/302c4c3ef30f183cf70e >> >> When I looked at the examples of the swagger integration into Jetty, >> most of the projects create a ServletContextHandler and then add it into >> ContextHandlerCollection. And this seems to be the easiest option to work >> with. >> >> However, in my case, there are already pre-existing handlers of type >> ContextHandler added into contextHandlerCollection. So when I add >> my ServletContextHandler into ContextHandlerCollection and run the >> program, >> it fails at: >> >> Caused by: java.lang.IllegalStateException: InjectionManagerFactory not >> found. >> >> I need help with understanding how I can add different handlers into >> Jetty 11's >> ContextHandlerCollection and make it run successfully? >> >> My server main method : >> -------------------------- >> >> public static void main(String[] args) throws Exception { >> System.out.println("StartHFS"); >> >> // Create and configure a ThreadPool. >> QueuedThreadPool threadPool = new QueuedThreadPool(); >> threadPool.setName("server"); >> >> // Create a Server instance. >> Server server = new Server(threadPool); >> >> // HTTP configuration and connection factory. >> HttpConfiguration httpConfig = new HttpConfiguration(); >> HttpConnectionFactory http11 = new HttpConnectionFactory(httpConfig); >> >> // Create a ServerConnector to accept connections from clients. >> ServerConnector connector = new ServerConnector(server, 1, 1, http11); >> connector.setPort(8080); >> connector.setHost("0.0.0.0"); >> connector.setAcceptQueueSize(128); >> server.addConnector(connector); >> >> addHandlers(server); >> >> // Start the Server so it starts accepting connections from clients. >> server.start(); >> server.join(); >> >> System.out.println("StartHFS DONE"); >> } >> >> static void addHandlers(final Server server) throws Exception { >> ContextHandlerCollection contexts = new ContextHandlerCollection(); >> server.setHandler(contexts); >> >> ContextHandler logHandler = new ContextHandler("/log"); >> logHandler.setHandler(new LoggingHandler()); >> contexts.addHandler(logHandler); >> >> ContextHandler helloHandler = new ContextHandler("/hello"); >> helloHandler.setHandler(new HelloHandler()); >> contexts.addHandler(helloHandler); >> >> ContextHandler apiHandler = new ContextHandler("/api"); >> apiHandler.setHandler(new SampleApi()); >> contexts.addHandler(apiHandler); >> >> ServletContextHandler ctx = new >> ServletContextHandler(ServletContextHandler.NO_SESSIONS); >> ctx.setContextPath("/"); >> server.setHandler(ctx); >> ServletHolder servletHolder = ctx.addServlet(ServletContainer.class, >> "/rest/*"); >> servletHolder.setInitOrder(1); >> >> servletHolder.setInitParameter("jersey.config.server.provider.packages", >> "com.cloudian.handlers"); >> } >> >> -------------------------- >> >> My dependencies are from Jakarta 9 namespace (even for >> swagger-core/openapi3.0): >> >> -------------------------- >> >> dependencies { >> testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' >> testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' >> compile 'org.eclipse.jetty:jetty-server:11.0.0' >> compile 'org.eclipse.jetty:jetty-servlet:11.0.0' >> compile 'org.eclipse.jetty:jetty-util:11.0.0' >> implementation group: 'org.json', name: 'json', version: '20201115' >> >> // Jersey dependencies to setup jersey with Jetty >> implementation >> 'org.glassfish.jersey.containers:jersey-container-jetty-http:3.0.2' >> implementation 'org.glassfish.jersey.core:jersey-server:3.0.2' >> implementation >> 'org.glassfish.jersey.containers:jersey-container-servlet-core:3.0.2' >> >> // alternative to jaxrx.ws.rs for Jetty 11 >> implementation 'jakarta.ws.rs:jakarta.ws.rs-api:3.0.0' >> >> // Swagger core dependencies >> implementation 'io.swagger.core.v3:swagger-jaxrs2-jakarta:2.1.9' >> } >> >> -------------------------- >> >> How do I solve this issue? How do I make Jetty run even after adding >> servletContextHandler into ContextHandlerCollection? What is the mistake I >> am doing here? >> >> Best, >> Aniruddha >> ======== >> ᐧ >> _______________________________________________ >> 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
