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"><plugin> <!-- mvn -Parthur arthur:native-image@runtime -e -->
+ <groupId>org.apache.geronimo.arthur</groupId>
+ <artifactId>arthur-maven-plugin</artifactId>
+ <version>${arthur.version}</version> <!-- >= 1.0.3 or
replace openwebbeans extension by openwebbeans 2.0.22 dep + openwebbeans-knight
with arthur v1.0.2 -->
+ <executions>
+ <execution>
+ <id>graalify</id>
+ <phase>package</phase>
+ <goals>
+ <goal>native-image</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <graalVersion>21.0.0.2.r11</graalVersion> <!-- use this
graal version (java 11 here) -->
+ <main>org.apache.meecrowave.runner.Cli</main> <!-- set up
meecrowave default main - requires commons-cli -->
+ <buildStaticImage>false</buildStaticImage> <!-- up to you
but using arthur docker goals it works fine and avoids some graalvm bugs -->
+ <usePackagedArtifact>true</usePackagedArtifact> <!--
optional but enables a more deterministic run generally -->
+ <graalExtensions> <!-- enable CDI -->
+ <graalExtension>openwebbeans</graalExtension>
+ </graalExtensions>
+ <reflections> <!-- enable cxf/owb/tomcat main reflection points
-->
+ <reflection> <!-- used by meecrowave to test cxf presence -->
+ <name>org.apache.cxf.BusFactory</name>
+ </reflection>
+ <reflection>
+ <name>javax.ws.rs.core.UriInfo</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>javax.ws.rs.core.HttpHeaders</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>javax.ws.rs.core.Request</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>javax.ws.rs.core.SecurityContext</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>javax.ws.rs.ext.Providers</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>javax.ws.rs.ext.ContextResolver</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>javax.servlet.http.HttpServletRequest</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>javax.servlet.http.HttpServletResponse</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>javax.ws.rs.core.Application</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection> <!-- meecrowave registers it programmatically
-->
+
<name>org.apache.meecrowave.cxf.JAXRSFieldInjectionInterceptor</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.bus.managers.CXFBusLifeCycleManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.bus.managers.ClientLifeCycleManagerImpl</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.bus.managers.EndpointResolverRegistryImpl</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.bus.managers.HeaderManagerImpl</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.bus.managers.PhaseManagerImpl</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.bus.managers.ServerRegistryImpl</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.bus.managers.WorkQueueManagerImpl</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.bus.resource.ResourceManagerImpl</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.catalog.OASISCatalogManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.common.spi.ClassLoaderProxyService</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.common.util.ASMHelperImpl</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.service.factory.FactoryBeanListenerManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.transport.http.HTTPTransportFactory</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.catalog.OASISCatalogManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.endpoint.ClientLifeCycleManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.buslifecycle.BusLifeCycleManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.phase.PhaseManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.resource.ResourceManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.headers.HeaderManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.common.util.ASMHelper</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.common.spi.ClassLoaderService</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+
<name>org.apache.cxf.endpoint.EndpointResolverRegistry</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.endpoint.ServerLifeCycleManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.workqueue.WorkQueueManager</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- CXF SPI -->
+ <name>org.apache.cxf.endpoint.ServerRegistry</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection>
+ <name>org.apache.cxf.cdi.DefaultApplication</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>org.apache.cxf.transport.http.Headers</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection>
+ <name>org.apache.cxf.jaxrs.JAXRSBindingFactory</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- used by cxf-cdi to test owb-web presence
-->
+
<name>org.apache.webbeans.web.lifecycle.WebContainerLifecycle</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- instantiated by a SPI -->
+ <name>org.apache.meecrowave.logging.tomcat.LogFacade</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- for default binding since meecrowave uses a
filter for jaxrs -->
+ <name>org.apache.catalina.servlets.DefaultServlet</name>
+ <allPublicConstructors>true</allPublicMethods>
+ </reflection>
+ <reflection> <!-- tomcat does reflection on it -->
+ <name>org.apache.catalina.loader.WebappClassLoader</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection> <!-- tomcat does reflection on it -->
+ <name>org.apache.tomcat.util.descriptor.web.WebXml</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection> <!-- tomcat does reflection on it -->
+ <name>org.apache.coyote.http11.Http11NioProtocol</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection> <!-- tomcat instantiates it by reflection -->
+
<name>org.apache.catalina.authenticator.NonLoginAuthenticator</name>
+ <allPublicConstructors>true</allPublicConstructors>
+ </reflection>
+ <reflection> <!-- should be all API a proxy can be created for
-->
+ <name>javax.servlet.ServletContext</name>
+ <allPublicMethods>true</allPublicMethods>
+ </reflection>
+ <reflection> <!-- used by meecrowave integration -->
+ <name>org.apache.cxf.jaxrs.provider.ProviderFactory</name>
+ <methods>
+ <method>
+ <name>getReadersWriters</name>
+ </method>
+ </methods>
+ </reflection>
+ <reflection> <!-- used by meecrowave integration -->
+
<name>org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider$ProvidedInstance</name>
+ <fields>
+ <field>
+ <name>instance</name>
+ </field>
+ </fields>
+ </reflection>
+ <reflection>
+
<name>org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider</name>
+ <fields>
+ <field>
+ <name>providers</name>
+ </field>
+ </fields>
+ </reflection>
+ <reflection> <!-- not needed with arthur 1.0.3 -->
+ <name>org.apache.xbean.finder.AnnotationFinder</name>
+ <fields>
+ <field>
+ <name>linking</name>
+ <allowWrite>true</allowWrite>
+ </field>
+ </fields>
+ </reflection>
+ </reflections>
+ <resources> <!-- register tomcat resources and optionally default
meecrowave app configuration -->
+ <resource>
+ <pattern>org\/apache\/catalina\/.*\.properties</pattern>
+ </resource>
+ <resource>
+
<pattern>javax\/servlet\/(jsp\/)?resources\/.*\.(xsd|dtd)</pattern>
+ </resource>
+ <resource>
+ <pattern>meecrowave\.properties</pattern>
+ </resource>
+ <resource>
+ <pattern>META-INF/cxf/bus-extensions\.txt</pattern>
+ </resource>
+ <resource>
+
<pattern>org/apache/cxf/version/version\.properties</pattern>
+ </resource>
+ </resources>
+ <includeResourceBundles>
+
<includeResourceBundle>org.apache.cxf.Messages</includeResourceBundle>
+
<includeResourceBundle>org.apache.cxf.interceptor.Messages</includeResourceBundle>
+
<includeResourceBundle>org.apache.cxf.bus.managers.Messages</includeResourceBundle>
+
<includeResourceBundle>org.apache.cxf.jaxrs.Messages</includeResourceBundle>
+
<includeResourceBundle>org.apache.cxf.jaxrs.provider.Messages</includeResourceBundle>
+
<includeResourceBundle>org.apache.cxf.jaxrs.interceptor.Messages</includeResourceBundle>
+
<includeResourceBundle>org.apache.cxf.jaxrs.utils.Messages</includeResourceBundle>
+
<includeResourceBundle>org.apache.cxf.transport.servlet.Messages</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.authenticator.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.connector.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.core.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.deploy.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.filters.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.loader.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.manager.host.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.manager.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.mapper.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.realm.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.security.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.servlets.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.session.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.startup.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.users.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.util.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.valves.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.valves.rewrite.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.catalina.webresources.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.coyote.http11.filters.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.coyote.http11.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.coyote.http11.upgrade.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.coyote.http2.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.coyote.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.buf.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.codec.binary.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.compat.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.descriptor.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.descriptor.tld.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.descriptor.web.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.digester.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.http.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.http.parser.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.json.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.modeler.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.net.jsse.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.net.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.net.openssl.ciphers.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.net.openssl.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.scan.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.security.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>org.apache.tomcat.util.threads.res.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>javax.servlet.LocalStrings</includeResourceBundle>
+
<includeResourceBundle>javax.servlet.http.LocalStrings</includeResourceBundle>
+ </includeResourceBundles>
+ <extensionProperties>
+ <extension.annotation.custom.annotations.properties>
+
javax.json.bind.annotation.JsonbProperty:allDeclaredConstructors=true|allDeclaredMethods=true|allDeclaredFields=true,
+ org.apache.meecrowave.runner.cli.CliOption:allDeclaredFields=true
+ </extension.annotation.custom.annotations.properties>
+ <extension.openwebbeans.extension.excludes>
+ org.apache.cxf.Bus,org.apache.cxf.common.util.ClassUnwrapper,
+ org.apache.cxf.interceptor.InterceptorProvider,
+ io.yupiik.logging.jul,
+ org.apache.openwebbeans.se
+ </extension.openwebbeans.extension.excludes>
+ </extensionProperties>
+ <customOptions> <!-- force JUL usage since Log4j2 does not work
well at all on GraalVM -->
+
<customOption>-Dopenwebbeans.logging.factory=org.apache.webbeans.logger.JULLoggerFactory</customOption>
+
<customOption>-Djava.util.logging.manager=io.yupiik.logging.jul.YupiikLogManager</customOption>
+ </customOptions>
+ </configuration>
+</plugin></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"><dependencies>
+ <dependency>
+ <groupId>org.apache.meecrowave</groupId>
+ <artifactId>meecrowave-specs-api</artifactId>
+ <version>${meecrowave.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.meecrowave</groupId>
+ <artifactId>meecrowave-core</artifactId>
+ <version>${meecrowave.version}</version>
+ </dependency>
+ <dependency> <!-- we use this to have a reconfigurable JUL runtime
in native binary -->
+ <groupId>io.yupiik.logging</groupId>
+ <artifactId>yupiik-logging-jul</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ <dependency> <!-- using openwebbeans arthur knight, graalvm will
use the scanner service from this module -->
+ <groupId>org.apache.openwebbeans</groupId>
+ <artifactId>openwebbeans-se</artifactId>
+ <version>2.0.22</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ <version>1.4</version>
+ </dependency>
+</dependencies></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><graalExtension>meecrowave</graalExtension></code>. If you
think it is worth the effort, don’t hesitate to do a pull request on
Arthur or send a mail on <a
href="mailto:[email protected]">[email protected]</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’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-->