<div dir="ltr"><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">Hi folks,</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">There&#39;s been quite a bit of progress recently on development of an EE 9 variant of WildFly so I&#39;d like to provide an update.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">For context, the goal is to produce in Sept/Oct a tech-preview/beta/milestone release of a variant of WildFly that exposes EE 9 APIs, so the community can get a chance to try those out. Most of the implementation libraries in that release will use EE 8 APIs internally (javax.* packages instead of jakarta.*) so to make that work, when Galleon provisions an EE9 server it will bytecode transform any artifacts that use EE 8 APIs into ones that use EE 9 APIs.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">For deployments the server management layer will, when it reads in managed deployment content, transform EE 8 APIs to EE 9. This allows existing apps to work, which is particularly important for our testsuite, which is full of EE 8 apps.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">Thanks to a lot of hard work from Richard Opalka, Scott Marlow and Jean-Francois Denise and the folks on the Eclipse Transformer project I have a branch[2] that does this. It is based on the current WildFly master, but overrides most of the EE spec artifacts to use the ones that were included in the June EE 9 milestone release of Glassfish. It also overrides a few of the spec impls with native EE 9 artifacts that were used in that release.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">That branch adds a new &quot;ee-9&quot; maven with a few child modules, the most important of which are &#39;feature-pack&#39; and &#39;dist&#39;.  The &#39;feature-pack&#39; module produces a Galleon feature pack which is analogous to the wildfly-ee feature pack, but provides EE 9 APIs. The &#39;dist&#39; module then builds a dist using that feature pack.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">At this point there is no EE 9 equivalent to the top level &#39;wildfly&#39; feature pack, which adds in the Eclipse Microprofile JWT, Fault Tolerance and Open API specs. Dealing with those is a todo.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">If you do a normal &#39;mvn install&#39; of this branch, the ee-9 modules will build.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">To run part of the testsuite against the EE 9 dist, do this:</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">mvn install -Dts.ee9 -Dts.basic</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">That runs testsuite/integration&#39;s &#39;smoke&#39;, &#39;web&#39;, &#39;ws&#39; and &#39;basic&#39; modules. Don&#39;t include -Dts.basic if you don&#39;t want the basic module to run.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">Not all tests run; some for known reasons, some for unknown ones. But a whole lot do.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">Over the course of the next few days I&#39;ll be working to get more testsuite modules to run with the ts.ee9 profile.  Once that is done I&#39;d like us to give some thought to producing an alpha release of WildFly so folks can more easily try this out.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">There are some important difference between this feature pack and the regular wildfly-ee one:</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">1) It does not depend on the wildfly-servlet feature pack. That feature pack IMO is a bit of a evolutionary appendix that serves little purpose in a Galleon driven architecture; it just adds complexity. So for this EE 9 feature pack I&#39;m directly incorporating the content that would have been in wildfly-servlet, instead of having a dependency on an EE 9 variant of wildfly-servlet.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">It is tempting to do the same with the wildfly-core feature pack. Something to discuss.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">See <a href="https://github.com/wildfly/wildfly/pull/13394" style="font-family:Arial,Helvetica,sans-serif">[</a>4] for more on this.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">2) It does not include the legacy picketbox-based security subsystem. We want to move to a purely Elytron-based security architecture so legacy picketbox security is being left behind.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">This brings some interesting challenges, as it surfaces a few places where there&#39;s a default expectation for legacy security, with the user having to do work they shouldn&#39;t have to to make that go away.  Darran Lofthouse has been looking at this.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">It also brings some effort on the testing side, just because quite a few tests expect legacy security. We&#39;ve dealt with that before with running tests with pure elytron configs.</div><div class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif"></div><div class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif"><br></div><div class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif">Picketbox is still present, which means the security vault works, but I expect at some point that will be removed. Right now it was easier to leave it in place; otherwise it would have been removed as Picketbox is a barrier to using JDK 14 or later.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">3) The default messaging subsystem config does not include an embedded JMS broker. Instead it is configured to point to a remote Artemis broker. Using an external broker is a more cloud-native way to deploy an app, which is why this variant is moving that way. The docs/examples/configs dir includes a standalone-activemq-embedded.xml config that provides the embedded broker.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">This definitely brings a big testing challenge as almost all of our tests involving messaging, including EJB MDB tests, assume the embedded broker is present. A quick workaround would be to run those against a server using the example standalone-activemq-embedded.xml config, but we also need to work out proper testing for the standard config that uses a remote broker.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">4) The feature pack doesn&#39;t include various misc stuff that we either intended to prune from WF in general at some point (JSR77, picketlink extension, legacy subsystems that only provide domain-mode Domain Controller support for AS 7 hosts) or where it wasn&#39;t clear what we&#39;d do so I left things behind just to reduce the initial scope (agroal, versions of Hibernate other than 5.3).</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">5) As noted above, this is equivalent to a wildfly-ee feature pack so it doesn&#39;t include MP FT, JWT or OpenAPI.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">6) A &#39;thin server&#39; (where JBoss Modules finds artifacts in maven, rather than in the local modules dir) does not work really well, as the transformed artifacts are not in the usual local or remote maven repos.  There are things you can do in this area, but that&#39;s too much of an advanced case to get into here.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">Besides what I noted above there are some known issues, just in case you experiment and hit them:</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">a) Transforming unmanaged EE 8 apps to EE 9 is not supported. This likely won&#39;t change for quite a while if ever. (Note: zipped apps deployed by the deployment scanner *are* managed apps. This limitation primary relates to exploded deployments.)<br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">b) The transformation of the jastow library needs improvement so the classes it generates from JSPs properly use the jakarta packages.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">c) The JSF impl doesn&#39;t properly provide a jsf.js file.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">I&#39;m aiming to frequently merge master into this branch, so it keeps up to date with changes in master. It might make sense to create an ee-9 branch in the wildfly/wildfly github repo just to make it easier to coordinate updates, run CI etc. But for now I&#39;m happy to receive PRs against this branch in my repo.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">I encourage people to give this a spin.</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">If you&#39;re looking for things to do on this topic, please reach out to myself or Scott Marlow or Richard Opalka. There&#39;s plenty to do but this post is already way too long!</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div><br></div><span class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif">Best regards,</span><div><span class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif">Brian</span></div><div><span class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif"><br></span></div><div><span class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif">[1] </span><a href="https://wildfly.org/news/2020/06/23/WildFly-and-Jakarta-EE-9/">https://wildfly.org/news/2020/06/23/WildFly-and-Jakarta-EE-9/</a></div><div><div class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif">[2] <a href="https://github.com/wildfly/wildfly/pull/13453" style="font-family:Arial,Helvetica,sans-serif">https://github.com/wildfly/wildfly/pull/13453</a> and <a href="https://github.com/bstansberry/wildfly/tree/ee-9" style="font-family:Arial,Helvetica,sans-serif">https://github.com/bstansberry/wildfly/tree/ee-9</a></div><div class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif">[3] <a href="https://github.com/wildfly/wildfly/tree/master/ee-feature-pack/galleon-feature-pack" style="font-family:Arial,Helvetica,sans-serif">https://github.com/wildfly/wildfly/tree/master/ee-feature-pack/galleon-feature-pack</a></div><div class="gmail_default" style="font-family:&quot;trebuchet ms&quot;,sans-serif">[4] <a href="https://github.com/wildfly/wildfly/pull/13394" style="font-family:Arial,Helvetica,sans-serif">https://github.com/wildfly/wildfly/pull/13394</a></div><br></div></div>