Author: rmannibucau
Date: Wed Mar 17 17:35:01 2021
New Revision: 1072580

Log:
Site checkin for project Meecrowave :: Doc

Modified:
    websites/production/openwebbeans/content/meecrowave/community.pdf
    websites/production/openwebbeans/content/meecrowave/companion-projects.pdf
    websites/production/openwebbeans/content/meecrowave/components.pdf
    websites/production/openwebbeans/content/meecrowave/download.pdf
    websites/production/openwebbeans/content/meecrowave/howto.html
    websites/production/openwebbeans/content/meecrowave/howto.pdf
    websites/production/openwebbeans/content/meecrowave/meecrowave-core/cli.pdf
    
websites/production/openwebbeans/content/meecrowave/meecrowave-core/configuration.pdf
    
websites/production/openwebbeans/content/meecrowave/meecrowave-core/deploy-webapp.pdf
    
websites/production/openwebbeans/content/meecrowave/meecrowave-gradle/index.pdf
    websites/production/openwebbeans/content/meecrowave/meecrowave-jpa/index.pdf
    websites/production/openwebbeans/content/meecrowave/meecrowave-jta/index.pdf
    
websites/production/openwebbeans/content/meecrowave/meecrowave-letsencrypt/index.pdf
    
websites/production/openwebbeans/content/meecrowave/meecrowave-maven/index.pdf
    
websites/production/openwebbeans/content/meecrowave/meecrowave-oauth2/index.pdf
    
websites/production/openwebbeans/content/meecrowave/meecrowave-proxy/index.pdf
    websites/production/openwebbeans/content/meecrowave/start.pdf
    websites/production/openwebbeans/content/meecrowave/testing/index.html
    websites/production/openwebbeans/content/meecrowave/testing/index.pdf

Modified: websites/production/openwebbeans/content/meecrowave/community.pdf
==============================================================================
Binary files - no diff available.

Modified: 
websites/production/openwebbeans/content/meecrowave/companion-projects.pdf
==============================================================================
Binary files - no diff available.

Modified: websites/production/openwebbeans/content/meecrowave/components.pdf
==============================================================================
Binary files - no diff available.

Modified: websites/production/openwebbeans/content/meecrowave/download.pdf
==============================================================================
Binary files - no diff available.

Modified: websites/production/openwebbeans/content/meecrowave/howto.html
==============================================================================
--- websites/production/openwebbeans/content/meecrowave/howto.html (original)
+++ websites/production/openwebbeans/content/meecrowave/howto.html Wed Mar 17 
17:35:01 2021
@@ -412,6 +412,481 @@ public class RewriteValveCustomizer impl
 </div>
 </div>
 </div>
+<div class="sect1">
+<h2 id="_how_to_compile_a_meecrowave_application_with_graalvm">How to compile 
a Meecrowave application with GraalVM</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can use <code>native-image</code> directly but for this how to, we will 
use <a href="http://geronimo.apache.org/arthur/";>Apache Arthur</a> which 
enables to do it through Apache Maven.
+The trick is to define the Tomcat and Meecrowave resources to use to convert 
the Java application in a native binary.
+For a simple application here is how it can be done.</p>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+we use <a href="https://yupiik.github.io/yupiik-logging/";>Yupiik Logging</a> 
in this sample to replace Log4j2 which is not GraalVM friendly, this JUL 
implementation enables runtime configuration even for Graalified binaries.
+</td>
+</tr>
+</table>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml 
hljs">&lt;plugin&gt; &lt;!-- mvn -Parthur arthur:native-image@runtime -e --&gt;
+  &lt;groupId&gt;org.apache.geronimo.arthur&lt;/groupId&gt;
+  &lt;artifactId&gt;arthur-maven-plugin&lt;/artifactId&gt;
+  &lt;version&gt;${arthur.version}&lt;/version&gt; &lt;!-- &gt;= 1.0.3 or 
replace openwebbeans extension by openwebbeans 2.0.22 dep + openwebbeans-knight 
with arthur v1.0.2 --&gt;
+  &lt;executions&gt;
+    &lt;execution&gt;
+      &lt;id&gt;graalify&lt;/id&gt;
+      &lt;phase&gt;package&lt;/phase&gt;
+      &lt;goals&gt;
+        &lt;goal&gt;native-image&lt;/goal&gt;
+      &lt;/goals&gt;
+    &lt;/execution&gt;
+  &lt;/executions&gt;
+  &lt;configuration&gt;
+    &lt;graalVersion&gt;21.0.0.2.r11&lt;/graalVersion&gt; &lt;!-- use this 
graal version (java 11 here) --&gt;
+    &lt;main&gt;org.apache.meecrowave.runner.Cli&lt;/main&gt; &lt;!-- set up 
meecrowave default main - requires commons-cli --&gt;
+    &lt;buildStaticImage&gt;false&lt;/buildStaticImage&gt; &lt;!-- up to you 
but using arthur docker goals it works fine and avoids some graalvm bugs --&gt;
+    &lt;usePackagedArtifact&gt;true&lt;/usePackagedArtifact&gt; &lt;!-- 
optional but enables a more deterministic run generally --&gt;
+    &lt;graalExtensions&gt; &lt;!-- enable CDI --&gt;
+      &lt;graalExtension&gt;openwebbeans&lt;/graalExtension&gt;
+    &lt;/graalExtensions&gt;
+    &lt;reflections&gt; &lt;!-- enable cxf/owb/tomcat main reflection points  
--&gt;
+      &lt;reflection&gt; &lt;!-- used by meecrowave to test cxf presence --&gt;
+        &lt;name&gt;org.apache.cxf.BusFactory&lt;/name&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;javax.ws.rs.core.UriInfo&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;javax.ws.rs.core.HttpHeaders&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;javax.ws.rs.core.Request&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;javax.ws.rs.core.SecurityContext&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;javax.ws.rs.ext.Providers&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;javax.ws.rs.ext.ContextResolver&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;javax.servlet.http.HttpServletRequest&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;javax.servlet.http.HttpServletResponse&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;javax.ws.rs.core.Application&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- meecrowave registers it programmatically 
--&gt;
+        
&lt;name&gt;org.apache.meecrowave.cxf.JAXRSFieldInjectionInterceptor&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.bus.managers.CXFBusLifeCycleManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.bus.managers.ClientLifeCycleManagerImpl&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.bus.managers.EndpointResolverRegistryImpl&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.bus.managers.HeaderManagerImpl&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.bus.managers.PhaseManagerImpl&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.bus.managers.ServerRegistryImpl&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.bus.managers.WorkQueueManagerImpl&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.bus.resource.ResourceManagerImpl&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.catalog.OASISCatalogManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.common.spi.ClassLoaderProxyService&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.common.util.ASMHelperImpl&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.service.factory.FactoryBeanListenerManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.transport.http.HTTPTransportFactory&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.catalog.OASISCatalogManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.endpoint.ClientLifeCycleManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.buslifecycle.BusLifeCycleManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.phase.PhaseManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.resource.ResourceManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.headers.HeaderManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.common.util.ASMHelper&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.common.spi.ClassLoaderService&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        
&lt;name&gt;org.apache.cxf.endpoint.EndpointResolverRegistry&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.endpoint.ServerLifeCycleManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.workqueue.WorkQueueManager&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- CXF SPI --&gt;
+        &lt;name&gt;org.apache.cxf.endpoint.ServerRegistry&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;org.apache.cxf.cdi.DefaultApplication&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;org.apache.cxf.transport.http.Headers&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        &lt;name&gt;org.apache.cxf.jaxrs.JAXRSBindingFactory&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- used by cxf-cdi to test owb-web presence 
--&gt;
+        
&lt;name&gt;org.apache.webbeans.web.lifecycle.WebContainerLifecycle&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- instantiated by a SPI --&gt;
+        &lt;name&gt;org.apache.meecrowave.logging.tomcat.LogFacade&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- for default binding since meecrowave uses a 
filter for jaxrs --&gt;
+        &lt;name&gt;org.apache.catalina.servlets.DefaultServlet&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- tomcat does reflection on it --&gt;
+        &lt;name&gt;org.apache.catalina.loader.WebappClassLoader&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- tomcat does reflection on it --&gt;
+        &lt;name&gt;org.apache.tomcat.util.descriptor.web.WebXml&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- tomcat does reflection on it --&gt;
+        &lt;name&gt;org.apache.coyote.http11.Http11NioProtocol&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- tomcat instantiates it by reflection --&gt;
+        
&lt;name&gt;org.apache.catalina.authenticator.NonLoginAuthenticator&lt;/name&gt;
+        &lt;allPublicConstructors&gt;true&lt;/allPublicConstructors&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- should be all API a proxy can be created for 
--&gt;
+        &lt;name&gt;javax.servlet.ServletContext&lt;/name&gt;
+        &lt;allPublicMethods&gt;true&lt;/allPublicMethods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- used by meecrowave integration --&gt;
+        &lt;name&gt;org.apache.cxf.jaxrs.provider.ProviderFactory&lt;/name&gt;
+        &lt;methods&gt;
+          &lt;method&gt;
+            &lt;name&gt;getReadersWriters&lt;/name&gt;
+          &lt;/method&gt;
+        &lt;/methods&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- used by meecrowave integration --&gt;
+        
&lt;name&gt;org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider$ProvidedInstance&lt;/name&gt;
+        &lt;fields&gt;
+          &lt;field&gt;
+            &lt;name&gt;instance&lt;/name&gt;
+          &lt;/field&gt;
+        &lt;/fields&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt;
+        
&lt;name&gt;org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider&lt;/name&gt;
+        &lt;fields&gt;
+          &lt;field&gt;
+            &lt;name&gt;providers&lt;/name&gt;
+          &lt;/field&gt;
+        &lt;/fields&gt;
+      &lt;/reflection&gt;
+      &lt;reflection&gt; &lt;!-- not needed with arthur 1.0.3 --&gt;
+        &lt;name&gt;org.apache.xbean.finder.AnnotationFinder&lt;/name&gt;
+        &lt;fields&gt;
+          &lt;field&gt;
+            &lt;name&gt;linking&lt;/name&gt;
+            &lt;allowWrite&gt;true&lt;/allowWrite&gt;
+          &lt;/field&gt;
+        &lt;/fields&gt;
+      &lt;/reflection&gt;
+    &lt;/reflections&gt;
+    &lt;resources&gt; &lt;!-- register tomcat resources and optionally default 
meecrowave app configuration --&gt;
+      &lt;resource&gt;
+        &lt;pattern&gt;org\/apache\/catalina\/.*\.properties&lt;/pattern&gt;
+      &lt;/resource&gt;
+      &lt;resource&gt;
+        
&lt;pattern&gt;javax\/servlet\/(jsp\/)?resources\/.*\.(xsd|dtd)&lt;/pattern&gt;
+      &lt;/resource&gt;
+      &lt;resource&gt;
+        &lt;pattern&gt;meecrowave\.properties&lt;/pattern&gt;
+      &lt;/resource&gt;
+      &lt;resource&gt;
+        &lt;pattern&gt;META-INF/cxf/bus-extensions\.txt&lt;/pattern&gt;
+      &lt;/resource&gt;
+      &lt;resource&gt;
+        
&lt;pattern&gt;org/apache/cxf/version/version\.properties&lt;/pattern&gt;
+      &lt;/resource&gt;
+    &lt;/resources&gt;
+    &lt;includeResourceBundles&gt;
+      
&lt;includeResourceBundle&gt;org.apache.cxf.Messages&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.cxf.interceptor.Messages&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.cxf.bus.managers.Messages&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.cxf.jaxrs.Messages&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.cxf.jaxrs.provider.Messages&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.cxf.jaxrs.interceptor.Messages&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.cxf.jaxrs.utils.Messages&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.cxf.transport.servlet.Messages&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.authenticator.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.connector.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.core.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.deploy.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.filters.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.loader.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.manager.host.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.manager.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.mapper.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.realm.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.security.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.servlets.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.session.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.startup.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.users.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.util.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.valves.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.valves.rewrite.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.catalina.webresources.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.coyote.http11.filters.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.coyote.http11.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.coyote.http11.upgrade.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.coyote.http2.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.coyote.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.buf.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.codec.binary.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.compat.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.descriptor.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.descriptor.tld.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.descriptor.web.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.digester.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.http.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.http.parser.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.json.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.modeler.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.net.jsse.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.net.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.net.openssl.ciphers.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.net.openssl.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.scan.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.security.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;org.apache.tomcat.util.threads.res.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;javax.servlet.LocalStrings&lt;/includeResourceBundle&gt;
+      
&lt;includeResourceBundle&gt;javax.servlet.http.LocalStrings&lt;/includeResourceBundle&gt;
+    &lt;/includeResourceBundles&gt;
+    &lt;extensionProperties&gt;
+      &lt;extension.annotation.custom.annotations.properties&gt;
+        
javax.json.bind.annotation.JsonbProperty:allDeclaredConstructors=true|allDeclaredMethods=true|allDeclaredFields=true,
+        org.apache.meecrowave.runner.cli.CliOption:allDeclaredFields=true
+      &lt;/extension.annotation.custom.annotations.properties&gt;
+      &lt;extension.openwebbeans.extension.excludes&gt;
+        org.apache.cxf.Bus,org.apache.cxf.common.util.ClassUnwrapper,
+        org.apache.cxf.interceptor.InterceptorProvider,
+        io.yupiik.logging.jul,
+        org.apache.openwebbeans.se
+      &lt;/extension.openwebbeans.extension.excludes&gt;
+    &lt;/extensionProperties&gt;
+    &lt;customOptions&gt; &lt;!-- force JUL usage since Log4j2 does not work 
well at all on GraalVM --&gt;
+      
&lt;customOption&gt;-Dopenwebbeans.logging.factory=org.apache.webbeans.logger.JULLoggerFactory&lt;/customOption&gt;
+      
&lt;customOption&gt;-Djava.util.logging.manager=io.yupiik.logging.jul.YupiikLogManager&lt;/customOption&gt;
+    &lt;/customOptions&gt;
+  &lt;/configuration&gt;
+&lt;/plugin&gt;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>In terms of dependencies you can start with this for example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml 
hljs">&lt;dependencies&gt;
+  &lt;dependency&gt;
+    &lt;groupId&gt;org.apache.meecrowave&lt;/groupId&gt;
+    &lt;artifactId&gt;meecrowave-specs-api&lt;/artifactId&gt;
+    &lt;version&gt;${meecrowave.version}&lt;/version&gt;
+  &lt;/dependency&gt;
+  &lt;dependency&gt;
+    &lt;groupId&gt;org.apache.meecrowave&lt;/groupId&gt;
+    &lt;artifactId&gt;meecrowave-core&lt;/artifactId&gt;
+    &lt;version&gt;${meecrowave.version}&lt;/version&gt;
+  &lt;/dependency&gt;
+  &lt;dependency&gt; &lt;!-- we use this to have a reconfigurable JUL runtime 
in native binary --&gt;
+    &lt;groupId&gt;io.yupiik.logging&lt;/groupId&gt;
+    &lt;artifactId&gt;yupiik-logging-jul&lt;/artifactId&gt;
+    &lt;version&gt;1.0.0&lt;/version&gt;
+  &lt;/dependency&gt;
+  &lt;dependency&gt; &lt;!-- using openwebbeans arthur knight, graalvm will 
use the scanner service from this module --&gt;
+    &lt;groupId&gt;org.apache.openwebbeans&lt;/groupId&gt;
+    &lt;artifactId&gt;openwebbeans-se&lt;/artifactId&gt;
+    &lt;version&gt;2.0.22&lt;/version&gt;
+  &lt;/dependency&gt;
+  &lt;dependency&gt;
+    &lt;groupId&gt;commons-cli&lt;/groupId&gt;
+    &lt;artifactId&gt;commons-cli&lt;/artifactId&gt;
+    &lt;version&gt;1.4&lt;/version&gt;
+  &lt;/dependency&gt;
+&lt;/dependencies&gt;</code></pre>
+</div>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+using a profile or a binary dedicated module you can keep the JVM mode using 
Log4j2 and the native mode using Yupiik Logging (just tweak dependencies and 
optionally use arthur exclude configuration).
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+an Arthur knight can be developed to replace all that configuration, it will 
auto-setup meecrowave/cxf/tomcat needed reflection, scan present tomcat and cxf 
bundles, auto register CXF SPI (bus-extensions.txt - optionally filtering them 
and the not loadable ones) classes for reflection, spec classes 
(<code>org.apache.cxf.jaxrs.utils.InjectionUtils.STANDARD_CONTEXT_CLASSES</code>),
 and likely inherit from openwebbeans extension CDI integration.
