-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
HH-80325 jersey and spring integration
- Loading branch information
Artur Khalikov
committed
Aug 6, 2018
1 parent
8b654c2
commit 09aac8f
Showing
11 changed files
with
128 additions
and
99 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
68 changes: 62 additions & 6 deletions
68
nab-starter/src/main/java/ru/hh/nab/starter/NabApplicationContext.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,73 @@ | ||
package ru.hh.nab.starter; | ||
|
||
import org.eclipse.jetty.server.Server; | ||
import org.eclipse.jetty.servlet.ServletContextHandler; | ||
import org.eclipse.jetty.util.thread.ThreadPool; | ||
import org.glassfish.jersey.server.ResourceConfig; | ||
import org.springframework.context.ApplicationContext; | ||
import org.springframework.context.ApplicationContextException; | ||
import org.springframework.web.context.WebApplicationContext; | ||
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; | ||
import ru.hh.nab.common.properties.FileSettings; | ||
import ru.hh.nab.starter.server.jetty.JettyServer; | ||
import ru.hh.nab.starter.server.jetty.JettyServerFactory; | ||
import ru.hh.nab.starter.servlet.ServletConfig; | ||
|
||
class NabApplicationContext extends AnnotationConfigWebApplicationContext { | ||
import java.lang.management.ManagementFactory; | ||
|
||
private volatile Server server; | ||
public class NabApplicationContext extends AnnotationConfigWebApplicationContext { | ||
|
||
private volatile JettyServer jettyServer; | ||
|
||
private final ServletConfig servletConfig; | ||
|
||
public NabApplicationContext(ServletConfig servletConfig, Class<?>... primarySources) { | ||
this.servletConfig = servletConfig; | ||
register(primarySources); | ||
registerShutdownHook(); | ||
} | ||
|
||
@Override | ||
protected void finishRefresh() { | ||
super.finishRefresh(); | ||
startJettyServer(); | ||
printStartupInfo(); | ||
} | ||
|
||
private void startJettyServer() { | ||
JettyServer jettyServer = this.jettyServer; | ||
try { | ||
if (jettyServer == null) { | ||
FileSettings jettySettings = getBean(FileSettings.class); | ||
ThreadPool threadPool = getBean(ThreadPool.class); | ||
ResourceConfig resourceConfig = getBean(ResourceConfig.class); | ||
|
||
this.jettyServer = JettyServerFactory.create(jettySettings, threadPool, resourceConfig, servletConfig, (contextHandler) -> { | ||
configureServletContext(contextHandler, this, servletConfig); | ||
setServletContext(contextHandler.getServletContext()); | ||
}); | ||
|
||
this.jettyServer.start(); | ||
} | ||
} catch (Throwable t) { | ||
throw new ApplicationContextException("Unable to start application server", t); | ||
} | ||
} | ||
|
||
public static void configureServletContext(ServletContextHandler handler, ApplicationContext applicationContext, ServletConfig servletConfig) { | ||
handler.getServletContext().setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, applicationContext); | ||
servletConfig.configureServletContext(handler, applicationContext); | ||
} | ||
|
||
boolean isServerRunning() { | ||
return server.isRunning(); | ||
return jettyServer.isRunning(); | ||
} | ||
|
||
private void printStartupInfo() { | ||
AppMetadata appMetadata = getBean(AppMetadata.class); | ||
System.out.println(appMetadata.getStatus() + ", pid " + getCurrentPid()); | ||
} | ||
|
||
void setServer(Server server) { | ||
this.server = server; | ||
private static String getCurrentPid() { | ||
return ManagementFactory.getRuntimeMXBean().getName().split("@")[0]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 3 additions & 1 deletion
4
...java/ru/hh/nab/starter/StatsResource.java → ...h/nab/starter/resource/StatsResource.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 7 additions & 1 deletion
8
...ava/ru/hh/nab/starter/StatusResource.java → .../nab/starter/resource/StatusResource.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 9 additions & 0 deletions
9
nab-starter/src/main/java/ru/hh/nab/starter/servlet/JerseyServletContextInitializer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package ru.hh.nab.starter.servlet; | ||
|
||
import org.eclipse.jetty.servlet.ServletContextHandler; | ||
|
||
@FunctionalInterface | ||
public interface JerseyServletContextInitializer { | ||
|
||
void onStartup(ServletContextHandler contextHandler); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters