diff --git a/kitchensink/.cheatsheet.xml b/.cheatsheet.xml
similarity index 100%
rename from kitchensink/.cheatsheet.xml
rename to .cheatsheet.xml
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 114239c427..0000000000
--- a/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-*.sh text eol=lf
-*.bat text eol=crlf
diff --git a/.github/workflows/reduce_readme.yml b/.github/workflows/reduce_readme.yml
deleted file mode 100644
index baea94539b..0000000000
--- a/.github/workflows/reduce_readme.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-name: JBoss EAP 8.0 Quickstarts Update 'README.adoc's
-
-on:
- push:
- branches:
- - 8.0.x
-
-# Only run the latest job
-concurrency:
- group: '${{ github.workflow }} @ ${{ github.ref || github.run_id }}'
- cancel-in-progress: true
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout Repository
- uses: actions/checkout@v4
- - name: Install Asciidoctor Reducer
- run: sudo gem install asciidoctor-reducer
- - name: Reduce README
- run: |
- CURRENT_DIR="$( pwd -P)"
- #Get a list of subdirectories that don't start with a .
- subdirs=`find . -maxdepth 1 -type d ! -iname ".*"`
- #Loop over the subdirectories
- for subdir in $subdirs
- do
- cd $subdir
- #Check if the directory contains README-source.adoc
- if [ -e README-source.adoc ]
- then
- #Get the dirname to define artifactId in the adoc
- ARTIFACT_ID=":artifactId: $(basename `pwd`)"
- #Use asciidoctor-reducer to create a flattened README.adoc
- asciidoctor-reducer --preserve-conditionals -o README.adoc README-source.adoc
- #Insert the directory name with env-github def so that this only affects GitHub rendering
- sed -i "1s/^/ifdef::env-github[]\n$ARTIFACT_ID\nendif::[]\n\n/" README.adoc
- fi
- cd $CURRENT_DIR
- done
- #Reduce root README
- asciidoctor-reducer --preserve-conditionals -o README.adoc README-source.adoc
- - name: Commit and Push README
- uses: EndBug/add-and-commit@v9
- with:
- add: '*.adoc'
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 507e3e33af..0000000000
--- a/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-*~
-build
-target
-.DS_Store
-bin
-.openshift
-*/.gitignore
-.gitkeep
-/helloworld-jsp
-SERVICES.html
-CHANGES.html
-CONTRIBUTING.html
-RELEASE_PROCEDURE.html
-guide/*.html
-shared-doc/*.html
-out
-nb-configuration.xml
-nbactions.xml
-.idea
-*.ipr
-*.iws
-*.iml
-atlassian-ide-plugin.xml
-.checkstyle
-.classpath
-.project
-.settings
-.metadata
-.factorypath
-.nbattrs
-*.log
-build.metadata
-
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index 2ace97f851..0000000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,219 +0,0 @@
-====
- JBoss, Home of Professional Open Source
- Copyright 2015, Red Hat, Inc. and/or its affiliates, and individual
- contributors by the @authors tag. See the copyright.txt in the
- distribution for a full listing of individual contributors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-====
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/README-source.adoc b/README-source.adoc
index adb2b131bd..17f2c20b74 100644
--- a/README-source.adoc
+++ b/README-source.adoc
@@ -1,245 +1,60 @@
-include::shared-doc/attributes.adoc[]
+include::../shared-doc/attributes.adoc[]
-:toc:
-:toclevels: 4
-:numbered:
-
-ifndef::ProductRelease,EAPXPRelease[]
-= {productName} Quickstarts
-
-[toc]
+= kitchensink: Assortment of technologies including Arquillian
+:author: Pete Muir
+:level: Intermediate
+:technologies: CDI, JSF, JPA, EJB, JAX-RS, BV
+:openshift: true
[abstract]
-The quickstarts demonstrate {javaVersion} and a few additional technologies from the {productNameFull} stack. They provide small, specific, working examples that can be used as a reference for your own project.
-
-[[introduction]]
-== Introduction
-
-These quickstarts run on the WildFly application server. The quickstarts are configured to use the correct Maven dependencies and ensure that you test and compile the quickstarts against the correct runtime environment.
-
-Each quickstart folder contains a `README.adoc` file that describes the quickstart features and provides instructions about how to build and run it. Instructions are provided to build the more readable `README.html` files.
-
-Make sure you read this entire document before you attempt to work with the quickstarts.
-
-[[system_requirements]]
-== System Requirements
-
-The applications these projects produce are designed to be run on {productNameFull} {productVersion} or later.
-
-All you need to build these projects is {buildRequirements}.
-
-[[use_of_product_home_and_jboss_home_variables]]
-== Use of WILDFLY_HOME and QUICKSTART_HOME Variables
-
-The quickstart `README` files use the _replaceable_ value `__WILDFLY_HOME__` to denote the path to the WildFly server. When you encounter this value in a `README` file, make sure you replace it with the actual path to your WildFly server.
-
-When you see the replaceable variable __QUICKSTART_HOME__, replace it with the path to the root directory of all of the quickstarts.
-
-[[prerequisites]]
-== Prerequisites
-
-Before you begin, you must perform the following tasks.
-
-. xref:build_wildfly_server[Build the WildFly Server (Optional)]: This step is only required if you plan to run the latest https://github.com/wildfly/wildfly[development version of the WildFly server]. It is not required if you are running a https://github.com/wildfly/wildfly/tags[tagged] or https://github.com/wildfly/wildfly/releases[released] version of the WildFly server.
-
-. xref:build_wildfly_boms[Build and Install the WildFly BOMs (Optional)]: This step is only required if you are building a development version of the WildFly server and see dependency issues when you build the quickstarts. It is not required if you are running a https://github.com/wildfly/quickstart/tags[tagged] or https://github.com/wildfly/boms/releases[released] version of the WildFly server.
-
-. xref:build_quickstart_readme_files[Build the Quickstart README.html Files (Required)]: The quickstart `README` files are written in AsciiDoc to provide modular, reusable content; however, this makes them difficult to read. For this reason, you must also build the quickstart `README.html` files from the AsciiDoc source.
-
-[[build_wildfly_server]]
-=== Build the WildFly Server (Optional)
-
-If you have downloaded a https://github.com/wildfly/wildfly/tags[tagged] or https://github.com/wildfly/wildfly/releases[released] version of the WildFly server, you can ignore this step. You can simply extract the WildFly server from the compressed file and https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/START_JBOSS_EAP.adoc#start-the-red-hat-jboss-enterprise-application-platform-server[start the server] from that directory.
+The `kitchensink` quickstart demonstrates a {javaVersion} web-enabled database application using JSF, CDI, EJB, JPA, and Bean Validation.
-If you plan to run the https://github.com/wildfly/wildfly[development version of the WildFly server], you must first download and build the WildFly server from source.
+:standalone-server-type: default
+:archiveType: war
+:uses-h2:
+:uses-ds-xml:
-. If you have not yet done so, you must clone https://github.com/wildfly/wildfly[WildFly server] repository and navigate to it. You might also want to change the remote name from `origin` to `upstream` to be consistent with your other repositories.
-+
-[source,options="nowrap"]
-----
-$ git clone git@github.com:wildfly/wildfly.git
-$ cd wildfly
-$ git remote rename origin upstream
-----
-. Verify that your local `master` branch contains the latest updates.
-+
-[source,options="nowrap"]
-----
-$ git fetch upstream
-$ git checkout master
-$ git reset --hard upstream/master
-----
-
-. Build the WildFly server using the following command.
-+
-[source,options="nowrap"]
-----
-$ mvn clean install -DskipTests -Denforcer.skip=true -Dcheckstyle.skip=true
-----
+== What is it?
-. The WildFly server folder and ZIP files, which are named `wildfly-__VERSION__-SNAPSHOT` and `wildfly-__VERSION__-SNAPSHOT.ZIP` respectively, are located in the `build/target/` directory. You can copy that folder or unzip the file to another location or https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/START_JBOSS_EAP.adoc#start-the-red-hat-jboss-enterprise-application-platform-server[start the server] from that directory.
+The `kitchensink` quickstart is a deployable Maven 3 project designed to help you get your foot in the door developing with {javaVersion} on {productNameFull}.
+It demonstrates how to create a compliant {javaVersion} application using JSF, CDI, JAX-RS, EJB, JPA, and Bean Validation. It also includes a persistence unit and some sample persistence and transaction code to introduce you to database access in enterprise Java.
-[[build_wildfly_boms]]
-=== Build and Install the WildFly BOMs (Optional)
-
-If you have downloaded and are running a https://github.com/wildfly/quickstart/tags[tagged] or https://github.com/wildfly/quickstart/releases[released] version of the quickstarts, you can ignore this step because the required BOMs are already installed in Maven.
-
-If you are using the latest https://github.com/wildfly/quickstart[development version] of the quickstarts and you are able to successfully build and deploy the quickstarts, you can also ignore this step because the required BOMS are already installed in Maven.
-
-However, if you are using the latest https://github.com/wildfly/quickstart[development version] of the quickstarts and you see build errors indicating missing dependencies, you must first xref:build_wildfly_server[build the latest WildFly server] and then build and install the WildFly BOMs. This installs the latest Maven artifacts that are required by the SNAPSHOT version of the WildFly quickstarts that are still under development.
-
-. If you have not yet done so, clone https://github.com/wildfly/boms[WildFly BOMs] repository and navigate to it. You might also want to rename the directory to `wildfly-boms` to make it clear which BOMs it contains and also change the remote name from `origin` to `upstream` to be consistent with your other repositories.
-+
-[source,options="nowrap"]
-----
-$ git clone git@github.com:wildfly/boms.git
-$ mv boms wildfly-boms
-$ cd wildfly-boms
-$ git remote rename origin upstream
-----
-. Verify that your local `master` branch contains the latest updates.
-+
-[source,options="nowrap"]
-----
-$ git fetch upstream
-$ git checkout master
-$ git reset --hard upstream/master
-----
-
-. Build the WildFly BOMs using the following command.
-+
-[source,options="nowrap"]
-----
-$ mvn clean install
-----
-+
-NOTE: If you run into build errors, check with the WildFly team to see if the repositories are temporarily out of sync.
+// Considerations for Use in a Production Environment
+include::../shared-doc/development-shortcuts.adoc[leveloffset=+1]
+// System Requirements
+include::../shared-doc/system-requirements.adoc[leveloffset=+1]
+// Use of {jbossHomeName}
+include::../shared-doc/use-of-jboss-home-name.adoc[leveloffset=+1]
-. At this point, you can verify that all of the quickstarts build using the following command.
-+
-[source,options="nowrap"]
-----
-$ mvn clean install '-Pdefault,!complex-dependencies'
-----
+// build and run with standard server distribution
+[[build_and_run_the_quickstart_with_server_dist]]
+== Building and running the quickstart application with a {productName} server distribution
+// Start the {productName} Standalone Server
+include::../shared-doc/start-the-standalone-server.adoc[leveloffset=+2]
+// Build and Deploy the Quickstart
+include::../shared-doc/build-and-deploy-the-quickstart.adoc[leveloffset=+2]
-[[build_quickstart_readme_files]]
-=== Build the Quickstart README.html Files (Required)
+=== Access the Application
-The quickstart `README` files are written in AsciiDoc, not only because the language is much more powerful than Markdown, but also also because it is possible to extract common instructions into separate files to be reused across the quickstarts. While this makes them more flexible and easier to maintain, unfortunately, included files do not render in a readable format in GitHub or in most text editors.
+The application will be running at the following URL: http://localhost:8080/{artifactId}/.
-The Maven plugin that is used to build and deploy the quickstarts can also generate fully rendered `README.html` instructions from the `README.adoc` files.
+=== Server Log: Expected Warnings and Errors
-To build all of the quickstart `README.html` files, including the root `README.html` file that contains the table with links to all available quickstarts, navigate to the root folder of the quickstarts and run the following command.
+You will see the following warnings in the server log. You can ignore these warnings.
[source,options="nowrap"]
----
-$ mvn clean package -Pdocs
+WFLYJCA0091: -ds.xml file deployments are deprecated. Support may be removed in a future version.
----
-[TIP]
-====
-To build the `README.html` file for a specific quickstart, navigate to the quickstart directory and run the above command.
-====
-
-If you see errors about missing dependencies, check the xref:prerequisites[prerequisites] section to determine whether you need to xref:build_wildfly_boms[build the WildFly BOMs] that corresponds to the version of the quickstarts that you are using.
-
-[[suggested_approach_to_the_quickstarts]]
-== Suggested Approach to the Quickstarts
-
-We recommend that you approach the quickstarts as follows:
-
-* Regardless of your level of expertise, we suggest you start with the `helloworld` quickstart. It is the simplest example and is an easy way to prove the server is configured and running correctly.
-* If you are a beginner or new to JBoss, start with the quickstarts labeled `Beginner`, then try those marked as `Intermediate`. When you are comfortable with those, move on to the `Advanced` quickstarts.
-* Some quickstarts are based upon other quickstarts but have expanded capabilities and functionality. If a prerequisite quickstart is listed, make sure you deploy and test it before looking at the expanded version.
-
-The root folder of each individual quickstart contains a `README.html` file with detailed instructions on how to build and run the example.
-
-// END ifndef::ProductRelease,EAPCDRelease,EAPXPRelease[]
-endif::[]
-
-//**********************************************************************************
-//
-// WildFly Developers: You can ignore the rest of this file.
-// It is for the JBoss EAP product, CD and XP Releases.
-//
-//**********************************************************************************
-
-ifdef::ProductRelease,EAPXPRelease[]
-// These instructions are only for the JBoss EAP product, CD and XP Releases.
-= {productNameFull} ({productName}) Quickstarts
-
-[abstract]
-The quickstarts demonstrate {javaVersion} and a few additional technologies from the {productNameFull} stack. They provide small, specific, working examples that can be used as a reference for your own project.
-
-[[introduction]]
-== Introduction
-
-These quickstarts run on {productNameFull} {productVersion}.
+// Testing with Arquillian
+include::../shared-doc/run-arquillian-integration-tests-with-server-distribution.adoc[leveloffset=+2]
+// Undeploy the Quickstart
+include::../shared-doc/undeploy-the-quickstart.adoc[leveloffset=+2]
-We recommend that you use the *{quickstartDownloadName}* ZIP file, which you can download from the {quickstartDownloadUrl}[{productName} Software Download] page on the Red Hat Customer Portal. This version of the quickstarts uses the correct dependencies and ensures that you test and compile against the correct server runtime environment.
-
-Each quickstart folder contains a `README{outfilesuffix}` file that describes the quickstart features and provides instructions about how to build and run it.
-
-Make sure you read this entire document before you attempt to work with the quickstarts.
-
-ifdef::ProductRelease,EAPXPRelease[]
-// System Requirements are not needed for the CD Releases, only for the Product and XP Release.
-[[system_requirements]]
-== System Requirements
-
-The applications these projects produce are designed to be run on {productNameFull} {productVersion} or later.
-
-All you need to build these projects is {buildRequirements}.
-
-[[use_of_product_home_and_jboss_home_variables]]
-== Use of {jbossHomeName} and QUICKSTART_HOME Variables
-
-The quickstart `README` files use the _replaceable_ value `__{jbossHomeName}__` to denote the path to the {productName} installation. When you encounter this value in a `README` file, make sure you replace it with the actual path to your {productName} installation. The installation path is described in detail here: link:{useProductHomeDocUrl}[Use of __{jbossHomeName}__ and __JBOSS_HOME__ Variables]
-
-When you see the replaceable variable __QUICKSTART_HOME__, replace it with the path to the root directory of all of the quickstarts.
-// END ifdef::ProductRelease,EAPXPRelease[]
-endif::[]
-
-[[suggested_approach_to_the_quickstarts]]
-== Suggested Approach to the Quickstarts
-
-We suggest you approach the quickstarts as follows:
-
-* Regardless of your level of expertise, we suggest you start with the `helloworld` quickstart. It is the simplest example and is an easy way to prove the server is configured and running correctly.
-* If you are a beginner or new to JBoss, start with the quickstarts labeled `Beginner`, then try those marked as `Intermediate`. When you are comfortable with those, move on to the `Advanced` quickstarts.
-* Some quickstarts are based upon other quickstarts but have expanded capabilities and functionality. If a prerequisite quickstart is listed, make sure you deploy and test it before looking at the expanded version.
-
-// END ifdef::ProductRelease,EAPXPRelease[]
+// Build and run sections for other environments/builds
+ifndef::ProductRelease,EAPXPRelease[]
+include::../shared-doc/build-and-run-the-quickstart-with-provisioned-server.adoc[leveloffset=+1]
endif::[]
-
-// The following is included for all versions: WildFly, JBoss EAP, EAP CD and EAP XP
-[[available_quickstarts]]
-== Table of Available Quickstarts
-
-The sources for all available quickstarts, which are listed in the following table, can be found here: {githubRepoUrl}.
-
-Each quickstart provides the list of technologies demonstrated by the quickstart and the required experience level needed to build and deploy it. Click on the quickstart link in the table to see more detailed information about how to run it. Some quickstarts require deployment of other quickstarts. This information is noted in the `Prerequisites` section of the quickstart `README.html` file.
-
-NOTE: Some of these quickstarts use the H2 database included with {productNameFull} {productVersion}. It is a lightweight, relational example datasource that is used for examples only. It is not robust or scalable, is not supported, and should NOT be used in a production environment!
-
-//
-[cols="1,1,2,1,1", options="header"]
-|===
-| Quickstart Name | Demonstrated Technologies | Description | Experience Level Required | Prerequisites
-| link:cmt/README{outfilesuffix}[cmt]|EJB, CMT, JMS | The `cmt` quickstart demonstrates Container-Managed Transactions (CMT), showing how to use transactions managed by the container. | Intermediate | _none_
-| link:ee-security/README{outfilesuffix}[ee-security]|EE Security, Servlet, CDI | The `ee-security` quickstart demonstrates Jakarta EE security. | Intermediate | _none_
-| link:helloworld/README{outfilesuffix}[helloworld]|Servlet | The `helloworld` quickstart demonstrates the use of Servlet 6 and is a good starting point to verify {productName} is configured correctly. | Beginner | _none_
-| link:helloworld-ws/README{outfilesuffix}[helloworld-ws]|JAX-WS | The `helloworld-ws` quickstart demonstrates a simple Hello World application, bundled and deployed as a WAR, that uses JAX-WS to say Hello. | Beginner | _none_
-| link:jaxrs-client/README{outfilesuffix}[jaxrs-client]|JAX-RS | The `jaxrs-client` quickstart demonstrates JAX-RS Client API, which interacts with a JAX-RS Web service that runs on {productName}. | Beginner | _none_
-| link:kitchensink/README{outfilesuffix}[kitchensink]|CDI, JSF, JPA, EJB, JAX-RS, BV | The `kitchensink` quickstart demonstrates a {javaVersion} web-enabled database application using JSF, CDI, EJB, JPA, and Bean Validation. | Intermediate | _none_
-| link:numberguess/README{outfilesuffix}[numberguess]|CDI, JSF | The `numberguess` quickstart demonstrates the use of CDI (Contexts and Dependency Injection) and JSF (JavaServer Faces) in {productName}. | Beginner | _none_
-| link:remote-helloworld-mdb/README{outfilesuffix}[remote-helloworld-mdb]|JMS, EJB, MDB | The `remote-helloworld-mdb` quickstart demonstrates the use of JMS and EJB Message-Driven Bean in {productName} with a remote broker. | Intermediate | _none_
-| link:servlet-security/README{outfilesuffix}[servlet-security]|Servlet, Security | The `servlet-security` quickstart demonstrates the use of Jakarta EE declarative security to control access to Servlets and Security in {productName}. | Intermediate | _none_
-| link:temperature-converter/README{outfilesuffix}[temperature-converter]|CDI, JSF, SLSB EJB | The `temperature-converter` quickstart does temperature conversion using an EJB Stateless Session Bean (SLSB), CDI, and a JSF front-end client. | Beginner | _none_
-| link:thread-racing/README{outfilesuffix}[thread-racing]|Batch, CDI, EE Concurrency, JAX-RS, JMS, JPA, JSON, Web Sockets | A thread racing web application that demonstrates technologies introduced or updated in the latest Jakarta EE specification. | Beginner | _none_
-| link:todo-backend/README{outfilesuffix}[todo-backend]|JPA, JAX-RS, OpenShift, Galleon | The `todo-backend` quickstart demonstrates how to implement a backend that exposes a HTTP API with JAX-RS | Intermediate | _none_
-| link:websocket-hello/README{outfilesuffix}[websocket-hello]|WebSocket, CDI, JSF | The `websocket-hello` quickstart demonstrates how to create a simple WebSocket application. | Beginner | _none_
-|===
-//
-
+include::../shared-doc/build-and-run-the-quickstart-with-openshift.adoc[leveloffset=+1]
diff --git a/README.adoc b/README.adoc
index f2b98af85e..412e7f9aa7 100644
--- a/README.adoc
+++ b/README.adoc
@@ -1,3 +1,7 @@
+ifdef::env-github[]
+:artifactId: kitchensink
+endif::[]
+
//***********************************************************************************
// Enable the following flag to build README.html files for JBoss EAP product builds.
// Comment it out for WildFly builds.
@@ -193,245 +197,677 @@ endif::[]
:LinkJBDSGettingStarted: https://access.redhat.com/documentation/en-us/red_hat_codeready_studio/{JBDSVersion}/html-single/getting_started_with_codeready_studio_tools/
:JBDSGettingStartedBookName: Getting Started with CodeReady Studio Tools
-:toc:
-:toclevels: 4
-:numbered:
+= kitchensink: Assortment of technologies including Arquillian
+:author: Pete Muir
+:level: Intermediate
+:technologies: CDI, JSF, JPA, EJB, JAX-RS, BV
+:openshift: true
-ifndef::ProductRelease,EAPXPRelease[]
-= {productName} Quickstarts
+[abstract]
+The `kitchensink` quickstart demonstrates a {javaVersion} web-enabled database application using JSF, CDI, EJB, JPA, and Bean Validation.
-[toc]
+:standalone-server-type: default
+:archiveType: war
+:uses-h2:
+:uses-ds-xml:
-[abstract]
-The quickstarts demonstrate {javaVersion} and a few additional technologies from the {productNameFull} stack. They provide small, specific, working examples that can be used as a reference for your own project.
+== What is it?
+
+The `kitchensink` quickstart is a deployable Maven 3 project designed to help you get your foot in the door developing with {javaVersion} on {productNameFull}.
+
+It demonstrates how to create a compliant {javaVersion} application using JSF, CDI, JAX-RS, EJB, JPA, and Bean Validation. It also includes a persistence unit and some sample persistence and transaction code to introduce you to database access in enterprise Java.
+
+// Considerations for Use in a Production Environment
+:leveloffset: +1
+
+[[considerations_for_use_in_a_production_environment]]
+= Considerations for Use in a Production Environment
+//******************************************************************************
+// Include this template if your quickstart:
+// * Uses the h2 database: Be sure to define the `uses-h2` attribute.
+// * Uses an `*-ds.xml file`: Be sure to define the `uses-ds-xml` attribute.
+// * Has performance or scalability concerns: Be sure to define the `uses-ds-xml` attribute.
+//******************************************************************************
+
+ifdef::uses-h2[]
+
+H2 Database:: This quickstart uses the H2 database included with {productNameFull} {productVersion}. It is a lightweight, relational example datasource that is used for examples only. It is not robust or scalable, is not supported, and should NOT be used in a production environment.
+
+endif::uses-h2[]
-[[introduction]]
-== Introduction
+ifdef::uses-ds-xml[]
-These quickstarts run on the WildFly application server. The quickstarts are configured to use the correct Maven dependencies and ensure that you test and compile the quickstarts against the correct runtime environment.
+Datasource Configuration File:: This quickstart uses a `*-ds.xml` datasource configuration file for convenience and ease of database configuration. These files are deprecated in {productName} and should not be used in a production environment. Instead, you should configure the datasource using the Management CLI or Management Console. Datasource configuration is documented in the {LinkConfigGuide}[__{ConfigBookName}__].
-Each quickstart folder contains a `README.adoc` file that describes the quickstart features and provides instructions about how to build and run it. Instructions are provided to build the more readable `README.html` files.
+endif::uses-ds-xml[]
-Make sure you read this entire document before you attempt to work with the quickstarts.
+ifdef::performance-scalability[]
+
+Performance and Scalability:: A Jakarta EE container is designed with robustness in mind, so you should carefully analyze the scalabiltiy, concurrency, and performance needs of your application before taking advantage of these techniques in your own applications.
+
+endif::performance-scalability[]
+
+:leveloffset!:
+// System Requirements
+:leveloffset: +1
[[system_requirements]]
-== System Requirements
+= System Requirements
+//******************************************************************************
+// Include this template to describe the standard system requirements for
+// running the quickstarts.
+//
+// The Forge quickstarts define a `forge-from-scratch` attribute because they
+// run entirely in CodeReady Studio and have different requirements .
+//******************************************************************************
+
+The application this project produces is designed to be run on {productNameFull} {productVersion} or later.
+
+All you need to build this project is {buildRequirements}. See link:{configureMavenDocUrl}[Configure Maven to Build and Deploy the Quickstarts] to make sure you are configured correctly for testing the quickstarts.
-The applications these projects produce are designed to be run on {productNameFull} {productVersion} or later.
+:leveloffset!:
+// Use of {jbossHomeName}
+:leveloffset: +1
-All you need to build these projects is {buildRequirements}.
+ifdef::requires-multiple-servers[]
+[[use_of_jboss_home_name]]
+= Use of the {jbossHomeName}_1, {jbossHomeName}_2, and QUICKSTART_HOME Variables
-[[use_of_product_home_and_jboss_home_variables]]
-== Use of WILDFLY_HOME and QUICKSTART_HOME Variables
+This quickstart requires that you clone your `__{jbossHomeName}__` installation directory and run two servers. The installation path is described in detail here: link:{useProductHomeDocUrl}[Use of __{jbossHomeName}__ and __JBOSS_HOME__ Variables].
-The quickstart `README` files use the _replaceable_ value `__WILDFLY_HOME__` to denote the path to the WildFly server. When you encounter this value in a `README` file, make sure you replace it with the actual path to your WildFly server.
+In the following instructions, replace `__{jbossHomeName}_1__` with the path to your first {productName} server and replace `__{jbossHomeName}_2__` with the path to your second cloned {productName} server.
When you see the replaceable variable __QUICKSTART_HOME__, replace it with the path to the root directory of all of the quickstarts.
+endif::[]
-[[prerequisites]]
-== Prerequisites
+ifdef::optional-domain-or-multiple-servers[]
+[[use_of_jboss_home_name]]
+= Use of the {jbossHomeName}_1, {jbossHomeName}_2, and QUICKSTART_HOME Variables
-Before you begin, you must perform the following tasks.
+When deploying this quickstart to a managed domain, replace `__{jbossHomeName}__` with the actual path to your {productName} installation. The installation path is described in detail here: link:{useProductHomeDocUrl}[Use of __{jbossHomeName}__ and __JBOSS_HOME__ Variables].
-. xref:build_wildfly_server[Build the WildFly Server (Optional)]: This step is only required if you plan to run the latest https://github.com/wildfly/wildfly[development version of the WildFly server]. It is not required if you are running a https://github.com/wildfly/wildfly/tags[tagged] or https://github.com/wildfly/wildfly/releases[released] version of the WildFly server.
+When deploying this quickstart to multiple standalone servers, this quickstart requires that you clone your `__{jbossHomeName}__` installation directory and run two servers. In the following instructions, replace `__{jbossHomeName}_1__` with the path to your first {productName} server and replace `__{jbossHomeName}_2__` with the path to your second cloned {productName} server.
-. xref:build_wildfly_boms[Build and Install the WildFly BOMs (Optional)]: This step is only required if you are building a development version of the WildFly server and see dependency issues when you build the quickstarts. It is not required if you are running a https://github.com/wildfly/quickstart/tags[tagged] or https://github.com/wildfly/boms/releases[released] version of the WildFly server.
+When you see the replaceable variable __QUICKSTART_HOME__, replace it with the path to the root directory of all of the quickstarts.
+endif::[]
-. xref:build_quickstart_readme_files[Build the Quickstart README.html Files (Required)]: The quickstart `README` files are written in AsciiDoc to provide modular, reusable content; however, this makes them difficult to read. For this reason, you must also build the quickstart `README.html` files from the AsciiDoc source.
+ifndef::requires-multiple-servers,optional-domain-or-multiple-servers[]
+[[use_of_jboss_home_name]]
+= Use of the {jbossHomeName} and QUICKSTART_HOME Variables
-[[build_wildfly_server]]
-=== Build the WildFly Server (Optional)
+In the following instructions, replace `__{jbossHomeName}__` with the actual path to your {productName} installation. The installation path is described in detail here: link:{useProductHomeDocUrl}[Use of __{jbossHomeName}__ and __JBOSS_HOME__ Variables].
-If you have downloaded a https://github.com/wildfly/wildfly/tags[tagged] or https://github.com/wildfly/wildfly/releases[released] version of the WildFly server, you can ignore this step. You can simply extract the WildFly server from the compressed file and https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/START_JBOSS_EAP.adoc#start-the-red-hat-jboss-enterprise-application-platform-server[start the server] from that directory.
+When you see the replaceable variable __QUICKSTART_HOME__, replace it with the path to the root directory of all of the quickstarts.
+endif::[]
+
+:leveloffset!:
+
+// build and run with standard server distribution
+[[build_and_run_the_quickstart_with_server_dist]]
+== Building and running the quickstart application with a {productName} server distribution
+// Start the {productName} Standalone Server
+:leveloffset: +2
+
+[[start_the_eap_standalone_server]]
+= Start the {productName} Standalone Server
+//******************************************************************************
+// Include this template if your quickstart requires a normal start of a single
+// standalone server.
+//
+// You must define the `standalone-server-type`. Supported values are:
+// default
+// full
+// full-ha
+// ha
+// custom
+//
+// * For mobile applications, you can define the `mobileApp` variable in the
+// `README.adoc` file to add `-b 0.0.0.0` to the command line. This allows
+// external clients, such as phones, tablets, and desktops, to connect
+// to the application through through your local network
+// ::mobileApp: {artifactId}-service
+//
+//******************************************************************************
+
+//******************************************************************************
+// This template sets attributes for the different standalone server profiles.
+//
+// You must define the `standalone-server-type`. Supported values are:
+// default
+// full
+// full-ha
+// ha
+// microprofile
+// custom
+//******************************************************************************
+
+// Standalone server with the default profile.
+ifeval::["{standalone-server-type}"=="default"]
+:serverProfile: default profile
+:configFileName: standalone/configuration/standalone.xml
+:serverArguments:
+endif::[]
+
+// Standalone server with the full profile.
+ifeval::["{standalone-server-type}"=="full"]
+:serverProfile: full profile
+:configFileName: standalone/configuration/standalone-full.xml
+:serverArguments: -c standalone-full.xml
+endif::[]
+
+// Standalone server with the full HA profile.
+ifeval::["{standalone-server-type}"=="full-ha"]
+:serverProfile: full HA profile
+:configFileName: standalone/configuration/standalone-full-ha.xml
+:serverArguments: -c standalone-full-ha.xml
+endif::[]
-If you plan to run the https://github.com/wildfly/wildfly[development version of the WildFly server], you must first download and build the WildFly server from source.
+// Start the standalone server with the HA profile.
+ifeval::["{standalone-server-type}"=="ha"]
+:serverProfile: HA profile
+:configFileName: standalone/configuration/standalone-ha.xml
+:serverArguments: -c standalone-ha.xml
+endif::[]
+
+// Start the standalone server with the Eclipse MicroProfile profile.
+ifeval::["{standalone-server-type}"=="microprofile"]
+:serverProfile: MicroProfile profile
+:configFileName: standalone/configuration/standalone-microprofile.xml
+:serverArguments: -c standalone-microprofile.xml
+endif::[]
-. If you have not yet done so, you must clone https://github.com/wildfly/wildfly[WildFly server] repository and navigate to it. You might also want to change the remote name from `origin` to `upstream` to be consistent with your other repositories.
+// Standalone server with the custom profile.
+// NOTE: This profile requires that you define the `serverArguments` variable
+// within the quickstart README.adoc file. For example:
+// :serverArguments: --server-config=../../docs/examples/configs/standalone-xts.xml
+ifeval::["{standalone-server-type}"=="custom"]
+:serverProfile: custom profile
+endif::[]
+
+// If there is no match, use the default profile.
+ifndef::serverProfile[]
+:standalone-server-type: default
+:serverProfile: default profile
+:configFileName: standalone/configuration/standalone.xml
+:serverArguments:
+endif::serverProfile[]
+
+. Open a terminal and navigate to the root of the {productName} directory.
+. Start the {productName} server with the {serverProfile} by typing the following command.
+
-[source,options="nowrap"]
+ifdef::uses-jaeger[]
+[source,subs="+quotes,attributes+",options="nowrap"]
----
-$ git clone git@github.com:wildfly/wildfly.git
-$ cd wildfly
-$ git remote rename origin upstream
+$ __JAEGER_REPORTER_LOG_SPANS=true JAEGER_SAMPLER_TYPE=const JAEGER_SAMPLER_PARAM=1__ __{jbossHomeName}__/bin/standalone.sh {serverArguments}
----
-. Verify that your local `master` branch contains the latest updates.
-+
-[source,options="nowrap"]
+endif::[]
+ifndef::uses-jaeger[]
+[source,subs="+quotes,attributes+",options="nowrap"]
----
-$ git fetch upstream
-$ git checkout master
-$ git reset --hard upstream/master
+$ __{jbossHomeName}__/bin/standalone.sh {serverArguments}
----
+endif::[]
++
+NOTE: For Windows, use the `__{jbossHomeName}__\bin\standalone.bat` script.
-. Build the WildFly server using the following command.
+ifdef::mobileApp[]
+
-[source,options="nowrap"]
+Adding `-b 0.0.0.0` to the above command allows external clients, such as phones, tablets, and desktops, to connect through your local network. For example:
++
+[source,subs="+quotes,attributes+",options="nowrap"]
----
-$ mvn clean install -DskipTests -Denforcer.skip=true -Dcheckstyle.skip=true
+$ __{jbossHomeName}__/bin/standalone.sh {serverArguments} -b 0.0.0.0
----
+endif::[]
+
+:leveloffset!:
+// Build and Deploy the Quickstart
+:leveloffset: +2
+
+[[build_and_deploy_the_quickstart]]
+= Build and Deploy the Quickstart
+//******************************************************************************
+// Include this template if your quickstart does a normal deployment of a archive.
+//
+// * Define the `archiveType` variable in the quickstart README file.
+// Supported values:
+// :archiveType: ear
+// :archiveType: war
+// :archiveType: jar
+//
+// * To override the archive name, which defaults to the {artifactId),
+// define the `archiveName` variable, for example:
+// :archiveName: {artifactId}-service
+//
+// * To override the archive output directory,
+// define the `archiveDir` variable, for example:
+// :archiveDir: ear/target
+//
+// * To override the Maven command, define the `mavenCommand` variable,
+// for example:
+// :mavenCommand: clean install wildfly:deploy
+//******************************************************************************
+
+// The archive name defaults to the artifactId if not overridden
+ifndef::archiveName[]
+:archiveName: {artifactId}
+endif::archiveName[]
+
+// The archive type defaults to war if not overridden
+ifndef::archiveType[]
+:archiveType: war
+endif::archiveType[]
+
+// Define the archive file name as the concatenation of "archiveName" + "." + "archiveType+
+:archiveFileName: {archiveName}.{archiveType}
+
+// If they have not defined the target archive directory, make it the default for the archive type.
+ifndef::archiveDir[]
-. The WildFly server folder and ZIP files, which are named `wildfly-__VERSION__-SNAPSHOT` and `wildfly-__VERSION__-SNAPSHOT.ZIP` respectively, are located in the `build/target/` directory. You can copy that folder or unzip the file to another location or https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/START_JBOSS_EAP.adoc#start-the-red-hat-jboss-enterprise-application-platform-server[start the server] from that directory.
+ifeval::["{archiveType}"=="ear"]
+:archiveDir: {artifactId}/ear/target
+endif::[]
+
+ifeval::["{archiveType}"=="war"]
+:archiveDir: {artifactId}/target
+endif::[]
+
+ifeval::["{archiveType}"=="jar"]
+:archiveDir: {artifactId}/target
+endif::[]
+endif::archiveDir[]
-[[build_wildfly_boms]]
-=== Build and Install the WildFly BOMs (Optional)
+ifndef::mavenCommand[]
+ifeval::["{archiveType}"=="ear"]
+:mavenCommand: clean install
+endif::[]
-If you have downloaded and are running a https://github.com/wildfly/quickstart/tags[tagged] or https://github.com/wildfly/quickstart/releases[released] version of the quickstarts, you can ignore this step because the required BOMs are already installed in Maven.
+ifeval::["{archiveType}"=="war"]
+:mavenCommand: clean package
+endif::[]
-If you are using the latest https://github.com/wildfly/quickstart[development version] of the quickstarts and you are able to successfully build and deploy the quickstarts, you can also ignore this step because the required BOMS are already installed in Maven.
+ifeval::["{archiveType}"=="jar"]
+:mavenCommand: clean install
+endif::[]
-However, if you are using the latest https://github.com/wildfly/quickstart[development version] of the quickstarts and you see build errors indicating missing dependencies, you must first xref:build_wildfly_server[build the latest WildFly server] and then build and install the WildFly BOMs. This installs the latest Maven artifacts that are required by the SNAPSHOT version of the WildFly quickstarts that are still under development.
+endif::mavenCommand[]
-. If you have not yet done so, clone https://github.com/wildfly/boms[WildFly BOMs] repository and navigate to it. You might also want to rename the directory to `wildfly-boms` to make it clear which BOMs it contains and also change the remote name from `origin` to `upstream` to be consistent with your other repositories.
+. Make sure you xref:start_the_eap_standalone_server[start the {productName} server] as described above.
+. Open a terminal and navigate to the root directory of this quickstart.
+ifdef::reactive-messaging[]
+. Run this command to enable the MicroProfile Reactive Messaging functionality on the server
+
-[source,options="nowrap"]
+[source,subs="attributes+",options="nowrap"]
----
-$ git clone git@github.com:wildfly/boms.git
-$ mv boms wildfly-boms
-$ cd wildfly-boms
-$ git remote rename origin upstream
+$ __{jbossHomeName}__/bin/jboss-cli.sh --connect --file=enable-reactive-messaging.cli
----
-. Verify that your local `master` branch contains the latest updates.
+endif::reactive-messaging[]
+. Type the following command to build the quickstart.
+
-[source,options="nowrap"]
+[source,subs="attributes+",options="nowrap"]
----
-$ git fetch upstream
-$ git checkout master
-$ git reset --hard upstream/master
+$ mvn {mavenCommand}
----
-. Build the WildFly BOMs using the following command.
+. Type the following command to deploy the quickstart.
+
-[source,options="nowrap"]
+[source,subs="attributes+",options="nowrap"]
----
-$ mvn clean install
+$ mvn wildfly:deploy
----
-+
-NOTE: If you run into build errors, check with the WildFly team to see if the repositories are temporarily out of sync.
-. At this point, you can verify that all of the quickstarts build using the following command.
-+
+ifdef::rest-client-qs[]
+This builds and deploys the `country-server` and `country-client` to the running instance of the server.
+
+You should see a message in the server log indicating that the archives deployed successfully.
+endif::[]
+ifndef::rest-client-qs[]
+This deploys the `{archiveDir}/{archiveFileName}` to the running instance of the server.
+
+You should see a message in the server log indicating that the archive deployed successfully.
+endif::[]
+
+
+:leveloffset!:
+
+=== Access the Application
+
+The application will be running at the following URL: http://localhost:8080/{artifactId}/.
+
+=== Server Log: Expected Warnings and Errors
+
+You will see the following warnings in the server log. You can ignore these warnings.
+
[source,options="nowrap"]
----
-$ mvn clean install '-Pdefault,!complex-dependencies'
+WFLYJCA0091: -ds.xml file deployments are deprecated. Support may be removed in a future version.
----
-[[build_quickstart_readme_files]]
-=== Build the Quickstart README.html Files (Required)
+// Testing with Arquillian
+:leveloffset: +2
+
+[[run_the_arquillian_integration_tests_with_server_distribution]]
+= Run the Arquillian Integration Tests
+//******************************************************************************
+// Include this template if your quickstart provides standard Arquillian
+// integration tests.
+//******************************************************************************
-The quickstart `README` files are written in AsciiDoc, not only because the language is much more powerful than Markdown, but also also because it is possible to extract common instructions into separate files to be reused across the quickstarts. While this makes them more flexible and easier to maintain, unfortunately, included files do not render in a readable format in GitHub or in most text editors.
+This quickstart includes Arquillian integration tests. They are located under the `src/test/` directory. The integration tests verify that the quickstart runs correctly when deployed on the server.
-The Maven plugin that is used to build and deploy the quickstarts can also generate fully rendered `README.html` instructions from the `README.adoc` files.
+Follow these steps to run the integration tests.
-To build all of the quickstart `README.html` files, including the root `README.html` file that contains the table with links to all available quickstarts, navigate to the root folder of the quickstarts and run the following command.
+. Make sure you start the {productName} server, as previously described.
+. Make sure you build and deploy the quickstart, as previously described.
+
+. Type the following command to run the `verify` goal with the `arq-remote` profile activated.
++
[source,options="nowrap"]
----
-$ mvn clean package -Pdocs
+$ mvn verify -Parq-remote
----
-[TIP]
+[NOTE]
====
-To build the `README.html` file for a specific quickstart, navigate to the quickstart directory and run the above command.
+You may also use the environment variable `SERVER_HOST` or the system property `server.host` to define the target host of the tests.
====
-If you see errors about missing dependencies, check the xref:prerequisites[prerequisites] section to determine whether you need to xref:build_wildfly_boms[build the WildFly BOMs] that corresponds to the version of the quickstarts that you are using.
+:leveloffset!:
+// Undeploy the Quickstart
+:leveloffset: +2
-[[suggested_approach_to_the_quickstarts]]
-== Suggested Approach to the Quickstarts
+[[undeploy_the_quickstart]]
+= Undeploy the Quickstart
-We recommend that you approach the quickstarts as follows:
+//*******************************************************************************
+// Include this template if your quickstart does a normal undeployment of an archive.
+//*******************************************************************************
+When you are finished testing the quickstart, follow these steps to undeploy the archive.
-* Regardless of your level of expertise, we suggest you start with the `helloworld` quickstart. It is the simplest example and is an easy way to prove the server is configured and running correctly.
-* If you are a beginner or new to JBoss, start with the quickstarts labeled `Beginner`, then try those marked as `Intermediate`. When you are comfortable with those, move on to the `Advanced` quickstarts.
-* Some quickstarts are based upon other quickstarts but have expanded capabilities and functionality. If a prerequisite quickstart is listed, make sure you deploy and test it before looking at the expanded version.
+. Make sure you xref:start_the_eap_standalone_server[start the {productName} server] as described above.
+. Open a terminal and navigate to the root directory of this quickstart.
+. Type this command to undeploy the archive:
++
+[source,options="nowrap"]
+----
+$ mvn wildfly:undeploy
+----
-The root folder of each individual quickstart contains a `README.html` file with detailed instructions on how to build and run the example.
+:leveloffset!:
-// END ifndef::ProductRelease,EAPCDRelease,EAPXPRelease[]
+// Build and run sections for other environments/builds
+ifndef::ProductRelease,EAPXPRelease[]
+include::../shared-doc/build-and-run-the-quickstart-with-provisioned-server.adoc[leveloffset=+1]
endif::[]
+:leveloffset: +1
-//**********************************************************************************
-//
-// WildFly Developers: You can ignore the rest of this file.
-// It is for the JBoss EAP product, CD and XP Releases.
-//
-//**********************************************************************************
+[[build_and_run_the_quickstart_on_openshift]]
+= Building and running the quickstart application with OpenShift
+// The openshift profile
+:leveloffset: +1
-ifdef::ProductRelease,EAPXPRelease[]
-// These instructions are only for the JBoss EAP product, CD and XP Releases.
-= {productNameFull} ({productName}) Quickstarts
+[[build-the-quickstart-for-openshift]]
+== Build the {productName} Source-to-Image (S2I) Quickstart to OpenShift with Helm Charts
-[abstract]
-The quickstarts demonstrate {javaVersion} and a few additional technologies from the {productNameFull} stack. They provide small, specific, working examples that can be used as a reference for your own project.
+On OpenShift, the S2I build with Apache Maven will use an `openshift` profile used to provision a {productName} server to deploy and run the quickstart in OpenShift environment.
+You can activate the Maven profile named `openshift` when building the quickstart:
-[[introduction]]
-== Introduction
+[source,subs="attributes+",options="nowrap"]
+----
+$ mvn clean package -Popenshift
+----
-These quickstarts run on {productNameFull} {productVersion}.
+The provisioned {productName} server for OpenShift, with the quickstart deployed, can then be found in the `target/server` directory, and its usage is similar to a standard server distribution.
+ifndef::ProductRelease,EAPXPRelease[]
+You may note that unlike the `provisioned-server` profile it uses the cloud feature pack which enables a configuration tuned for OpenShift environment.
+endif::[]
+ifdef::ProductRelease,EAPXPRelease[]
+You may note that it uses the cloud feature pack which enables a configuration tuned for OpenShift environment.
+endif::[]
-We recommend that you use the *{quickstartDownloadName}* ZIP file, which you can download from the {quickstartDownloadUrl}[{productName} Software Download] page on the Red Hat Customer Portal. This version of the quickstarts uses the correct dependencies and ensures that you test and compile against the correct server runtime environment.
+ifndef::ProductRelease,EAPXPRelease[]
+The server provisioning functionality is provided by the WildFly Maven Plugin, and you may find its configuration in the quickstart `pom.xml`:
+endif::[]
-Each quickstart folder contains a `README{outfilesuffix}` file that describes the quickstart features and provides instructions about how to build and run it.
+ifdef::ProductRelease,EAPXPRelease[]
+The server provisioning functionality is provided by the EAP Maven Plugin, and you may find its configuration in the quickstart `pom.xml`:
+endif::[]
-Make sure you read this entire document before you attempt to work with the quickstarts.
+ifndef::ProductRelease,EAPXPRelease[]
+[source,xml,subs="attributes+"]
+----
+
+ openshift
+
+
+
+ org.jboss.eap.plugins
+ eap-maven-plugin
+ ${version.eap.maven.plugin}
+
+
+
+ org.wildfly:wildfly-galleon-pack:${version.server}
+
+
+ org.wildfly.cloud:wildfly-cloud-galleon-pack:${version.cloud.fp}
+
+
+
+ cloud-server
+
+ ROOT.war
+
+
+
+
+ package
+
+
+
+
+
+
+
+----
+endif::[]
ifdef::ProductRelease,EAPXPRelease[]
-// System Requirements are not needed for the CD Releases, only for the Product and XP Release.
-[[system_requirements]]
-== System Requirements
+[source,xml,subs="attributes+"]
+----
+
+ openshift
+
+
+
+ org.jboss.eap.plugins
+ eap-maven-plugin
+ ${version.eap.maven.plugin}
+
+
+
+ org.jboss.eap:wildfly-ee-galleon-pack
+
+
+ org.jboss.eap.cloud:eap-cloud-galleon-pack
+
+
+
+ cloud-server
+
+ ROOT.war
+
+
+
+
+ package
+
+
+
+
+
+
+
+----
+endif::[]
-The applications these projects produce are designed to be run on {productNameFull} {productVersion} or later.
+[NOTE]
+====
+Since the plugin configuration above deploys quickstart on root web context of the provisioned server, the URL to access the application should not have the `/{artifactId}` path segment after `HOST:PORT`.
+====
-All you need to build these projects is {buildRequirements}.
+:leveloffset: 1
+// Getting Started with Helm
+:leveloffset: +1
-[[use_of_product_home_and_jboss_home_variables]]
-== Use of {jbossHomeName} and QUICKSTART_HOME Variables
+[[getting_started_with_helm]]
+= Getting Started with {xpaasproduct-shortname} and Helm Charts
-The quickstart `README` files use the _replaceable_ value `__{jbossHomeName}__` to denote the path to the {productName} installation. When you encounter this value in a `README` file, make sure you replace it with the actual path to your {productName} installation. The installation path is described in detail here: link:{useProductHomeDocUrl}[Use of __{jbossHomeName}__ and __JBOSS_HOME__ Variables]
+This section contains the basic instructions to build and deploy this quickstart to {xpaasproduct-shortname} or {xpaasproductOpenShiftOnline-shortname} using Helm Charts.
-When you see the replaceable variable __QUICKSTART_HOME__, replace it with the path to the root directory of all of the quickstarts.
-// END ifdef::ProductRelease,EAPXPRelease[]
+[[prerequisites_helm_openshift]]
+== Prerequisites
+
+* You must be logged in OpenShift and have an `oc` client to connect to OpenShift
+* https://helm.sh[Helm] must be installed to deploy the backend on OpenShift.
+
+Once you have installed Helm, you need to add the repository that provides Helm Charts for {productName}.
+
+ifndef::ProductRelease,EAPXPRelease[]
+[source,options="nowrap"]
+----
+$ helm repo add wildfly https://docs.wildfly.org/wildfly-charts/
+"wildfly" has been added to your repositories
+$ helm search repo wildfly
+NAME CHART VERSION APP VERSION DESCRIPTION
+wildfly/wildfly ... ... Build and Deploy WildFly applications on OpenShift
+wildfly/wildfly-common ... ... A library chart for WildFly-based applications
+----
+endif::[]
+ifdef::ProductRelease[]
+[source,options="nowrap",subs="+attributes"]
+----
+$ helm repo add jboss-eap https://jbossas.github.io/eap-charts/
+"jboss-eap" has been added to your repositories
+$ helm search repo jboss-eap
+NAME CHART VERSION APP VERSION DESCRIPTION
+{helmChartName} ... ... A Helm chart to build and deploy EAP {productVersion} applications
+----
+endif::[]
+ifdef::EAPXPRelease[]
+[source,options="nowrap",subs="+attributes"]
+----
+$ helm repo add jboss-eap https://jbossas.github.io/eap-charts/
+"jboss-eap" has been added to your repositories
+$ helm search repo jboss-eap
+NAME CHART VERSION APP VERSION DESCRIPTION
+{helmChartName} ... ... A Helm chart to build and deploy EAP XP {productVersion} applications
+----
endif::[]
-[[suggested_approach_to_the_quickstarts]]
-== Suggested Approach to the Quickstarts
+:leveloffset: 1
+//Prepare Helm for Quickstart Deployment
+:leveloffset: +1
-We suggest you approach the quickstarts as follows:
+[[deploy_helm]]
+== Deploy the {ProductShortName} Source-to-Image (S2I) Quickstart to OpenShift with Helm Charts
-* Regardless of your level of expertise, we suggest you start with the `helloworld` quickstart. It is the simplest example and is an easy way to prove the server is configured and running correctly.
-* If you are a beginner or new to JBoss, start with the quickstarts labeled `Beginner`, then try those marked as `Intermediate`. When you are comfortable with those, move on to the `Advanced` quickstarts.
-* Some quickstarts are based upon other quickstarts but have expanded capabilities and functionality. If a prerequisite quickstart is listed, make sure you deploy and test it before looking at the expanded version.
+Log in to your OpenShift instance using the `oc login` command.
+The backend will be built and deployed on OpenShift with a Helm Chart for {productName}.
-// END ifdef::ProductRelease,EAPXPRelease[]
-endif::[]
+Navigate to the root directory of this quickstart and run the following command:
+[source,options="nowrap",subs="+attributes"]
+----
+$ helm install {artifactId} -f charts/helm.yaml {helmChartName}
+NAME: {artifactId}
+...
+STATUS: deployed
+REVISION: 1
+----
+
+The Helm Chart for this quickstart contains all the information to build an image from the source code using S2I on Java 17:
+
+[source,options="nowrap",subs="+attributes"]
+----
+build:
+ uri: {githubRepoCodeUrl}
+ ref: {WildFlyQuickStartRepoTag}
+ contextDir: {artifactId}
+deploy:
+ replicas: 1
+----
+
+This will create a new deployment on OpenShift and deploy the application.
+
+If you want to see all the configuration elements to customize your deployment you can use the following command:
+[source,options="nowrap",subs="+attributes"]
+----
+$ helm show readme {helmChartName}
+----
+
+Let’s wait for the application to be built and deployed:
+[source,options="nowrap",subs="+attributes"]
+----
+$ oc get deployment {artifactId} -w
+NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
+{artifactId} 1 1 1 0 12s
+...
+{artifactId} 1 1 1 1 2m
+----
+
+Get the URL of the route to the deployment.
+
+[source,options="nowrap",subs="+attributes"]
+----
+$ oc get route {artifactId} -o jsonpath="{.spec.host}"
+----
+Access the application in your web browser using the displayed URL.
+
+[NOTE]
+====
+The Maven profile named `openshift` is used by the Helm chart to provision the server with the quickstart deployed on the root web context, and thus the application should be accessed with the URL without the `/{artifactId}` path segment after `HOST:PORT`.
+====
+
+[[undeploy_helm]]
+== Undeploy the {ProductShortName} Source-to-Image (S2I) Quickstart from OpenShift with Helm Charts
+
+
+[source,options="nowrap",subs="+attributes"]
+----
+$ helm uninstall {artifactId}
+----
+
+:leveloffset: 1
+// Testing on Openshift
+:leveloffset: +1
+
+[[run_the_arquillian_integration_tests_with_openshift]]
+= Run the Arquillian Integration Tests with OpenShift
+//******************************************************************************
+// Include this template if your quickstart provides Openshift Arquillian
+// integration tests.
+//******************************************************************************
+
+This quickstart includes Arquillian integration tests. They are located under the `src/test/` directory. The integration tests verify that the quickstart runs correctly when deployed on the server.
+
+[NOTE]
+====
+The Arquillian integration tests expect a deployed application, so make sure you have deployed the quickstart on OpenShift before you begin.
+====
+
+Run the integration tests using the following command to run the `verify` goal with the `arq-remote` profile activated and the proper URL:
+[source,options="nowrap",subs="+attributes"]
+----
+$ mvn clean verify -Parq-remote -Dserver.host=https://$(oc get route {artifactId} --template='{{ .spec.host }}')
+----
+
+[NOTE]
+====
+The tests are using SSL to connect to the quickstart running on OpenShift. So you need the certificates to be trusted by the machine the tests are run from.
+====
+
+:leveloffset: 1
-// The following is included for all versions: WildFly, JBoss EAP, EAP CD and EAP XP
-[[available_quickstarts]]
-== Table of Available Quickstarts
-
-The sources for all available quickstarts, which are listed in the following table, can be found here: {githubRepoUrl}.
-
-Each quickstart provides the list of technologies demonstrated by the quickstart and the required experience level needed to build and deploy it. Click on the quickstart link in the table to see more detailed information about how to run it. Some quickstarts require deployment of other quickstarts. This information is noted in the `Prerequisites` section of the quickstart `README.html` file.
-
-NOTE: Some of these quickstarts use the H2 database included with {productNameFull} {productVersion}. It is a lightweight, relational example datasource that is used for examples only. It is not robust or scalable, is not supported, and should NOT be used in a production environment!
-
-//
-[cols="1,1,2,1,1", options="header"]
-|===
-| Quickstart Name | Demonstrated Technologies | Description | Experience Level Required | Prerequisites
-| link:cmt/README{outfilesuffix}[cmt]|EJB, CMT, JMS | The `cmt` quickstart demonstrates Container-Managed Transactions (CMT), showing how to use transactions managed by the container. | Intermediate | _none_
-| link:ee-security/README{outfilesuffix}[ee-security]|EE Security, Servlet, CDI | The `ee-security` quickstart demonstrates Jakarta EE security. | Intermediate | _none_
-| link:helloworld/README{outfilesuffix}[helloworld]|Servlet | The `helloworld` quickstart demonstrates the use of Servlet 6 and is a good starting point to verify {productName} is configured correctly. | Beginner | _none_
-| link:helloworld-ws/README{outfilesuffix}[helloworld-ws]|JAX-WS | The `helloworld-ws` quickstart demonstrates a simple Hello World application, bundled and deployed as a WAR, that uses JAX-WS to say Hello. | Beginner | _none_
-| link:jaxrs-client/README{outfilesuffix}[jaxrs-client]|JAX-RS | The `jaxrs-client` quickstart demonstrates JAX-RS Client API, which interacts with a JAX-RS Web service that runs on {productName}. | Beginner | _none_
-| link:kitchensink/README{outfilesuffix}[kitchensink]|CDI, JSF, JPA, EJB, JAX-RS, BV | The `kitchensink` quickstart demonstrates a {javaVersion} web-enabled database application using JSF, CDI, EJB, JPA, and Bean Validation. | Intermediate | _none_
-| link:numberguess/README{outfilesuffix}[numberguess]|CDI, JSF | The `numberguess` quickstart demonstrates the use of CDI (Contexts and Dependency Injection) and JSF (JavaServer Faces) in {productName}. | Beginner | _none_
-| link:remote-helloworld-mdb/README{outfilesuffix}[remote-helloworld-mdb]|JMS, EJB, MDB | The `remote-helloworld-mdb` quickstart demonstrates the use of JMS and EJB Message-Driven Bean in {productName} with a remote broker. | Intermediate | _none_
-| link:servlet-security/README{outfilesuffix}[servlet-security]|Servlet, Security | The `servlet-security` quickstart demonstrates the use of Jakarta EE declarative security to control access to Servlets and Security in {productName}. | Intermediate | _none_
-| link:temperature-converter/README{outfilesuffix}[temperature-converter]|CDI, JSF, SLSB EJB | The `temperature-converter` quickstart does temperature conversion using an EJB Stateless Session Bean (SLSB), CDI, and a JSF front-end client. | Beginner | _none_
-| link:thread-racing/README{outfilesuffix}[thread-racing]|Batch, CDI, EE Concurrency, JAX-RS, JMS, JPA, JSON, Web Sockets | A thread racing web application that demonstrates technologies introduced or updated in the latest Jakarta EE specification. | Beginner | _none_
-| link:todo-backend/README{outfilesuffix}[todo-backend]|JPA, JAX-RS, OpenShift, Galleon | The `todo-backend` quickstart demonstrates how to implement a backend that exposes a HTTP API with JAX-RS | Intermediate | _none_
-| link:websocket-hello/README{outfilesuffix}[websocket-hello]|WebSocket, CDI, JSF | The `websocket-hello` quickstart demonstrates how to create a simple WebSocket application. | Beginner | _none_
-|===
-//
+:leveloffset!:
diff --git a/README.html b/README.html
index 51bad6a120..b22575eaa5 100644
--- a/README.html
+++ b/README.html
@@ -5,7 +5,8 @@
-
Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstarts
+
+kitchensink: Assortment of technologies including Arquillian
-
-
-
-
cmt: Container Managed Transactions (CMT)
-
-Tom Jenkinson
-
-
-
-
-
-
-
-The cmt quickstart demonstrates Container-Managed Transactions (CMT), showing how to use transactions managed by the container.
-
-
-
-
-
-
What is it?
-
-
-
The cmt quickstart demonstrates how to use container-managed transactions (CMT), which are transactions managed by the container in Red Hat JBoss Enterprise Application Platform. It is a fairly typical scenario of updating a database and sending a JMS message in the same transaction. A simple MDB is provided that prints out the message sent but this is not a transactional MDB and is purely provided for debugging purposes.
-
-
-
Aspects touched upon in the code:
-
-
-
-
-
XA transaction control using the container managed transaction annotations
-
-
-
XA access to the standard default datasource using the JPA API
-
-
-
XA access to a JMS queue
-
-
-
-
-
What are Container Managed Transactions?
-
-
Prior to EJB, getting the right incantation to ensure sound transactional operation of the business logic was a highly specialized skill. Although this still holds true to a great extent, EJB has provided a series of improvements to allow simplified transaction demarcation notation that is therefore easier to read and test.
-
-
-
With CMT, the EJB container sets the boundaries of a transaction. This differs from BMT (bean-managed transactions), where the developer is responsible for initiating and completing a transaction using the begin, commit, and rollback methods on a jakarta.transaction.UserTransaction.
-
-
-
-
What Makes This an Example of Container Managed Transactions?
-
-
Take a look at org.jboss.as.quickstarts.cmt.ejb.CustomerManagerEJB. You can see that this stateless session bean has been marked up with the @jakarta.ejb.TransactionAttribute annotation.
-
-
-
The following options are available for this annotation.
-
-
-
-
Required
-
-
As demonstrated in the quickstart. If a transaction does not already exist, this will initiate a transaction and complete it for you, otherwise the business logic will be integrated into the existing transaction.
-
-
RequiresNew
-
-
If there is already a transaction running, it will be suspended, the work performed within a new transaction which is completed at exit of the method and then the original transaction resumed.
-
-
Mandatory
-
-
If there is no transaction running, calling a business method with this annotation will result in an error.
-
-
NotSupported
-
-
If there is a transaction running, it will be suspended and no transaction will be initiated for this business method.
-
-
Supports
-
-
This will run the method within a transaction if a transaction exists, alternatively, if there is no transaction running, the method will not be executed within the scope of a transaction.
-
-
Never
-
-
If the client has a transaction running and does not suspend it but calls a method annotated with Never then an EJB exception will be raised.
-
-
-
-
-
-
-
-
Considerations for Use in a Production Environment
-
-
-
-
H2 Database
-
-
This quickstart uses the H2 database included with Red Hat JBoss Enterprise Application Platform 8.0. It is a lightweight, relational example datasource that is used for examples only. It is not robust or scalable, is not supported, and should NOT be used in a production environment.
-
-
-
-
-
-
-
System Requirements
-
-
-
The application this project produces is designed to be run on Red Hat JBoss Enterprise Application Platform 8.0 or later.
-
-
-
All you need to build this project is Java 11.0 (Java SDK 11) or later and Maven 3.6.0 or later. See Configure Maven to Build and Deploy the Quickstarts to make sure you are configured correctly for testing the quickstarts.
-
-
-
-
-
Use of the EAP_HOME and QUICKSTART_HOME Variables
-
-
-
In the following instructions, replace EAP_HOME with the actual path to your JBoss EAP installation. The installation path is described in detail here: Use of EAP_HOME and JBOSS_HOME Variables.
-
-
-
When you see the replaceable variable QUICKSTART_HOME, replace it with the path to the root directory of all of the quickstarts.
-
-
-
-
-
Building and running the quickstart application with a JBoss EAP server distribution
-
-
-
Start the JBoss EAP Standalone Server
-
-
-
-
Open a terminal and navigate to the root of the JBoss EAP directory.
-
-
-
Start the JBoss EAP server with the full profile by typing the following command.
You are presented with a simple form for adding customers to a database.
-
-
-
After a customer is successfully added to the database, a message is produced containing the details of the customer. An example MDB dequeues this message and print the following contents.
-
-
-
-
Received Message: Created invoice for customer named: Jack
-
-
-
-
If an existing customer name is provided, no JMS message is sent. Instead of the above message, a duplicate warning is displayed.
-
-
-
The customer name should match: letter & '-', otherwise an error is given. This is to show that a LogMessage entity is still stored in the database. That is because the logCreateCustomer method in the LogMessageManagerEJB EJB is decorated with the @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) annotation.
-
-
-
-
Run the Arquillian Integration Tests
-
-
This quickstart includes Arquillian integration tests. They are located under the src/test/ directory. The integration tests verify that the quickstart runs correctly when deployed on the server.
-
-
-
Follow these steps to run the integration tests.
-
-
-
-
-
Make sure you start the JBoss EAP server, as previously described.
-
-
-
Make sure you build and deploy the quickstart, as previously described.
-
-
-
Type the following command to run the verify goal with the arq-remote profile activated.
-
-
-
$ mvn verify -Parq-remote
-
-
-
-
-
-
-
-
-
-
Note
-
-
-
-
You may also use the environment variable SERVER_HOST or the system property server.host to define the target host of the tests.
-
-
-
-
-
-
-
-
Undeploy the Quickstart
-
-
When you are finished testing the quickstart, follow these steps to undeploy the archive.
Open a terminal and navigate to the root directory of this quickstart.
-
-
-
Type this command to undeploy the archive:
-
-
-
$ mvn wildfly:undeploy
-
-
-
-
-
-
-
-
-
-
Building and running the quickstart application with OpenShift
-
-
-
Build the JBoss EAP Source-to-Image (S2I) Quickstart to OpenShift with Helm Charts
-
-
On OpenShift, the S2I build with Apache Maven will use an openshift profile used to provision a JBoss EAP server to deploy and run the quickstart in OpenShift environment.
-You can activate the Maven profile named openshift when building the quickstart:
-
-
-
-
$ mvn clean package -Popenshift
-
-
-
-
The provisioned JBoss EAP server for OpenShift, with the quickstart deployed, can then be found in the target/server directory, and its usage is similar to a standard server distribution.
-You may note that it uses the cloud feature pack which enables a configuration tuned for OpenShift environment.
-
-
-
The server provisioning functionality is provided by the EAP Maven Plugin, and you may find its configuration in the quickstart pom.xml:
Since the plugin configuration above deploys quickstart on root web context of the provisioned server, the URL to access the application should not have the /cmt path segment after HOST:PORT.
-
-
-
-
-
-
-
-
Getting Started with JBoss EAP for OpenShift and Helm Charts
-
-
This section contains the basic instructions to build and deploy this quickstart to JBoss EAP for OpenShift or JBoss EAP for OpenShift Online using Helm Charts.
-
-
-
Prerequisites
-
-
-
-
You must be logged in OpenShift and have an oc client to connect to OpenShift
-
-
-
Helm must be installed to deploy the backend on OpenShift.
-
-
-
-
-
Once you have installed Helm, you need to add the repository that provides Helm Charts for JBoss EAP.
-
-
-
-
$ helm repo add jboss-eap https://jbossas.github.io/eap-charts/
-"jboss-eap" has been added to your repositories
-$ helm search repo jboss-eap
-NAME CHART VERSION APP VERSION DESCRIPTION
-jboss-eap/eap8 ... ... A Helm chart to build and deploy EAP 8.0 applications
-
-
-
-
-
Deploy the JBoss EAP Source-to-Image (S2I) Quickstart to OpenShift with Helm Charts
-
-
Log in to your OpenShift instance using the oc login command.
-The backend will be built and deployed on OpenShift with a Helm Chart for JBoss EAP.
-
-
-
Navigate to the root directory of this quickstart and run the following command:
This will create a new deployment on OpenShift and deploy the application.
-
-
-
If you want to see all the configuration elements to customize your deployment you can use the following command:
-
-
-
-
$ helm show readme jboss-eap/eap8
-
-
-
-
Let’s wait for the application to be built and deployed:
-
-
-
-
$ oc get deployment cmt -w
-NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
-cmt 1 1 1 0 12s
-...
-cmt 1 1 1 1 2m
-
-
-
-
Get the URL of the route to the deployment.
-
-
-
-
$ oc get route cmt -o jsonpath="{.spec.host}"
-
-
-
-
Access the application in your web browser using the displayed URL.
-
-
-
-
-
-
Note
-
-
-
-
The Maven profile named openshift is used by the Helm chart to provision the server with the quickstart deployed on the root web context, and thus the application should be accessed with the URL without the /cmt path segment after HOST:PORT.
-
-
-
-
-
-
-
-
Undeploy the JBoss EAP Source-to-Image (S2I) Quickstart from OpenShift with Helm Charts
-
-
-
$ helm uninstall cmt
-
-
-
-
-
-
Run the Arquillian Integration Tests with OpenShift
-
-
This quickstart includes Arquillian integration tests. They are located under the src/test/ directory. The integration tests verify that the quickstart runs correctly when deployed on the server.
-
-
-
-
-
-
Note
-
-
-
-
The Arquillian integration tests expect a deployed application, so make sure you have deployed the quickstart on OpenShift before you begin.
-
-
-
-
-
-
-
Run the integration tests using the following command to run the verify goal with the arq-remote profile activated and the proper URL:
The tests are using SSL to connect to the quickstart running on OpenShift. So you need the certificates to be trusted by the machine the tests are run from.