From 254549b06c6ff14e82d97e8a9fd16946685554d6 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 8 Jun 2022 12:44:12 +0200 Subject: [PATCH] Static CMS working as native image. --- .../META-INF/native-image/jni-config.json | 31 ++++++++++ .../META-INF/native-image/reflect-config.json | 51 ++--------------- .../native-image/resource-config.json | 56 ++----------------- .../src/org/argeo/cms/runtime/StaticCms.java | 9 +++ 4 files changed, 49 insertions(+), 98 deletions(-) diff --git a/org.argeo.cms/META-INF/native-image/jni-config.json b/org.argeo.cms/META-INF/native-image/jni-config.json index 0d4f101c7..25530bb80 100644 --- a/org.argeo.cms/META-INF/native-image/jni-config.json +++ b/org.argeo.cms/META-INF/native-image/jni-config.json @@ -1,2 +1,33 @@ [ +{ + "name":"java.lang.Boolean", + "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.ClassLoader", + "methods":[ + {"name":"getPlatformClassLoader","parameterTypes":[] }, + {"name":"loadClass","parameterTypes":["java.lang.String"] } + ] +}, +{ + "name":"jdk.internal.loader.ClassLoaders$PlatformClassLoader" +}, +{ + "name":"org.graalvm.jniutils.JNIExceptionWrapperEntryPoints", + "methods":[{"name":"getClassName","parameterTypes":["java.lang.Class"] }] +}, +{ + "name":"sun.management.VMManagementImpl", + "fields":[ + {"name":"compTimeMonitoringSupport"}, + {"name":"currentThreadCpuTimeSupport"}, + {"name":"objectMonitorUsageSupport"}, + {"name":"otherThreadCpuTimeSupport"}, + {"name":"remoteDiagnosticCommandsSupport"}, + {"name":"synchronizerUsageSupport"}, + {"name":"threadAllocatedMemorySupport"}, + {"name":"threadContentionMonitoringSupport"} + ] +} ] diff --git a/org.argeo.cms/META-INF/native-image/reflect-config.json b/org.argeo.cms/META-INF/native-image/reflect-config.json index d40fca865..681b87327 100644 --- a/org.argeo.cms/META-INF/native-image/reflect-config.json +++ b/org.argeo.cms/META-INF/native-image/reflect-config.json @@ -1,56 +1,13 @@ [ { - "name":"[B" + "name":"javax.security.auth.login.Configuration$Parameters" }, { - "name":"[Ljava.lang.String;" + "name":"sun.security.provider.ConfigFile$Spi", + "methods":[{"name":"","parameterTypes":["javax.security.auth.login.Configuration$Parameters"] }] }, { - "name":"[Lsun.security.pkcs.SignerInfo;" -}, -{ - "name":"com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"java.lang.String" -}, -{ - "name":"java.util.Date" -}, -{ - "name":"javax.security.auth.x500.X500Principal", - "fields":[{"name":"thisX500Name"}], - "queriedMethods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }] -}, -{ - "name":"org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.apache.xerces.impl.dv.dtd.XML11DTDDVFactoryImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.apache.xerces.impl.dv.xs.ExtendedSchemaDVFactoryImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.apache.xerces.impl.dv.xs.SchemaDVFactoryImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.apache.xerces.impl.xs.XSMessageFormatter", + "name":"sun.security.provider.SHA", "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.apache.xerces.parsers.XIncludeAwareParserConfiguration", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.util.ObjectIdentifier" -}, -{ - "name":"sun.security.x509.CertificateExtensions" } ] diff --git a/org.argeo.cms/META-INF/native-image/resource-config.json b/org.argeo.cms/META-INF/native-image/resource-config.json index 67d6d894c..b28e758e1 100644 --- a/org.argeo.cms/META-INF/native-image/resource-config.json +++ b/org.argeo.cms/META-INF/native-image/resource-config.json @@ -2,63 +2,17 @@ "resources":{ "includes":[ { - "pattern":"\\QMETA-INF/services/javax.xml.validation.SchemaFactory\\E" + "pattern":"\\Qorg/argeo/cms/internal/runtime/dc=example,dc=com.ldif\\E" }, { - "pattern":"\\Qorg/argeo/cms/acr/schemas/DSMLv2.xsd\\E" + "pattern":"\\Qorg/argeo/cms/internal/runtime/jaas.cfg\\E" }, { - "pattern":"\\Qorg/argeo/cms/acr/schemas/SVG.xsd\\E" + "pattern":"\\Qorg/argeo/cms/internal/runtime/ou=roles,ou=node.ldif\\E" }, { - "pattern":"\\Qorg/argeo/cms/acr/schemas/XForms-11-Schema.xsd\\E" - }, - { - "pattern":"\\Qorg/argeo/cms/acr/schemas/XMLSchema.xsd\\E" - }, - { - "pattern":"\\Qorg/argeo/cms/acr/schemas/cr.xsd\\E" - }, - { - "pattern":"\\Qorg/argeo/cms/acr/schemas/docbook.xsd\\E" - }, - { - "pattern":"\\Qorg/argeo/cms/acr/schemas/schema-for-xslt20.xsd\\E" - }, - { - "pattern":"\\Qorg/argeo/cms/acr/schemas/xlink.xsd\\E" - }, - { - "pattern":"\\Qorg/argeo/cms/acr/schemas/xml-events-attribs-1.xsd\\E" - }, - { - "pattern":"\\Qorg/argeo/cms/acr/schemas/xml.xsd\\E" - }, - { - "pattern":"\\Qorg/argeo/cms/acr/schemas/datatypes.dtd\\E" - }, - { - "pattern":"\\Qorg/argeo/cms/acr/schemas/XMLSchema.dtd\\E" + "pattern":"\\Qorg/argeo/cms/internal/runtime/ou=tokens,ou=node.ldif\\E" } ]}, - "bundles":[ - { - "name":"org.apache.xerces.impl.xpath.regex.message", - "locales":[ - "", - "en" - ] - }, - { - "name":"org.apache.xerces.impl.msg.XMLSchemaMessages", - "locales":[ - "", - "en" - ] - }, - { - "name":"sun.security.util.Resources", - "classNames":["sun.security.util.Resources"] - } - ] + "bundles":[] } diff --git a/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java b/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java index 540da48c2..5df9e31dd 100644 --- a/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java +++ b/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java @@ -1,5 +1,7 @@ package org.argeo.cms.runtime; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Dictionary; import java.util.concurrent.CompletableFuture; @@ -102,6 +104,13 @@ public class StaticCms { } public static void main(String[] args) { + if (args.length == 0) { + System.err.println("Usage: "); + System.exit(1); + } + Path instancePath = Paths.get(args[0]); + System.setProperty("osgi.instance.area", instancePath.toUri().toString()); + StaticCms staticCms = new StaticCms(); Runtime.getRuntime().addShutdownHook(new Thread(() -> staticCms.stop(), "Static CMS Shutdown")); staticCms.start(); -- 2.30.2