diff --git a/modules/web/web-jetty/src/main/java/com/enonic/xp/web/jetty/impl/JettyActivator.java b/modules/web/web-jetty/src/main/java/com/enonic/xp/web/jetty/impl/JettyActivator.java index b44716b402d..6037798ad5c 100644 --- a/modules/web/web-jetty/src/main/java/com/enonic/xp/web/jetty/impl/JettyActivator.java +++ b/modules/web/web-jetty/src/main/java/com/enonic/xp/web/jetty/impl/JettyActivator.java @@ -57,6 +57,7 @@ public JettyActivator( final JettyConfig config ) @Activate public void activate( final BundleContext context ) + throws Exception { this.context = context; fixJettyVersion(); @@ -73,18 +74,17 @@ public void activate( final BundleContext context ) private void publishXpServletContext() { - ServletContext xpServletContext = - this.service.handlers().stream().map( handler -> (ServletContext) ( (ServletContextHandler) handler ).getServletContext() ). - filter( servletContext -> servletContext.getVirtualServerName(). - equals( DispatchConstants.VIRTUAL_HOST_PREFIX + DispatchConstants.XP_CONNECTOR ) ). - findAny().orElse( null ); - - xpServletContextReg = context.registerService( XpServletContextProvider.class, new XpServletContextProviderImpl( xpServletContext ), - new Hashtable<>() ); + this.service.handlers().stream().map( handler -> (ServletContext) ( (ServletContextHandler) handler ).getServletContext() ). + filter( servletContext -> servletContext.getVirtualServerName(). + equals( DispatchConstants.VIRTUAL_HOST_PREFIX + DispatchConstants.XP_CONNECTOR ) ). + findAny().ifPresent( xpServletContext -> xpServletContextReg = + context.registerService( XpServletContextProvider.class, new XpServletContextProviderImpl( xpServletContext ), + new Hashtable<>() ) ); } @Deactivate public void deactivate() + throws Exception { this.controllerReg.unregister(); this.statusReporterReg.unregister(); diff --git a/modules/web/web-jetty/src/main/java/com/enonic/xp/web/jetty/impl/JettyService.java b/modules/web/web-jetty/src/main/java/com/enonic/xp/web/jetty/impl/JettyService.java index ec3bc3de0a1..aeb339029f8 100644 --- a/modules/web/web-jetty/src/main/java/com/enonic/xp/web/jetty/impl/JettyService.java +++ b/modules/web/web-jetty/src/main/java/com/enonic/xp/web/jetty/impl/JettyService.java @@ -28,7 +28,6 @@ final class JettyService private final JettyConfig config; - private final JettySessionStorageFactories jettySessionStorageFactories; private Server server; @@ -43,36 +42,6 @@ public JettyService( final JettySessionStorageFactories jettySessionStorageFacto this.config = config; } - public void start() - { - try - { - startJetty(); - } - catch ( final Exception e ) - { - stop(); - LOG.error( "Exception while starting Jetty", e ); - } - } - - public void stop() - { - if ( this.server == null ) - { - return; - } - - try - { - stopJetty(); - } - catch ( final Exception e ) - { - LOG.error( "Exception while stopping Jetty", e ); - } - } - int httpPort() { return config.http_xp_port(); @@ -89,32 +58,32 @@ List handlers() return handlers == null ? List.of() : List.of( handlers ); } - private void startJetty() + public void start() throws Exception { - this.server = new Server(); - + final Server server = new Server(); - new HttpConfigurator().configure( this.config, this.server ); + new HttpConfigurator().configure( this.config, server ); Metrics.removeAll( Handler.class ); final InstrumentedHandler instrumentedHandler = new InstrumentedHandler( Metrics.registry(), Handler.class.getName() ); instrumentedHandler.setHandler( contexts ); - this.server.setHandler( contexts ); + server.setHandler( contexts ); - final DefaultSessionIdManager sessionManager = new DefaultSessionIdManager( this.server ); + final DefaultSessionIdManager sessionManager = new DefaultSessionIdManager( server ); if ( jettySessionStorageFactories != null ) { - this.server.addBean( jettySessionStorageFactories.getSessionDataStoreFactory() ); - this.server.addBean( jettySessionStorageFactories.getSessionCacheFactory() ); + server.addBean( jettySessionStorageFactories.getSessionDataStoreFactory() ); + server.addBean( jettySessionStorageFactories.getSessionCacheFactory() ); sessionManager.setWorkerName( jettySessionStorageFactories.getWorkerName() ); } - this.server.setSessionIdManager( sessionManager ); + server.setSessionIdManager( sessionManager ); - this.server.start(); + server.start(); + this.server = server; LOG.info( "Started Jetty" ); LOG.info( "Listening on ports [{}](xp), [{}](management) and [{}](monitoring)", config.http_xp_port(), config.http_management_port(), config.http_monitor_port() ); @@ -137,12 +106,16 @@ public static ServletContextHandler initServletContextHandler( final DispatchSer return context; } - private void stopJetty() + public void stop() throws Exception { - this.server.stop(); - this.server = null; - LOG.info( "Stopped Jetty" ); + final Server server = this.server; + if ( server != null ) + { + server.stop(); + this.server = null; + LOG.info( "Stopped Jetty" ); + } } public Server getServer()