Modified:
websites/production/openwebbeans/content/meecrowave/meecrowave-oauth2/index.html
==============================================================================
---
websites/production/openwebbeans/content/meecrowave/meecrowave-oauth2/index.html
(original)
+++
websites/production/openwebbeans/content/meecrowave/meecrowave-oauth2/index.html
Sun Nov 15 14:36:03 2020
@@ -18,7 +18,7 @@
<link rel="stylesheet"
href="/meecrowave/assets/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet"
href="/meecrowave/assets/plugins/elegant_font/css/style.css?version=1">
<!-- highlighting -->
- <link rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/idea.min.css">
+ <link rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/styles/idea.min.css"
integrity="sha256-rYB1c4yTU5UJB//rod7DtBo1JM6HAme/9Vd+VesFG2U="
crossorigin="anonymous" />
<!-- Theme CSS -->
<link id="theme-style" rel="stylesheet"
href="/meecrowave/assets/css/styles.css">
@@ -66,310 +66,346 @@
<section class="doc-section">
- <div id="preamble">
- <div class="sectionbody">
- <div class="paragraph">
- <p>Starting with version 0.3.0.</p>
- </div>
- <div class="paragraph">
- <p>Coordinates:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-xml hljs"
data-lang="xml"><dependency>
+ <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Starting with version 0.3.0.</p>
+</div>
+<div class="paragraph">
+<p>Coordinates:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml
hljs"><dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-oauth2</artifactId>
<version>${meecrowave.version}</version>
-</dependency></code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>A small OAuth2 server based on CXF implementation.</p>
- </div>
- <div class="paragraph">
- <p>See <a href="https://cxf.apache.org/docs/jax-rs-oauth2.html"
class="bare">https://cxf.apache.org/docs/jax-rs-oauth2.html</a> for more
details.</p>
- </div>
- <div class="paragraph">
- <p>Here is the current configuration (mainly based on CXF one):</p>
- </div>
- <table class="tableblock frame-all grid-all spread table table-bordered">
- <colgroup>
- <col style="width: 50%;">
- <col style="width: 50%;">
- </colgroup>
- <thead>
- <tr>
- <th class="tableblock halign-left valign-top">Name</th>
- <th class="tableblock halign-left valign-top">Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-access-token-lifetime</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">How
long an access token is valid, default to 3600s</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-authorization-code-support</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Is
authorization code flow supported</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-block-unsecure-requests</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should unsecured requests be blocked</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-client-force</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Is a
client mandatory or can a token be issued without any client</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-default-scopes</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Comma
separated list of default scopes</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-encrypted-algorithm</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">The
algorithm for the key for the encrypted provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-encrypted-key</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">The
key for encrypted provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-invisible-scopes</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Comma
separated list of invisible to client scopes</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-config</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">JCache configuration uri for the cache manager (jcache or
provider)</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-jmx</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should JCache JMX MBeans be enabled</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-loader</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">The
loader bean or class name</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-statistics</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should JCache statistics be enabled</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-store-jwt-token-key-only</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should JCache store jwt token key only (jcache
provider)</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-store-value</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should JCache store value or not</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-writer</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">The
writer bean or class name</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-database-driver</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">JPA
database driver for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-database-password</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">JPA
database password for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-database-url</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">JPA
database url for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-database-username</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">JPA
database username for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-max-active</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">JPA
max active connections for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-max-idle</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">JPA
max idle connections for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-max-wait</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">JPA
max wait for connections for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-properties</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">JPA
persistence unit properties for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-test-on-borrow</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">should connections be tested on borrow for jpa
provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-test-on-return</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">should connections be tested on return for jpa
provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-validation-interval</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">validation interval for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-validation-query</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">validation query for jpa provider</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jwt-access-token-claim-map</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">The
jwt claims configuration</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-partial-match-scope-validation</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Is
partial match for scope validation activated</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-provider</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Which
provider type to use: jcache[-code], jpa[-code], encrypted[-code]</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-redirection-match-redirect-uri-with-application-uri</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">For
authorization code flow, should redirect uri be matched with application
one</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-redirection-max-default-session-interval</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">For
authorization code flow, how long a session can be</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-redirection-scopes-requiring-no-consent</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">For
authorization code flow, the scopes using no consent</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-redirection-use-registered-redirect-uri-if-possible</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">For
authorization code flow, should the registered uri be used</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-refresh-token</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Is
issuing of access token issuing a refreh token too</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-refresh-token-lifetime</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">How
long a refresh token is valid, default to eternity (0)</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-refresh-token-recycling</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should refresh token be recycled</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-required-scopes</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Comma
separated list of required scopes</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-support-pre-authorized-tokens</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Are
pre-authorized token supported</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-support-public-client</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Are
public clients supported</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-token-support</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Are
token flows supported</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-use-all-client-scopes</p></td>
- <td class="tableblock halign-left valign-top"><p class="tableblock">Are
all client scopes used for refresh tokens</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-use-jaas</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should jaas be used - alternative (default) is to delegate
to meecrowave/tomcat realms</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-use-jwt-format-for-access-token</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should access token be jwt?</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-write-custom-errors</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should custom errors be written</p></td>
- </tr>
- <tr>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-write-optional-parameters</p></td>
- <td class="tableblock halign-left valign-top"><p
class="tableblock">Should optional parameters be written</p></td>
- </tr>
- </tbody>
- </table>
- <div class="paragraph">
- <p>These options are available through the CLI or through properties as
usually with Meecrowave configuration.</p>
- </div>
- <div class="paragraph">
- <p>Note that meecrowave also provides a bundle which is an executable jar
to run an OAuth2 server.</p>
- </div>
- <div class="paragraph">
- <p>Here is a sample usage of that bundle:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-bash hljs"
data-lang="bash">java -jar meecrowave-oauth2-0.3.1-bundle.jar --users test=test
--roles test=test</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>Then just test your token endpoint:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-bash hljs"
data-lang="bash">curl -XPOST http://localhost:8080/oauth2/token -d
username=test -d password=test -d grant_type=password</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>And you should get something like:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-javascript hljs"
data-lang="javascript">{
+</dependency></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Or to not get JPA/JCache implementations:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml
hljs"><dependency>
+ <groupId>org.apache.meecrowave</groupId>
+ <artifactId>meecrowave-oauth2-minimal</artifactId>
+ <version>${meecrowave.version}</version>
+</dependency></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>A small OAuth2 server based on CXF implementation.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="http://cxf.apache.org/docs/jax-rs-oauth2.html"
class="bare">http://cxf.apache.org/docs/jax-rs-oauth2.html</a> for more
details.</p>
+</div>
+<div class="paragraph">
+<p>Here is the current configuration (mainly based on CXF one):</p>
+</div>
+<table class="tableblock frame-all grid-all stretch table table-bordered">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Name</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-access-token-lifetime</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">How long
an access token is valid, default to 3600s</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-authorization-code-support</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is
authorization code flow supported</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-block-unsecure-requests</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
unsecured requests be blocked</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-client-force</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is a
client mandatory or can a token be issued without any client</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-default-scopes</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Comma
separated list of default scopes</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-encrypted-algorithm</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The
algorithm for the key for the encrypted provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-encrypted-key</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The key
for encrypted provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-forward-role-as-jwt-claims</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
jaas be used - alternative (default) is to delegate to meecrowave/tomcat
realms</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-invisible-scopes</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Comma
separated list of invisible to client scopes</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-config</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JCache
configuration uri for the cache manager (jcache or provider)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-jmx</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
JCache JMX MBeans be enabled</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-loader</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The loader
bean or class name</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-statistics</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
JCache statistics be enabled</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-store-jwt-token-key-only</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
JCache store jwt token key only (jcache provider)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-store-value</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
JCache store value or not</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jcache-writer</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The writer
bean or class name</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-database-driver</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPA
database driver for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-database-password</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPA
database password for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-database-url</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPA
database url for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-database-username</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPA
database username for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-max-active</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPA max
active connections for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-max-idle</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPA max
idle connections for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-max-wait</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPA max
wait for connections for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-properties</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPA
persistence unit properties for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-test-on-borrow</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should
connections be tested on borrow for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-test-on-return</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">should
connections be tested on return for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-validation-interval</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">validation
interval for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jpa-validation-query</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">validation
query for jpa provider</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jwt-access-token-claim-map</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The jwt
claims configuration</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-jwt-issuer</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The jwt
issuer (ignored if not set)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-partial-match-scope-validation</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is partial
match for scope validation activated</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-provider</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Which
provider type to use: jcache[-code], jpa[-code], encrypted[-code]</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-redirection-match-redirect-uri-with-application-uri</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">For
authorization code flow, should redirect uri be matched with application
one</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-redirection-max-default-session-interval</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">For
authorization code flow, how long a session can be</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-redirection-scopes-requiring-no-consent</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">For
authorization code flow, the scopes using no consent</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-redirection-use-registered-redirect-uri-if-possible</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">For
authorization code flow, should the registered uri be used</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-refresh-token</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is issuing
of access token issuing a refreh token too</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-refresh-token-lifetime</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">How long a
refresh token is valid, default to eternity (0)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-refresh-token-recycling</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
refresh token be recycled</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-require-user-to-start-authorization_code-flow</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should the
authorization_code flow require an authenicated user.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-required-scopes</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Comma
separated list of required scopes</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-support-pre-authorized-tokens</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Are
pre-authorized token supported</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-support-public-client</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Are public
clients supported</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-token-support</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Are token
flows supported</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-use-all-client-scopes</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Are all
client scopes used for refresh tokens</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-use-jaas</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
jaas be used - alternative (default) is to delegate to meecrowave/tomcat
realms</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-use-jwt-format-for-access-token</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
access token be jwt?</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-use-s256-code-challenge</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Are the
code_challenge used by PKCE flow digested or not.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-write-custom-errors</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
custom errors be written</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--oauth2-write-optional-parameters</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
optional parameters be written</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>These options are available through the CLI or through properties as
usually with Meecrowave configuration.</p>
+</div>
+<div class="paragraph">
+<p>Note that meecrowave also provides a bundle which is an executable jar to
run an OAuth2 server.</p>
+</div>
+<div class="paragraph">
+<p>Here is a sample usage of that bundle:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="bash" class="language-bash
hljs">java -jar meecrowave-oauth2-0.3.1-bundle.jar --users test=test --roles
test=test</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then just test your token endpoint:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="bash" class="language-bash
hljs">curl -XPOST http://localhost:8080/oauth2/token -d username=test -d
password=test -d grant_type=password</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>And you should get something like:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="javascript"
class="language-javascript hljs">{
"access_token":"5e2f211d4b4ccaa36a11d0876597f01e",
"token_type":"Bearer",
"expires_in":3600,
"scope":"refreshToken",
"refresh_token":"7ae5dc2e25925e5514b7e2e632cfa6a"
-}</code></pre>
- </div>
- </div>
- <div class="admonitionblock important">
- <table>
- <tbody>
- <tr>
- <td class="icon"> <i class="fa icon-important" title="Important"></i>
</td>
- <td class="content"> these example use inline users but you should
configure a realm for a real usage. </td>
- </tr>
- </tbody>
- </table>
- </div>
- <div class="admonitionblock note">
- <table>
- <tbody>
- <tr>
- <td class="icon"> <i class="fa icon-note" title="Note"></i> </td>
- <td class="content"> this module is interesting if you plan to base your
application development on Meecrowave because it shows how to use CLI
configuration and wire it in your application but also how to use a 3rd party
library (CXF there) and build a fatjar. </td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
-</div>
-<div class="sect1">
- <h2 id="_authorization_code_case">Authorization code case</h2>
- <div class="sectionbody">
- <div class="paragraph">
- <p>Authorization code flow is a bit more complicated but services
(endpoints) can be activated (see configuration -
<code>--oauth2-authorization-code-support</code>).</p>
- </div>
- <div class="paragraph">
- <p>You will need to configure CXF to point to the keystore/key to
crypt/sign the token in session. It is properties based. All CXF properties
(<code>rs.security.<strong></strong></code><strong>) are supported but prefixed
with <code>oauth2.cxf.</code> to avoid to mix it with another configuration
starting with <code>rs.</code></strong>.</p>
- </div>
- <div class="paragraph">
- <p>For instance you can use:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-properties hljs"
data-lang="properties">oauth2.cxf.rs.security.keystore.type = jks
+}</code></pre>
+</div>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+these example use inline users but you should configure a realm for a real
usage.
+</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">
+this module is interesting if you plan to base your application development
+on Meecrowave because it shows how to use CLI configuration and wire it in
your application
+but also how to use a 3rd party library (CXF there) and build a fatjar.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_authorization_code_case">Authorization code case</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Authorization code flow is a bit more complicated but services (endpoints)
can be activated (see configuration -
<code>--oauth2-authorization-code-support</code>).</p>
+</div>
+<div class="paragraph">
+<p>You will need to configure CXF to point to the keystore/key to crypt/sign
the token in session.
+It is properties based. All CXF properties (<code>rs.security.<strong></code>)
are supported but prefixed with <code>oauth2.cxf.</code> to avoid
+to mix it with another configuration starting with
<code>rs.</strong></code>.</p>
+</div>
+<div class="paragraph">
+<p>For instance you can use:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="properties"
class="language-properties hljs">oauth2.cxf.rs.security.keystore.type = jks
oauth2.cxf.rs.security.keystore.file = /opt/keystores/oauth2.jks
oauth2.cxf.rs.security.keystore.password = password
oauth2.cxf.rs.security.keystore.alias = alice
-oauth2.cxf.rs.security.key.password = pwd</code></pre>
- </div>
- </div>
- </div>
+oauth2.cxf.rs.security.key.password = pwd</code></pre>
+</div>
+</div>
+</div>
</div>
</section><!--//doc-section-->
@@ -397,8 +433,8 @@ oauth2.cxf.rs.security.key.password = pw
<footer class="footer text-center">
<div class="container">
<div class="row">
- <p >Copyright © 2016
- <a href="https://www.apache.org/">The Apache Software
Foundation</a>. All rights reserved.
+ <p >Copyright © 2016-2020
+ <a href="http://www.apache.org/">The Apache Software
Foundation</a>. All rights reserved.
</p>
</div>
</div>
@@ -413,10 +449,13 @@ oauth2.cxf.rs.security.key.password = pw
<script type="text/javascript"
src="/meecrowave/assets/plugins/jquery-1.12.3.min.js"></script>
<script type="text/javascript"
src="/meecrowave/assets/plugins/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript"
src="/meecrowave/assets/plugins/jquery-match-height/jquery.matchHeight-min.js"></script>
- <script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/highlight.min.js"
integrity="sha256-aYTdUrn6Ow1DDgh5JTc3aDGnnju48y/1c8s1dgkYPQ8="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/java.min.js"
integrity="sha256-21Z1xKC/FsaqN9z9jIER9xiX4XbV5buFEVdkZvsfBIc="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/groovy.min.js"
integrity="sha256-0B+Ps1zCncLC5JIOQ+MtIhI/UhbJkYbxWsJowD3c+tk="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/shell.min.js"
integrity="sha256-nwOM3xEc6CFfrPNDN1upX+5ynjWKAXsg+bW63SSzte0="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/bash.min.js"
integrity="sha256-zXrlim8wsIvcEFjsD3THiAfTvtPZifqx8q0rxegiWQc="
crossorigin="anonymous"></script>
<script type="text/javascript"
src="/meecrowave/assets/js/main.js?version=1"></script>
</body>
</html>
-
Added:
websites/production/openwebbeans/content/meecrowave/meecrowave-proxy/index.html
==============================================================================
---
websites/production/openwebbeans/content/meecrowave/meecrowave-proxy/index.html
(added)
+++
websites/production/openwebbeans/content/meecrowave/meecrowave-proxy/index.html
Sun Nov 15 14:36:03 2020
@@ -0,0 +1,317 @@
+<!DOCTYPE html>
+<!--[if IE 8]> <html lang="en" class="ie8"> <![endif]-->
+<!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->
+<!--[if !IE]><!--> <html lang="en"> <!--<![endif]-->
+<head>
+ <title>Meecrowave :: the customizable server</title>
+ <!-- Meta -->
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="">
+ <link rel="shortcut icon" href="/meecrowave/favicon.ico">
+ <link
href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800'
rel='stylesheet' type='text/css'>
+ <!-- Global CSS -->
+ <link rel="stylesheet"
href="/meecrowave/assets/plugins/bootstrap/css/bootstrap.min.css">
+ <!-- Plugins CSS -->
+ <link rel="stylesheet"
href="/meecrowave/assets/plugins/font-awesome/css/font-awesome.min.css">
+ <link rel="stylesheet"
href="/meecrowave/assets/plugins/elegant_font/css/style.css?version=1">
+ <!-- highlighting -->
+ <link rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/styles/idea.min.css"
integrity="sha256-rYB1c4yTU5UJB//rod7DtBo1JM6HAme/9Vd+VesFG2U="
crossorigin="anonymous" />
+
+ <!-- Theme CSS -->
+ <link id="theme-style" rel="stylesheet"
href="/meecrowave/assets/css/styles.css">
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media
queries -->
+ <!--[if lt IE 9]>
+ <script
src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+ <script
src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+ <![endif]-->
+</head>
+
+<body class="blue-green">
+ <div class="page-wrapper">
+ <!-- TODO: google analytics -->
+<header class="header text-center">
+ <div class="container">
+ <div class="branding">
+ <h1 class="doc-title">
+ <span aria-hidden="true" class="icon icon_puzzle_alt
icon"></span>
+ <a href="/meecrowave/index.html">
+ Meecrowave
+ </a>
+ </h1>
+ </div>
+ </div><!--//container-->
+</header><!--//header-->
+<div class="doc-wrapper">
+ <div class="container">
+ <div id="doc-header" class="doc-header text-center">
+ <h1 class="doc-title"><span aria-hidden="true" class="icon icon
icon_puzzle_alt"></span> Meecrowave Proxy</h1>
+ </div><!--//doc-header-->
+
+<div class="doc-body">
+ <div class="doc-content">
+ <div class="content-inner">
+
+
+
+
+<div class='btn-toolbar pull-right' style="z-index: 2000;">
+ <div class='btn-group'>
+ <a class="btn" href="/meecrowave/meecrowave-proxy/index.pdf"><i
class="fa fa-file-pdf-o"></i> Download as PDF</a>
+ </div>
+</div>
+
+
+
+ <section class="doc-section">
+ <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Coordinates:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml
hljs"><dependency>
+ <groupId>org.apache.meecrowave</groupId>
+ <artifactId>meecrowave-proxy</artifactId>
+ <version>${meecrowave.version}</version>
+</dependency></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Simple proxy module using Meecrowave as backbone.
+It can be extended using CDI programming model and JAX-RS client.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_configuration">Configuration</h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch table table-bordered">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Name</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--proxy-async-timeout</p></td>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">Asynchronous execution timeout.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--proxy-configuration</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The route
file.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--proxy-mapping</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Where to
bind the proxy (url pattern).</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--proxy-multipart</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Is
multipart explicit.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--proxy-multipart-maxfilesizethreshold</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Max file
size threshold for multipart requests.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--proxy-multipart-location</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The
multipart temporary folder.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--proxy-multipart-maxfilesize</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Max file
size for multipart requests.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--proxy-multipart-maxrequestsize</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Max
request size for multipart requests.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p
class="tableblock">--proxy-skip</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Should
default setup be ignored</p></td>
+</tr>
+</tbody>
+</table>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+you can use that servlet in a plain Servlet container (adding JAX-RS+JSON-B
client).
+An integration example can be found in
<code>org.apache.meecrowave.proxy.servlet.meecrowave.ProxyServletSetup#accept</code>.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_configuration_file">Configuration File</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Each route defines an execution context which means:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>A way to match the incoming request (by method + prefix for now),</p>
+</li>
+<li>
+<p>A way to forward the incoming request (which target server is called),</p>
+</li>
+<li>
+<p>A way to execute the request isolated in a dedicated thread (how many
threads are allocated to the route, which timeout to use, …​).</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>The routes file follows the following shape:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="json" class="language-json
hljs">{
+ "defaultRoute": { // optional
+ // ... anything a route can get, it is used as default for plain "routes"
+ },
+ "routes": [
+ {
+ "id": "get-simple",
+ "requestConfiguration": {
+ "method": "GET",
+ "prefix": "/prefix-to-match",
+ "addedHeaders" : { "Authorization": "Value", ... },
+ "skippedHeaders" : [ "Content-Length", ... ],
+ "skippedCookies" : [ "Cookie", ... ],
+ },
+ "responseConfiguration": {
+ "target": "http://....",
+ "skippedHeaders" : [ "Content-Length", ... ],
+ "skippedCookies" : [ "Cookie", ... ],
+ },
+ "clientConfiguration": {
+ "executor": {
+ "core": 8,
+ "max": 512,
+ "keepAlive": 60000,
+ "shutdownTimeout": 1
+ },
+ "timeouts": {
+ "connect": 30000,
+ "read": 30000,
+ "execution": 60000
+ },
+ "sslConfiguration": {
+ "acceptAnyCertificate": false,
+ "keystoreLocation": "...",
+ "keystoreType": "...",
+ "keystorePassword": "...",
+ "truststoreType": "...",
+ "verifiedHostnames": ["..."]
+ }
+ },
+ "extensions": { // optional, used for custom extensions and let the user
enrich the route configuration
+ }
+ },
+ // ...
+ ],
+ "extensions": { // optional
+ }
+}</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">
+the file is filtered with system properties so you can use
<code>${system-prop-key}</code>.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_extend">Extend</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The default implementation uses <code>CDIProxyServlet</code> which triggers
multiple events to let you extend the proxy implementation:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p><code>BeforeRequest</code> and <code>AfterResponse</code> which are sent
around the proxying,</p>
+</li>
+<li>
+<p><code>OnRequest</code> and <code>OnResponse</code> which enables you to
replace the way the request is mapped to the proxied server and the way the
response of the proxied server is mapped to the client.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>Since <code>meecrowave-proxy</code> is a simple meecrowave module you can
embed it and customize it as any CDI application.</p>
+</div>
+</div>
+</div>
+ </section><!--//doc-section-->
+
+
+
+
+ </div><!--//content-inner-->
+ </div><!--//doc-content-->
+
+ <div class="doc-sidebar">
+ <nav id="doc-nav">
+ <ul id="doc-menu" class="nav doc-menu hidden-xs affix-top"
data-spy="affix">
+ <li><a href="/meecrowave/index.html">Home</a></li>
+ <li><a href="/meecrowave/start.html">Quick Start</a></li>
+ <li><a href="/meecrowave/components.html">Components</a></li>
+ <li><a href="/meecrowave/download.html">Download</a></li>
+ <li><a href="/meecrowave/community.html">Community</a></li>
+ </ul><!--//doc-menu-->
+ </nav>
+ </div>
+</div>
+
+</div><!--//page-wrapper-->
+
+ <footer class="footer text-center">
+ <div class="container">
+ <div class="row">
+ <p >Copyright © 2016-2020
+ <a href="http://www.apache.org/">The Apache Software
Foundation</a>. All rights reserved.
+ </p>
+ </div>
+ </div>
+
+ <div class="container"><!-- don't remove it otherwise theme is no more
creative common -->
+ <small class="copyright">Designed with <i class="fa fa-heart"></i>
by <a href="http://themes.3rdwavemedia.com/" target="_blank">Xiaoying Riley</a>
for developers</small>
+ </div><!--//container-->
+ </footer><!--//footer-->
+
+
+ <!-- Main Javascript -->
+ <script type="text/javascript"
src="/meecrowave/assets/plugins/jquery-1.12.3.min.js"></script>
+ <script type="text/javascript"
src="/meecrowave/assets/plugins/bootstrap/js/bootstrap.min.js"></script>
+ <script type="text/javascript"
src="/meecrowave/assets/plugins/jquery-match-height/jquery.matchHeight-min.js"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/highlight.min.js"
integrity="sha256-aYTdUrn6Ow1DDgh5JTc3aDGnnju48y/1c8s1dgkYPQ8="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/java.min.js"
integrity="sha256-21Z1xKC/FsaqN9z9jIER9xiX4XbV5buFEVdkZvsfBIc="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/groovy.min.js"
integrity="sha256-0B+Ps1zCncLC5JIOQ+MtIhI/UhbJkYbxWsJowD3c+tk="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/shell.min.js"
integrity="sha256-nwOM3xEc6CFfrPNDN1upX+5ynjWKAXsg+bW63SSzte0="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/bash.min.js"
integrity="sha256-zXrlim8wsIvcEFjsD3THiAfTvtPZifqx8q0rxegiWQc="
crossorigin="anonymous"></script>
+ <script type="text/javascript"
src="/meecrowave/assets/js/main.js?version=1"></script>
+
+</body>
+</html>
+
Modified: websites/production/openwebbeans/content/meecrowave/start.html
==============================================================================
--- websites/production/openwebbeans/content/meecrowave/start.html (original)
+++ websites/production/openwebbeans/content/meecrowave/start.html Sun Nov 15
14:36:03 2020
@@ -18,7 +18,7 @@
<link rel="stylesheet"
href="/meecrowave/assets/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet"
href="/meecrowave/assets/plugins/elegant_font/css/style.css?version=1">
<!-- highlighting -->
- <link rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/idea.min.css">
+ <link rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/styles/idea.min.css"
integrity="sha256-rYB1c4yTU5UJB//rod7DtBo1JM6HAme/9Vd+VesFG2U="
crossorigin="anonymous" />
<!-- Theme CSS -->
<link id="theme-style" rel="stylesheet"
href="/meecrowave/assets/css/styles.css">
@@ -66,73 +66,105 @@
<section class="doc-section">
- <div class="sect1">
- <h2 id="_your_first_application">Your first application</h2>
- <div class="sectionbody">
- <div class="paragraph">
- <p>Meecrowave relies on JAX-RS and CDI so to start you just need to write a
JAX-RS endpoint:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-java hljs"
data-lang="java">@Path("kitchen")
+ <div class="sect1">
+<h2 id="_your_first_application">Your first application</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_dependencies">Dependencies</h3>
+<div class="paragraph">
+<p>Just add in any Maven <code>pom.xml</code> - or gradle
<code>build.gradle</code> the following dependency:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml
hljs"><dependency>
+ <groupId>org.apache.meecrowave</groupId>
+ <artifactId>meecrowave-core</artifactId>
+ <version>${meecrowave.version}</version>
+</dependency></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If you intend to reuse our <code>Cli</code> main you should also add:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml
hljs"><dependency>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ <version>1.4</version>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_runtime">Runtime</h3>
+<div class="paragraph">
+<p>Meecrowave relies on JAX-RS and CDI so to start you just need to write a
JAX-RS endpoint:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="java" class="language-java
hljs">@Path("kitchen")
@ApplicationScoped
public class HelloKitchen {
@GET
public String getMenu() {
return "good things";
}
-}</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>Then booting Meecrowave is as easy as launching:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-java hljs"
data-lang="java">try (final Meecrowave meecrowave = new Meecrowave().bake()) {
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then booting Meecrowave is as easy as launching - or reuse
<code>org.apache.meecrowave.runner.Cli</code> provided main:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="java" class="language-java
hljs">try (final Meecrowave meecrowave = new Meecrowave().bake()) {
new Scanner(System.in).nextLine();
-}</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>You should get some output containing:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs
highlight"><code>[19:54:55.397][INFO][main][.meecrowave.cxf.CxfCdiAutoSetup]
REST Application: / -> org.apache.cxf.cdi.DefaultApplication
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You should get some output containing:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-none
hljs">[19:54:55.397][INFO][main][.meecrowave.cxf.CxfCdiAutoSetup] REST
Application: / -> org.apache.cxf.cdi.DefaultApplication
[19:54:55.399][INFO][main][.meecrowave.cxf.CxfCdiAutoSetup] Service URI:
/kitchen -> org.app.HelloKitchen
-[19:54:55.401][INFO][main][.meecrowave.cxf.CxfCdiAutoSetup] GET
/kitchen/ -> String getMenu()</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>And you can check it works doing:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code>curl
http://localhost:8080/kitchen</code></pre>
- </div>
- </div>
- </div>
-</div>
-<div class="sect1">
- <h2 id="_you_re_in_a_hurry_use_groovy">Youâre in a hurry? Use groovy!</h2>
- <div class="sectionbody">
- <div class="admonitionblock important">
- <table>
- <tbody>
- <tr>
- <td class="icon"> <i class="fa icon-important" title="Important"></i>
</td>
- <td class="content"> this feature is supported starting from version
0.3.0 only. </td>
- </tr>
- </tbody>
- </table>
- </div>
- <div class="paragraph">
- <p>Create a file called <code>hello.groovy</code>:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-java hljs"
data-lang="java">@Grab('org.apache.meecrowave:meecrowave-core:0.3.0')
+[19:54:55.401][INFO][main][.meecrowave.cxf.CxfCdiAutoSetup] GET
/kitchen/ -> String getMenu()</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>And you can check it works doing:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-none hljs">curl
http://localhost:8080/kitchen</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_youre_in_a_hurry_use_groovy">You’re in a hurry? Use groovy!</h2>
+<div class="sectionbody">
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+this feature is supported starting from version 0.3.0 only.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Create a file called <code>hello.groovy</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="java" class="language-java
hljs">@Grab('org.apache.meecrowave:meecrowave-core:0.3.0')
import org.apache.meecrowave.Meecrowave
@@ -149,34 +181,45 @@ class Hello {
}
}
-new Meecrowave().bake().await()</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>then</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-bash hljs"
data-lang="bash">groovy hello.groovy</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>Finally you can test it:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-bash hljs"
data-lang="bash">curl http://localhost:8080/hello</code></pre>
- </div>
- </div>
- </div>
-</div>
-<div class="sect1">
- <h2 id="_sample">Sample</h2>
- <div class="sectionbody">
- <div class="paragraph">
- <p><a href="https://github.com/apache/openwebbeans-meecrowave-examples"
class="bare">https://github.com/apache/openwebbeans-meecrowave-examples</a>
contains ready to use examples using meecrowave.</p>
- </div>
- </div>
+new Meecrowave().bake().await()</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>then</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="bash" class="language-bash
hljs">groovy hello.groovy</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Finally you can test it:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="bash" class="language-bash
hljs">curl http://localhost:8080/hello</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_and_my_war">And my war?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>See <a href="meecrowave-core/deploy-webapp.html">How to deploy a war</a> to
see how to use meecrowave to deploy an existing war.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_sample">Sample</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><a href="https://github.com/apache/openwebbeans-meecrowave-examples"
class="bare">https://github.com/apache/openwebbeans-meecrowave-examples</a>
contains ready to use examples using meecrowave.</p>
+</div>
+<div class="paragraph">
+<p>You can also find more information on our <a href="howto.html">How To</a>
page.</p>
+</div>
+</div>
</div>
</section><!--//doc-section-->
@@ -204,8 +247,8 @@ new Meecrowave().bake().await()</code></
<footer class="footer text-center">
<div class="container">
<div class="row">
- <p >Copyright © 2016
- <a href="https://www.apache.org/">The Apache Software
Foundation</a>. All rights reserved.
+ <p >Copyright © 2016-2020
+ <a href="http://www.apache.org/">The Apache Software
Foundation</a>. All rights reserved.
</p>
</div>
</div>
@@ -220,10 +263,13 @@ new Meecrowave().bake().await()</code></
<script type="text/javascript"
src="/meecrowave/assets/plugins/jquery-1.12.3.min.js"></script>
<script type="text/javascript"
src="/meecrowave/assets/plugins/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript"
src="/meecrowave/assets/plugins/jquery-match-height/jquery.matchHeight-min.js"></script>
- <script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/highlight.min.js"
integrity="sha256-aYTdUrn6Ow1DDgh5JTc3aDGnnju48y/1c8s1dgkYPQ8="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/java.min.js"
integrity="sha256-21Z1xKC/FsaqN9z9jIER9xiX4XbV5buFEVdkZvsfBIc="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/groovy.min.js"
integrity="sha256-0B+Ps1zCncLC5JIOQ+MtIhI/UhbJkYbxWsJowD3c+tk="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/shell.min.js"
integrity="sha256-nwOM3xEc6CFfrPNDN1upX+5ynjWKAXsg+bW63SSzte0="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/bash.min.js"
integrity="sha256-zXrlim8wsIvcEFjsD3THiAfTvtPZifqx8q0rxegiWQc="
crossorigin="anonymous"></script>
<script type="text/javascript"
src="/meecrowave/assets/js/main.js?version=1"></script>
</body>
</html>
-
Modified: websites/production/openwebbeans/content/meecrowave/testing/index.html
==============================================================================
--- websites/production/openwebbeans/content/meecrowave/testing/index.html
(original)
+++ websites/production/openwebbeans/content/meecrowave/testing/index.html Sun
Nov 15 14:36:03 2020
@@ -18,7 +18,7 @@
<link rel="stylesheet"
href="/meecrowave/assets/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet"
href="/meecrowave/assets/plugins/elegant_font/css/style.css?version=1">
<!-- highlighting -->
- <link rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/idea.min.css">
+ <link rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/styles/idea.min.css"
integrity="sha256-rYB1c4yTU5UJB//rod7DtBo1JM6HAme/9Vd+VesFG2U="
crossorigin="anonymous" />
<!-- Theme CSS -->
<link id="theme-style" rel="stylesheet"
href="/meecrowave/assets/css/styles.css">
@@ -66,32 +66,35 @@
<section class="doc-section">
- <div class="sect1">
- <h2 id="_junit">JUnit</h2>
- <div class="sectionbody">
- <div class="paragraph">
- <p>Coordinates:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-xml hljs"
data-lang="xml"><dependency>
+ <div class="sect1">
+<h2 id="_junit">JUnit</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Coordinates:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml
hljs"><dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-junit</artifactId>
<version>${meecrowave.version}</version>
-</dependency></code></pre>
- </div>
- </div>
- <div class="sect2">
- <h3 id="_rules_and_runners">Rules and Runners</h3>
- <div class="paragraph">
- <p>Meecrowave provides two flavors of JUnit integration: standalone or
runners/rules. The standalone one will ensure there is a single container for
the whole JVM. It also fits standalone environments where you want to control
the lifecycle. The other one will follow the JUnit lifecycle (per class or test
rule).</p>
- </div>
- <div class="paragraph">
- <p>Here how to use the standalone flavor:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-java hljs"
data-lang="java">@RunWith(MonoMeecrowave.Runner.class)
+ <scope>test</scope>
+</dependency></code></pre>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_rules_and_runners">Rules and Runners</h3>
+<div class="paragraph">
+<p>Meecrowave provides two flavors of JUnit integration: standalone or
runners/rules. The standalone one will
+ensure there is a single container for the whole JVM. It also fits standalone
environments where you want to control the lifecycle.
+The other one will follow the JUnit lifecycle (per class or test rule).</p>
+</div>
+<div class="paragraph">
+<p>Here how to use the standalone flavor:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="java" class="language-java
hljs">@RunWith(MonoMeecrowave.Runner.class)
public class MonoMeecrowaveRuleTest {
/* or
@ClassRule
@@ -105,21 +108,23 @@ public class MonoMeecrowaveRuleTest {
public void test() throws IOException {
// use "http://localhost:" + config.getHttpPort()
}
-}</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>When using the standalone,
<code>@MonoMeecrowave.Runner.ConfigurationInject</code> allows to still access
the configuration and random HTTP port.</p>
- </div>
- <div class="paragraph">
- <p>For the configuration, the standalone runner will use a global
configuration shared by all tests. To load it it will use a standard
<code>ServiceLoader</code> on type
<code>org.apache.meecrowave.Meecrowave$ConfigurationCustomizer</code>.</p>
- </div>
- <div class="paragraph">
- <p>And here is the one bound to the JUnit lifecycle</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-java hljs"
data-lang="java">public class MeecrowaveRuleTest {
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>When using the standalone,
<code>@MonoMeecrowave.Runner.ConfigurationInject</code> allows to still
+access the configuration and random HTTP port.</p>
+</div>
+<div class="paragraph">
+<p>For the configuration, the standalone runner will use a global
configuration shared by all tests. To load it
+it will use a standard <code>ServiceLoader</code> on type
<code>org.apache.meecrowave.Meecrowave$ConfigurationCustomizer</code>.</p>
+</div>
+<div class="paragraph">
+<p>And here is the one bound to the JUnit lifecycle</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="java" class="language-java
hljs">public class MeecrowaveRuleTest {
@ClassRule // started once for the class, @Rule would be per method
public static final MeecrowaveRule RULE = new MeecrowaveRule();
@@ -127,24 +132,27 @@ public class MonoMeecrowaveRuleTest {
public void test() throws IOException {
// use "http://localhost:" + RULE.getConfiguration().getHttpPort()
}
-}</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>As usual with JUnit rules, you can decide whereas the Meecrowave
instance is bound to the entire test class or a method by using @ClassRule or
@Rule.</p>
- </div>
- </div>
- <div class="sect2">
- <h3 id="_junit_5">JUnit 5</h3>
- <div class="paragraph">
- <p>JUnit 5 integrates a new <code>Extension</code> system. It is not yet
very well supported by IDEs but you can already use it with Gradle and Maven
(see <a href="http://junit.org/junit5/docs/current/user-guide/#running-tests"
class="bare">http://junit.org/junit5/docs/current/user-guide/#running-tests</a>).</p>
- </div>
- <div class="paragraph">
- <p>The usage has two annotations: <code>@MeecrowaveConfig</code> which
remaps most of the configuration of Meecrowave and
<code>@MonoMeecrowaveConfig</code> which is close to
<code>MonoMeecrowave.Runner</code> in term of usage.</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-java hljs"
data-lang="java">@MeecrowaveConfig /*(some config)*/
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>As usual with JUnit rules, you can decide whereas the Meecrowave instance
is bound to the entire test class
+or a method by using @ClassRule or @Rule.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_junit_5">JUnit 5</h3>
+<div class="paragraph">
+<p>JUnit 5 integrates a new <code>Extension</code> system. It is not yet very
well supported by IDEs but you can already use it with
+Gradle and Maven (see <a
href="http://junit.org/junit5/docs/current/user-guide/#running-tests"
class="bare">http://junit.org/junit5/docs/current/user-guide/#running-tests</a>).</p>
+</div>
+<div class="paragraph">
+<p>The usage has two annotations: <code>@MeecrowaveConfig</code> which remaps
most of the configuration of Meecrowave and <code>@MonoMeecrowaveConfig</code>
+which is close to <code>MonoMeecrowave.Runner</code> in term of usage.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="java" class="language-java
hljs">@MeecrowaveConfig /*(some config)*/
public class MeecrowaveConfigTest {
@ConfigurationInject
private Meecrowave.Builder config;
@@ -154,62 +162,68 @@ public class MeecrowaveConfigTest {
final String base = "http://localhost:" + config.getHttpPort();
// asserts
}
-}</code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>Or</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-java hljs"
data-lang="java">@MonoMeecrowaveConfig
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Or</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="java" class="language-java
hljs">@MonoMeecrowaveConfig
public class MeecrowaveConfigTest {
// ...
-}</code></pre>
- </div>
- </div>
- <div class="admonitionblock tip">
- <table>
- <tbody>
- <tr>
- <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td>
- <td class="content"> JUnit 5 integration provides an
<code>@AfterFirstInjection</code> method and <code>@AfterLastTest</code> which
can be used to setup/reset some environment using injections once for a set of
test methods. The methods must not have any parameter. </td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </div>
-</div>
-<div class="sect1">
- <h2 id="_arquillian_container">Arquillian Container</h2>
- <div class="sectionbody">
- <div class="paragraph">
- <p>Container dependency:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-xml hljs"
data-lang="xml"><dependency>
+}</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">
+JUnit 5 integration provides an <code>@AfterFirstInjection</code> method and
<code>@AfterLastTest</code>
+which can be used to setup/reset some environment using injections once for a
set of test methods.
+The methods must not have any parameter.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_arquillian_container">Arquillian Container</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Container dependency:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml
hljs"><dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-arquillian</artifactId>
<version>${meecrowave.version}</version>
-</dependency></code></pre>
- </div>
- </div>
- <div class="paragraph">
- <p>For the configuration check <a
href="/meecrowave/meecrowave-core/configuration.html">Core
configuration</a>.</p>
- </div>
- <div class="paragraph">
- <p>Here is a sample:</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="highlightjs highlight"><code class="language-xml hljs"
data-lang="xml"><?xml version="1.0" encoding="UTF-8"?>
+ <scope>test</scope>
+</dependency></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>For the configuration check <a
href="/meecrowave/meecrowave-core/configuration.html">Core
configuration</a>.</p>
+</div>
+<div class="paragraph">
+<p>Here is a sample:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code data-lang="xml" class="language-xml
hljs"><?xml version="1.0" encoding="UTF-8"?>
<arquillian xmlns="http://jboss.org/schema/arquillian"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<container qualifier="meecrowave" default="true">
<configuration>
+ <property name="antiResourceLocking">false</property>
<property name="arquillianProtocol">Servlet 3.1</property>
<property name="cdiConversation">false</property>
<property name="clientAuth"></property>
@@ -274,10 +288,11 @@ public class MeecrowaveConfigTest {
<property name="ssl">false</property>
<property name="sslProtocol"></property>
<property name="stopPort">-1</property>
- <property
name="tempDir">/var/folders/cc/5g6j5x3x74154g2rmmtpz_4w0000gn/T/meecrowave_184680423404202</property>
+ <property
name="tempDir">/tmp/meecrowave_23934057649176</property>
<property name="tomcatAccessLogPattern"></property>
<property name="tomcatAutoSetup">true</property>
<property name="tomcatFilter"></property>
+ <property name="tomcatJspDevelopment">false</property>
<property name="tomcatNoJmx">true</property>
<property name="tomcatScanning">true</property>
<property name="tomcatWrapLoader">true</property>
@@ -294,10 +309,10 @@ public class MeecrowaveConfigTest {
<property name="webXml"></property>
</configuration>
</container>
-</arquillian></code></pre>
- </div>
- </div>
- </div>
+</arquillian></code></pre>
+</div>
+</div>
+</div>
</div>
</section><!--//doc-section-->
@@ -325,8 +340,8 @@ public class MeecrowaveConfigTest {
<footer class="footer text-center">
<div class="container">
<div class="row">
- <p >Copyright © 2016
- <a href="https://www.apache.org/">The Apache Software
Foundation</a>. All rights reserved.
+ <p >Copyright © 2016-2020
+ <a href="http://www.apache.org/">The Apache Software
Foundation</a>. All rights reserved.
</p>
</div>
</div>
@@ -341,10 +356,13 @@ public class MeecrowaveConfigTest {
<script type="text/javascript"
src="/meecrowave/assets/plugins/jquery-1.12.3.min.js"></script>
<script type="text/javascript"
src="/meecrowave/assets/plugins/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript"
src="/meecrowave/assets/plugins/jquery-match-height/jquery.matchHeight-min.js"></script>
- <script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/highlight.min.js"
integrity="sha256-aYTdUrn6Ow1DDgh5JTc3aDGnnju48y/1c8s1dgkYPQ8="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/java.min.js"
integrity="sha256-21Z1xKC/FsaqN9z9jIER9xiX4XbV5buFEVdkZvsfBIc="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/groovy.min.js"
integrity="sha256-0B+Ps1zCncLC5JIOQ+MtIhI/UhbJkYbxWsJowD3c+tk="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/shell.min.js"
integrity="sha256-nwOM3xEc6CFfrPNDN1upX+5ynjWKAXsg+bW63SSzte0="
crossorigin="anonymous"></script>
+ <script
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/languages/bash.min.js"
integrity="sha256-zXrlim8wsIvcEFjsD3THiAfTvtPZifqx8q0rxegiWQc="
crossorigin="anonymous"></script>
<script type="text/javascript"
src="/meecrowave/assets/js/main.js?version=1"></script>
</body>
</html>
-