summaryrefslogtreecommitdiffhomepage
path: root/src/java
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2021-12-27 16:37:36 +0300
committerMax Romanov <max.romanov@nginx.com>2021-12-27 16:37:36 +0300
commit818a78d82cd9aeb6c7429ef97cd1f39f9053b909 (patch)
tree6ff77bcfef5920a752c155bc295eb3c00a30fe2a /src/java
parentf8452838207d56892fb80b5976b37aab1efcaa1e (diff)
downloadunit-818a78d82cd9aeb6c7429ef97cd1f39f9053b909.tar.gz
unit-818a78d82cd9aeb6c7429ef97cd1f39f9053b909.tar.bz2
Java: fixing multiple SCI initializations.
- Ignoring Tomcat WebSocket container initialization. - Renaming application class loader to UnitClassLoader to avoid development environment enablement in Spring Boot. This closes #609 issue on GitHub.
Diffstat (limited to 'src/java')
-rw-r--r--src/java/nginx/unit/Context.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/java/nginx/unit/Context.java b/src/java/nginx/unit/Context.java
index 0197858b..e1245e1f 100644
--- a/src/java/nginx/unit/Context.java
+++ b/src/java/nginx/unit/Context.java
@@ -422,7 +422,7 @@ public class Context implements ServletContext, InitParams
processWebXml(root);
- loader_ = new AppClassLoader(urls,
+ loader_ = new UnitClassLoader(urls,
Context.class.getClassLoader().getParent());
Class wsSession_class = WsSession.class;
@@ -531,7 +531,7 @@ public class Context implements ServletContext, InitParams
}
}
- private static class AppClassLoader extends URLClassLoader
+ private static class UnitClassLoader extends URLClassLoader
{
static {
ClassLoader.registerAsParallelCapable();
@@ -547,7 +547,7 @@ public class Context implements ServletContext, InitParams
private ClassLoader system_loader;
- public AppClassLoader(URL[] urls, ClassLoader parent)
+ public UnitClassLoader(URL[] urls, ClassLoader parent)
{
super(urls, parent);
@@ -1514,6 +1514,18 @@ public class Context implements ServletContext, InitParams
{
trace("loadInitializer: initializer: " + sci.getClass().getName());
+ /*
+ Unit WebSocket container is a copy of Tomcat WsSci with own
+ transport implementation. Tomcat implementation will not work in
+ Unit and should be ignored here.
+ */
+ if (sci.getClass().getName()
+ .equals("org.apache.tomcat.websocket.server.WsSci"))
+ {
+ trace("loadInitializer: ignore");
+ return;
+ }
+
HandlesTypes ann = sci.getClass().getAnnotation(HandlesTypes.class);
if (ann == null) {
trace("loadInitializer: no HandlesTypes annotation");
@@ -1558,7 +1570,6 @@ public class Context implements ServletContext, InitParams
try {
sci.onStartup(handles_classes, this);
- metadata_complete_ = true;
} catch(Exception e) {
System.err.println("loadInitializer: exception caught: " + e.toString());
}