Hi Team,
I have changed the following code in Jetty6 to Jetty9 migration. I'm facing an issue that Illegal StateException :'No contexts found"
Existing code in Jetty6:
this.jettyWebServer = new Server(); //org.mortbay.jetty.Server
ThreadPool threadPool = new ThreadPool(threadPoolSize);
jettyWebServer.setThreadPool(threadPool);
Connector connector = new SelectChannelConnector();
connector.setPort(port);
this.jettyWebServer.setConnectors(new Connector[]{connector});
WebAppDeployer webAppDeployer = new WebAppDeployer();
webAppDeployer.setContexts(this.jettyWebServer); /// setContexts method is not available in Jetty9
webAppDeployer.setWebAppDir(warpath);
webAppDeployer.setExtract(true);
webAppDeployer.setParentLoaderPriority(true);
webAppDeployer.start();
this.jettyWebServer.setStopAtShutdown(true);
this.jettyWebServer.setSendServerVersion(false);
this.jettyWebServer.start();
this.jettyWebServer.join();
I have modified the above code for Jetty9 as follows::
Jetty9 code:
DeploymentManager deploymentManager = new DeploymentManager(); // added DeploymentManager in Jetty9
QueuedThreadPool threadPool = new QueuedThreadPool(threadPoolSize);// Thread pool
threadPool.setMaxThreads(500);
this.jettyWebServer = new Server(threadPool);// org.eclipse.jetty.Server
ContextHandlerCollection contexts = new ContextHandlerCollection();
contexts.setHandlers(new Handler[] { context});
this.jettyWebServer.setHandler(contexts);
ServerConnector connector = new ServerConnector(jettyWebServer);
connector.setPort(port);
this.jettyWebServer.setConnectors(new Connector[]{connector});
WebAppProvider webAppDeployer = new WebAppProvider();// WebAppProvider replaced webAppDeployer in Jetty6
webAppDeployer.setExtractWars(true);
webAppDeployer.setParentLoaderPriority(true);
webAppDeployer.setMonitoredDirName(warpath);
deploymentManager.addAppProvider(webAppDeployer);
this.jettyWebServer.addBean(deploymentManager);
this.jettyWebServer.setStopAtShutdown(true);
this.jettyWebServer.start();
this.jettyWebServer.join();
In Jetty 9 code I have deploymentmanager and webAppProvider classes. Since there is no setContexts method in Jetty9 How can we set the context?. Also the jetty9 code is correct ?. Could you please help me ?.