You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2019/05/13 08:18:15 UTC
[tomcat] branch master updated: More Graal tweaks and docs
This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push:
new 44fbe2c More Graal tweaks and docs
44fbe2c is described below
commit 44fbe2c47b43232d47e43134faf56084e3217408
Author: remm <re...@apache.org>
AuthorDate: Mon May 13 10:18:04 2019 +0200
More Graal tweaks and docs
There's still a lot I need to test, fix and verify ...
---
java/org/apache/catalina/loader/WebappClassLoaderBase.java | 10 ++++++----
res/tomcat-maven/README.md | 11 +++++++----
res/tomcat-maven/tomcat-reflection.json | 1 +
3 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/java/org/apache/catalina/loader/WebappClassLoaderBase.java b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
index 1ee573b..7418744 100644
--- a/java/org/apache/catalina/loader/WebappClassLoaderBase.java
+++ b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
@@ -1614,19 +1614,21 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
}
}
- // De-register any remaining JDBC drivers
- clearReferencesJdbc();
+ if (!JreCompat.isGraalAvailable()) {
+ // De-register any remaining JDBC drivers
+ clearReferencesJdbc();
+ }
// Stop any threads the web application started
clearReferencesThreads();
// Clear any references retained in the serialization caches
- if (clearReferencesObjectStreamClassCaches) {
+ if (clearReferencesObjectStreamClassCaches && !JreCompat.isGraalAvailable()) {
clearReferencesObjectStreamClassCaches();
}
// Check for leaks triggered by ThreadLocals loaded by this class loader
- if (clearReferencesThreadLocals) {
+ if (clearReferencesThreadLocals && !JreCompat.isGraalAvailable()) {
checkThreadLocalsForLeaks();
}
diff --git a/res/tomcat-maven/README.md b/res/tomcat-maven/README.md
index 2afbf36..170939a 100644
--- a/res/tomcat-maven/README.md
+++ b/res/tomcat-maven/README.md
@@ -80,8 +80,6 @@ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -
## Native Image
-Note: Graal support in Tomcat is not functional yet.
-
Download Graal native-image and tools.
```
export JAVA_HOME=/absolute...path...to/graalvm-ce-19.0.0
@@ -89,16 +87,21 @@ export TOMCAT_MAVEN=/absolute...path...to/tomcat-maven
cd $JAVA_HOME/bin
./gu install native-image
```
+As Graal does not support dynamic class loading, all Servlets and support classes of the webapp, which would traditionally be placed
+in `/WEB-INF/classes` and `/WEB-INF/lib`, must be included as part of the tomcat-maven build process, so they are packaged into the
+`target/tomcat-maven-1.0.jar`.
+
Run Tomcat with the agent in full trace mode.
```
cd $TOMCAT_MAVEN
$JAVA_HOME/bin/java -agentlib:native-image-agent=trace-output=$TOMCAT_MAVEN/target/trace-file.json -jar target/tomcat-maven-1.0.jar
```
-Then exercise necessary paths of your service with the Tomcat configuration. Do not try to run any JSPs.
+Then exercise necessary paths of your service with the Tomcat configuration. Any changes to the Tomcat configuration requires running
+the substrate VM with the agent again.
Generate the final json files using native-image-configuration then use native image using the generated reflection metadata:
```
$JAVA_HOME/bin/native-image-configure generate --trace-input=$TOMCAT_MAVEN/target/trace-file.json --output-dir=$TOMCAT_MAVEN/target
-$JAVA_HOME/bin/native-image --allow-incomplete-classpath -H:+ReportUnsupportedElementsAtRuntime -H:ConfigurationFileDirectories=$TOMCAT_MAVEN/target/ -H:ReflectionConfigurationFiles=$TOMCAT_MAVEN/tomcat-reflection.json -H:ResourceConfigurationFiles=$TOMCAT_MAVEN/tomcat-resource.json -H:ResourceConfigurationFiles=$TOMCAT_MAVEN/tomcat-resource.json -jar $TOMCAT_MAVEN/target/tomcat-maven-1.0.jar
+$JAVA_HOME/bin/native-image --allow-incomplete-classpath -H:+ReportUnsupportedElementsAtRuntime -H:EnableURLProtocols=jar -H:ConfigurationFileDirectories=$TOMCAT_MAVEN/target/ -H:ReflectionConfigurationFiles=$TOMCAT_MAVEN/tomcat-reflection.json -H:ResourceConfigurationFiles=$TOMCAT_MAVEN/tomcat-resource.json -H:ResourceConfigurationFiles=$TOMCAT_MAVEN/tomcat-resource.json -jar $TOMCAT_MAVEN/target/tomcat-maven-1.0.jar
./tomcat-maven-1.0 -Dcatalina.base=. -Djava.util.logging.config.file=conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
```
diff --git a/res/tomcat-maven/tomcat-reflection.json b/res/tomcat-maven/tomcat-reflection.json
index d1bbf79..9d799d3 100644
--- a/res/tomcat-maven/tomcat-reflection.json
+++ b/res/tomcat-maven/tomcat-reflection.json
@@ -11,6 +11,7 @@
"name" : "org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl",
"methods" : [{"name": "<init>","parameterTypes":[] }]
},
+{ "name":"java.lang.Object" },
{ "name":"javax.servlet.http.HttpServlet" },
{ "name":"org.apache.catalina.AccessLog" },
{ "name":"org.apache.catalina.AsyncDispatcher" },
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org