+It means that once done, using meecrowave can be as simple as 
<code>&lt;graalExtension&gt;meecrowave&lt;/graalExtension&gt;</code>. If you 
think it is worth the effort, don&#8217;t hesitate to do a pull request on 
Arthur or send a mail on <a 
href="mailto:d...@openwebbeans.apache.org";>d...@openwebbeans.apache.org</a>.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>With this setup you should get a <code>target/*.graal.bin</code> binary 
executable containing your application and meecrowave, just launch it to start 
your application and use it as a standard Meecrowave CLI!</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+until Apache OpenWebBeans 2.0.22, annotated mode can miss some beans, ensure 
to use 2.0.22 or more if you don&#8217;t explicitly add a beans.xml.
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+you can need to adjust a few classes depending what you use of CXF. Previous 
setup will be sufficient for a module containing:
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>+</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="java" class="language-java 
hljs">// test with:
+// $ curl http://localhost:8080/hello?name=foo -H 'accept: application/json'
+@Path("hello")
+@ApplicationScoped
+public class MyEndpoint {
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public Message get(@QueryParam("name") final String name) {
+        return new Message("Hello " + name + "!");
+    }
+
+    @Data
+    public static class Message {
+        @JsonbProperty // mark at least one property to let arthur find it, 
see extension.annotation.custom.annotations.properties
+        private String message;
+    }
+}</code></pre>
+</div>
+</div>
+</div>
+</div>
             </section><!--//doc-section-->
 
 


Reply via email to