You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mg...@apache.org on 2020/10/21 09:03:39 UTC

[tomcat] branch 9.0.x updated: Add GraalVM config for Tomcat JNI

This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/9.0.x by this push:
     new 6287552  Add GraalVM config for Tomcat JNI
6287552 is described below

commit 6287552d9a14b698990954c6591f5f8512bc4a78
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Wed Oct 21 11:59:30 2020 +0300

    Add GraalVM config for Tomcat JNI
    
    This way it is possible to use the APR connector in GraalVM native images
    
    (cherry picked from commit c6f576416900a4e72aa9a2d8ddf97b1e41f1220a)
---
 .../native-image/native-image.properties           |  2 +-
 .../tomcat-embed-core/native-image/tomcat-jni.json | 34 ++++++++++++++++++++++
 webapps/docs/changelog.xml                         |  4 +++
 3 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/res/graal/tomcat-embed-core/native-image/native-image.properties b/res/graal/tomcat-embed-core/native-image/native-image.properties
index 29b501f..5cbfb55 100644
--- a/res/graal/tomcat-embed-core/native-image/native-image.properties
+++ b/res/graal/tomcat-embed-core/native-image/native-image.properties
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-Args = -H:ReflectionConfigurationResources=${.}/tomcat-reflection.json -H:ResourceConfigurationResources=${.}/tomcat-resource.json
\ No newline at end of file
+Args = -H:ReflectionConfigurationResources=${.}/tomcat-reflection.json -H:ResourceConfigurationResources=${.}/tomcat-resource.json -H:JNIConfigurationResources=${.}/tomcat-jni.json
diff --git a/res/graal/tomcat-embed-core/native-image/tomcat-jni.json b/res/graal/tomcat-embed-core/native-image/tomcat-jni.json
new file mode 100644
index 0000000..d53270c
--- /dev/null
+++ b/res/graal/tomcat-embed-core/native-image/tomcat-jni.json
@@ -0,0 +1,34 @@
+[
+  { "name":"org.apache.tomcat.jni.Address", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Buffer", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Directory", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Error", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.File", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.FileInfo", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Global", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Library", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Local", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Lock", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Mmap", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Multicast", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.OS", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Poll", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Pool", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Proc", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Procattr", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Registry", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Shm", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Sockaddr", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Socket", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.SSL", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.SSLConf", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.SSLContext", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.SSLSocket", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Status", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Stdlib", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Thread", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.Time", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"org.apache.tomcat.jni.User", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true},
+  { "name":"java.lang.String", "allDeclaredConstructors" : true,"allPublicConstructors" : true,"allDeclaredMethods" : true,"allPublicMethods" : true,"allDeclaredClasses" : true,"allPublicClasses" : true,"allPublicFields" : true,"allDeclaredFields" : true}
+
+]
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 4bf0caf..7f3012d 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -79,6 +79,10 @@
         <code>ErrorReportValve</code> that returns  response as JSON instead of
         HTML. (kfujino)
       </add>
+      <add>
+        Add GraalVM config for Tomcat JNI related classes. This makes it possible to use the APR
+        protocol in GraalVM native images. (mgrigorov)
+      </add>
       <fix>
         JNDIRealm connections should only be created with the container
         classloader as the thread context classloader, just like for the JAAS


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org