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

Reply via email to