diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc new file mode 100644 index 0000000000..97a08b4c0c --- /dev/null +++ b/CONTRIBUTING.adoc @@ -0,0 +1,561 @@ +:JBDSProductName: Red Hat Developer Studio + +[[jboss_developer_contributing_guide]] += JBoss Developer Contributing Guide + +This document contains information targeted for developers who want to contribute to Red Hat JBoss Enterprise Application Platform developer projects. + +* xref:join_the_mailing_list[Join the Mailing list]: Sign up for the JBoss developer mailing list. +* xref:contribute_a_quickstart[Contribute a Quickstart]: Find out how to contribute a quickstart. +* xref:create_a_quickstart_cheat_sheet[Create a Quickstart Cheat Sheet]: Learn how to create a `cheat sheet` for your quickstart. +* xref:copy_a_quickstart_to_another_repository_and_preserve_its_history[Copy a Quickstart to Another Repository and Preserve Its History]: Copy a quickstart from another location and preserve the commit history. +* xref:build_the_quickstart_readme_files[Build the README.html Files]: Build the README HTML file from its AsciiDoc source. + +[[join_the_mailing_list]] +== Join the Mailing list + +To monitor and participate in the latest development discussions, join the JBoss developer mailing list here: https://lists.jboss.org/mailman/listinfo/jbossdeveloper + +[[contribute_a_quickstart]] +== Contribute a Quickstart + +=== Purpose of the Quickstarts + +. To demonstrate Java EE technologies. +. To provide developers with working examples and instructions that are easy to follow. +. To provide code examples to be copied by developers and used as the basis for their own projects. + +=== Basic Steps + +To contribute to the quickstarts, fork the https://github.com/wildfly/quickstart[WildFly quickstart] repository to your own GitHub, clone your fork, check out a topic branch from the `master` branch, commit your work and push to your own repository, and submit pull requests back to the `master` branch. + +If you don't have the GitHub client (`git`), get it from: + +This document details the steps needed to contribute to the JBoss EAP / WildFly quickstarts. For other Red Hat product quickstarts, you need to replace the GitHub repository URL with the correct repository location. + +. Fork the https://github.com/wildfly/quickstart[WildFly quickstart] repository for the appropriate product. This creates the project under your own GitHub ID. The following table lists the quickstart repository URLs and the resulting GitHub URL created by the fork. ++ +[cols="50%,50%",options="header"] +|=== +| Product Repository URL +| Forked Repository URL +| https://github.com/wildfly/quickstart +| \https://github.com/__YOUR_USER_NAME__/quickstart.git +| https://github.com/jboss-developer/jboss-brms-quickstarts +| \https://github.com/__YOUR_USER_NAME__/jboss-brms-quickstarts.git +| https://github.com/jboss-developer/jboss-jdg-quickstarts +| \https://github.com/__YOUR_USER_NAME__/jboss-jdg-quickstarts.git +| https://github.com/jboss-developer/jboss-mobile-quickstarts +| \https://github.com/__YOUR_USER_NAME__/jboss-mobile-quickstarts.git +| https://github.com/jboss-developer/jboss-on-quickstarts +| \https://github.com/__YOUR_USER_NAME__/jboss-on-quickstarts.git +| https://github.com/jboss-developer/jboss-picketlink-quickstarts +| \https://github.com/__YOUR_USER_NAME__/jboss-picketlink-quickstarts.git +|=== + +. Clone your forked repository. This creates and populates a directory on your local file system, for example `quickstart/` with the default remote repository name `origin`. ++ +[source,subs="+quotes",options="nowrap"] +---- +git clone https://github.com/__YOUR_USER_NAME__/quickstart.git +---- +. Navigate to the newly created directory, for example: ++ +[source,options="nowrap"] +---- +cd quickstart/ +---- +. Add the remote `upstream` repository so you can fetch any changes to the original forked repository. ++ +[source,options="nowrap"] +---- +git remote add upstream https://github.com/wildfly/quickstart.git +---- +. Get the latest files from the `upstream` repository. ++ +[source,options="nowrap"] +---- +git fetch upstream +---- +. Check out a local topic branch to work with your new quickstart, features, changes, or fixes. ++ +IMPORTANT: Always work with the current developer branch of the quickstart repository. The is the branch that automatically displays in the dropdown when you browse to product quickstart directory. The default developer branch for the https://github.com/wildfly/quickstart[WildFly quickstarts] is the `master` branch. + +* Fetch the latest source from Git, then check out the latest source code from the development branch of the upstream repository into your own branch using the following syntax. ++ +[source,subs="+quotes",options="nowrap"] +---- +git fetch upstream +git checkout -b __TOPIC_BRANCH_NAME__ upstream/master +---- ++ +For example: ++ +[source,subs="+quotes",options="nowrap"] +---- +git fetch upstream +git checkout -b abc-quickstart upstream/master +---- + +* If you are fixing a Bugzilla or JIRA, it is a good practice to use the number in the branch name. For new quickstarts or other fixes, try to use a good description for the branch name. The following are examples of Git checkout commands: ++ +[source,options="nowrap"] +---- +git checkout -b Bz-98765432 upstream/master +git checkout -b JDF-9876543 upstream/master +git checkout -b add-xyz-quickstart upstream/master +---- +. Contribute new code or make changes to existing files. Make sure that you follow the xref:general_guidelines[General Guidelines] below. + +. Test your changes in 2 ways. Be sure to fix any checkstyle or build issues before you continue. +* Run the Maven command line to build and deploy the quickstart. +* Import the quickstart into {JBDSProductName} and make sure it builds and deploys with no errors or warnings. + +. Use the `git add` command to add new or changed file contents to the staging area. +* If you create a new quickstart, you can add files using the subfolder and file names. The following is an example of new quickstart folders and files you might want to stage: ++ +[source,options="nowrap"] +---- +git add src/ +git add pom.xml +git add README.adoc +---- ++ +NOTE: It is probably best not to add the entire quickstart root folder because you might unintentionally add classes or other target files that should not be in source control. + +* If you only modified a few files, use `git add __FILE_NAME__` for every file you create or change. For example: ++ +[source,options="nowrap"] +---- +git add README.adoc +---- +. Use the `git status` command to view the status of the files in the directory and in the staging area and ensure that all modified files are properly staged: ++ +[source,options="nowrap"] +---- +git status +---- +. Commit your changes to your local topic branch. ++ +[source,options="nowrap"] +---- +git commit -m 'Description of change...' +---- +. Update your branch with any changes made upstream since you started. +* Fetch the latest changes from upstream. ++ +[source,options="nowrap"] +---- +git fetch upstream +---- +* Rebase to apply any updates to your branch. ++ +[source,subs="+quotes",options="nowrap"] +---- +git rebase upstream/master +---- +* If anyone has committed changes to files that you have also changed, you might see conflicts. Resolve the conflicted files, add them using `git add`, and continue the rebase: ++ +[source,subs="+quotes",options="nowrap"] +---- +git add __CONFLICTED_FILE_NAME__ +git rebase --continue +---- +* If there were conflicts, it is a good idea to test your changes again to make they still work. + +. Push your local topic branch to your GitHub forked repository. This creates a branch on your Git fork repository with the same name as your local topic branch name. ++ +[source,options="nowrap"] +---- +git push origin HEAD +---- ++ +NOTE: The above command assumes your own remote Git repository is named `origin`. You can verify your forked remote repository name using the command `git remote -v`. + +. Browse to the __TOPIC_BRANCH_NAME__ branch on your forked Git repository and https://help.github.com/articles/creating-a-pull-request//[create a Pull Request]. Give it a clear title and description. + +[[general_guidelines]] +=== General Guidelines + +* The sample project should be formatted using the JBoss EAP profiles found at + +* Code should be well documented with good comments. Please add an author tag (@author) to credit yourself for writing the code. +* You should use readable variable names to make it easy for users to read the code. + +* The package must be `org.jboss.quickstarts.`, for example: `org.jboss.quickstarts.eap`, `org.jboss.quickstarts.jdg`, `org.jboss.quickstarts.brms`, or `org.jboss.quickstarts.fuse`. + +* The quickstart project or folder name should match the quickstart name. Each sample project should have a unique name, allowing easy identification by users and developers. + +* The quickstart project or folder name should be located in the root directory of the product quickstarts repository and should not be nested under other quickstarts or folders. For example, if you create quickstart "foo" for the JBoss EAP quickstarts, it should appear here: `__YOUR_PATH__/quickstart/foo`. + +* The quickstart directory structure should follow standard Java project rules: + +** All directories and packages containing Java source files should be placed in a `src/main/java/` directory, +** All Java source files should use package names. +** Index pages, JSF, and HTML files should be placed in a `src/main/webapp/` directory. +** Any `beans.xml`, `faces-config.xml`, and other related configuration files should be placed in a `src/main/webapp/WEB-INF/` directory. +** Resources such as images and stylesheets and the should be placed in the `src/main/webapp/resources` directory. + +* The `` in the quickstart `pom.xml` file should follow the template: `${qs.name.prefix} __QUICKSTART_NAME__ - __OPTIONAL_SUBFOLDER_NAME__` where: + +** `${qs.name.prefix}` is a property defined in the parent POM file that specifies the target product information, for example `JBoss EAP Quickstart:`. +** `__QUICKSTART_NAME__` is the quickstart folder name +** `__OPTIONAL_SUBFOLDER_NAME__` is the name of any nested subfolder that contains a `pom.xml` file. ++ +The following are a few examples of quickstart pom files and the correct name tags: ++ +[cols="50%,50%",options="header" ] +|=== +| Quickstart POM File | Element Value +| greeter/pom.xml | `${qs.name.prefix} greeter` +| kitchensink-ear/pom.xml | `${qs.name.prefix} kitchensink-ear` +| kitchensink-ear/ear/pom.xml | `${qs.name.prefix} kitchensink-ear - ear` +| kitchensink-ear/ejb/pom.xml | `${qs.name.prefix} kitchensink-ear - ejb` +| kitchensink-ear/web/pom.xml |`${qs.name.prefix} kitchensink-ear - web` +|=== + +* The `` in the quickstart `pom.xml` file should match the quickstart name. For example, the `` for the `greeter` quickstart in the EAP project is `greeter`. + +* The quickstart parent POM file now includes `` and `` elements to make it easier for developers to build the quickstarts without requiring additional Maven configuration. The quickstart `pom.xml` file contains entries for the following repositories. ++ +[[eap_maven_repositories]] + +[cols="50%,50%a",options="header"] +|=== +| Repository Description | Repository ID and URL +| The online JBoss EAP product repository +| ID: jboss-enterprise-maven-repository + +URL: https://maven.repository.redhat.com/ga/ +| The JBoss developer early access repository +| ID: jboss-enterprise-maven-repository-ea + +URL: https://maven.repository.redhat.com/earlyaccess/all/ +|=== ++ +See the https://github.com/wildfly/quickstart/blob/11.x/pom.xml#L155[WildFly parent `pom.xml`] file for an example of how to configure the `` and `` elements in a quickstart `pom.xml` file. + +* If you create a quickstart that uses a database table, make sure the name you use for the table is unique across all quickstarts. + +* The project must follow the structure used by existing quickstarts such as the `numberguess` quickstart. A good starting point would be to copy the https://github.com/wildfly/quickstart/tree/11.x/numberguess[`numberguess`] quickstart project. + +* You should be able to import the sample project into {JBDSProductName}/JBoss Tools and deploy it from there. + +* Maven POM files must be used. No other build system is allowed unless the purpose of the quickstart is to show another build system in use. If using Maven it should: + +** Not inherit from another POM except for the top-level parent POM. +** Maven POMs must use the Java EE spec BOM/POM imports +** The POMs must be commented, with a comment each item in the POM +** Import the various BOMs defined in the xref:eap_maven_repositories[JBoss EAP repositories]. You should not declare dependencies directly. If you do need additional artifacts, contact the Quickstart team to get them added to a BOM. +** Use the WildFly Maven Plugin to deploy the example. + +* The sample project must contain a `README.adoc` file using the `template/README.adoc` file as a guideline. + +** Many common instructions are included in AsciiDoc files located in the https://github.com/wildfly/quickstart/tree/master/shared-doc[shared-doc/] folder of the quickstart repository. Include those files if they contain the correct instructions for your quickstart. +** Be aware that some of these AsciiDoc include files require that you define a document attribute to determine how to generate the instructions. +** The `template/README.adoc` file shows the basic table of contents layout. +** When in doubt, try to find an existing quickstart that is similar to yours that you can use for guidance. +** Be sure to xref:build_the_quickstart_readme_files[build the README.html file] from its AsciiDoc source to make sure it renders correctly. + +* Do not forget to add your quickstart to the `modules` section in the parent `pom.xml` file. + +* The project must target Java EE 7 or Java EE 8. + +** CDI should be used as the programming model +** Avoid using a `web.xml` file if possible. Use a `faces-config.xml` to activate JSF if needed. +** Any tests should use Arquillian. + +* If the quickstart persists to a database, you must use a unique datasource JNDI name and connection URL for the application and for any Arquillian tests that it provides. Do not use the JNDI name `java:jboss/datasources/ExampleDS`. Failure to use unique names can result in a `DuplicateServiceException` when more than one quickstart is deployed to the same server. + +* Be sure to test the quickstart in {JBDSProductName}, which strictly enforces Java EE coding rules! + +* If possible, create a cheat sheet for the quickstart to guide users and developers through the example. See xref:create_a_quickstart_cheat_sheet[Create a Quickstart Cheat Sheet] for more information. + +[[kitchensink_variants]] +=== Kitchensink variants + +There are multiple quickstarts based on the ``kitchensink` quickstarts example. Each showcases different technologies and techniques including pure Java EE, JSF, HTML5, and GWT. + +If you wish to contribute a kitchensink variant is it important that you follow the look and feel of the original so that useful comparisons can be made. This does not mean that variants can not expand, and showcase additional functionality. Multiple variants already do that. These include mobile interfaces, push updates, and more. + +Below are rules for the *look and feel* of the variants: + +* Follow the primary layout, style, and graphics of the original. + +* Projects can have three to four lines directly under the JBoss EAP banner in the middle section to describe what makes this variant different. How projects use that space is up to them, but options include use of content such as as plain text, bullet points, and so on. + +* Projects can have their logo in the left side of the banner. The sidebar area can contain a section with links to the related projects, for example a wiki or tutorials. This logo should be below any JBoss EAP link areas. + +If appropriate for the technology, the application should expose RESTful endpoints following the example of the original `kitchensink` quickstart. This should also include the RESTful links in the member table. + +=== License Information and Contributor Agreement + +JBoss Developer Framework is licensed under the Apache License 2.0, as we believe it is one of the most permissive Open Source license. This allows developers to easily make use of the code samples in JBoss Developer Framework. + +There is no need to sign a contributor agreement to contribute to JBoss Developer Framework. You just need to explicitly license any contribution under the AL 2.0. If you add any new files to JBoss Developer Framework, make sure to add the correct header. + +==== Java, Javascript and CSS files + +[source,java,options="nowrap"] +---- +/** + * 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. + */ +---- + +==== HTML, XML, XSD and XHTML files + +[source,xml,options="nowrap"] +---- + +---- + +==== Properties files and Bash Scripts + +[source,options="nowrap"] +---- + # 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. +---- + +==== SQL files + +[source,options="nowrap"] +---- +-- +-- 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. +-- +---- + +==== JSP files + +[source,options="nowrap"] +---- +<%-- +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. +--%> +---- + +[[create_a_quickstart_cheat_sheet]] +== Create a Quickstart Cheat Sheet + +[[create_a_quickstart_cheat_sheet_purpose]] +=== Purpose of the Cheat Sheets + +* Cheat sheets function as a tutorial and provide a step by step guide through a quickstart. +* They provide a way to step through and explain the code in an interactive way. +* They can provide an in-depth analysis of specific sections of code. + +[[create_a_quickstart_cheat_sheet_steps]] +=== Basic Steps to Create a Cheat Sheet + +You can create a cheat sheet using the Eclipse Wizard or you can copy and modify an existing cheat sheet from another quickstart. This section describes how to create a cheat sheet using the Eclipse wizard. + +IMPORTANT: Be sure your project folder is located outside of the Eclipse workspace before you begin this process. + +. Import your quickstart into {JBDSProductName}. +.. From the menu, choose `File` --> `Import` --> `Maven` --> `Existing Maven Projects`, then click `Next`. +.. Navigate to your quickstart, select it, then click `OK`. +.. Click `Finish`. +. Create the cheat sheet. +.. Select the imported quickstart project. +.. From the menu, choose `File` --> `New` --> `Other` --> `User Assistance` --> `Cheat Sheet`, then click `Next`. +.. Select the quickstart folder, give it a name 'cheatsheet.xml', and choose `Simple Cheat Sheet`. +.. Click `Finish`. When it prompts you to open the cheatsheet for the quickstart project, click `Yes`. +. Populate the cheatsheet with useful information to help a user understand the quickstart. +.. Expand the `Title` in the content section on the left. +.. Select the `Title` field and modify it to something useful, for example: `helloworld` +.. Select the `intro` field and add introduction text to the `Body`, for example: ++ +[source,options="nowrap"] +---- +This quickstart demonstrates the use of CDI 1.0 and Servlet 3.0. It is a simple application that can be used to verify the JBoss EAP server is configured and running correctly. +---- +.. Select `item`, then under `Command`, click `browse` and select 'Get current project' under `Uncategorized`. This adds the following XML to the cheat sheet. ++ +[source,xml,options="nowrap"] +---- + +---- ++ +This command allows you to use the variable `${currentProject}` instead of a hard-coded path name and ensures your cheat sheet will work regardless of the project location. + +. Add an `item` for each file or class you want to describe. +* This is dependent on the quickstart features you plan to demonstrate. +* Provide a good description. +* Add subitems to describe code sections and provide the line numbers that are referenced. +. Test your cheat sheet by opening it in JDBS. +.. Go through each step and make sure the descriptions are valid. +.. Click on each link to make sure it opens the file and highlights the correct lines of code. +. When you finish testing the cheat sheet, rename the file from `cheatsheet.xml` to `.cheatsheet.xml` and make sure it is located in the root directory of the quickstart. +. Add the `.cheatsheet.xml` file using `git add`, commit the change, push it to your forked repository, and issue a pull request. +. If your cheat sheet is for the quickstart based on an archetype, it automatically generates the cheat sheet for the archetype. However, you must add an `.cheatsheet.*` to the fileset for the root directory in the corresponding archetype's `archetype-metadata.xml` file. See the `jboss-javaee6-webapp-archetype` archetype for an example. + +[[create_a_quickstart_cheat_sheet_general_guidelines]] +=== Quickstart Cheatsheet General Guidelines + +* If your project folder is located in the Eclipse workspace when you generate your cheat sheet using the Eclipse wizard, it will generate an invalid project name and attempts to open source code will fail. Be sure your project folder is located outside the Eclipse workspace before you begin. +* The cheat sheet should be created in the root of the quickstart directory and named `.cheatsheet.xml`. Eclipse does not let you name the file with a leading '.', so you need to rename it after it is created. +* Make sure you add the 'Get current project' command and use the replaceable `${currentProject}` value to avoid hard-coding the project path. This ensures that if the quickstart folder is moved, the cheat sheet will work as expected. +* Do not use the `` tag if it can be avoided. It is more fragile than the `` tag, which uses parameters names instead of indexes. +* Try to highlight the most important features and code for the quickstart. Pay particular attention to areas that might confuse developers. Cheat sheets require that users execute or skip each step, so you don't want to bore developers with the code that has no impact on the purpose of the quickstart. +* Make sure `` is the first line in the `.cheatsheet.xml` file, before the license information. This enables the cheat sheet to open automatically when you import the project into {JBDSProductName}. + +[[create_a_quickstart_cheat_sheet_find_help]] +=== Find Quickstart Cheatsheet Help + +You can find additional help about cheat sheets at the following locations: + +* http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fua_cheatsheet.htm&resultof=%22cheat%22%20%22sheet%22%20[Eclipse Help: Cheat sheets] +* http://www.eclipse.org/pde/pde-ui/articles/cheat_sheet_dev_workflow/[Recommended Work Flow for Cheat Sheet Development] +* https://github.com/maxandersen/cheatsheet-helloworld[Max's cheat sheet example] + + +[[copy_a_quickstart_to_another_repository_and_preserve_its_history]] +== Copy a Quickstart to Another Repository and Preserve Its History + +NOTE: The following instructions are based on information in this blog: http://blog.neutrino.es/2012/git-copy-a-file-or-directory-from-another-repository-preserving-history + +This example copies the `xyz-quickstart` quickstart that is currently located in the `jboss-sandbox-quickstart` repository into the WildFly `quickstart` repository, preserving its commit history. + +. Navigate to the parent directory of the quickstart you want to copy. ++ +[source,options="nowrap"] +---- +$ cd ~/jboss-sandbox-quickstarts +---- + +. Make sure you have downloaded the latest source from the sandbox repository that contains the quickstart and then check out a branch to work in. ++ +[source,options="nowrap"] +---- +$ git fetch upstream +$ git checkout -b copy-xyz-quickstart upstream/master +---- + +. Create a temporary directory to contain the quickstart patch files. ++ +[source,options="nowrap"] +---- +$ mkdir -p ~/temp/qsPatchFolder +---- + +. Create a `QS_SOURCE` environment variable that defines the quickstart source path. ++ +[source,options="nowrap"] +---- +$ export QS_SOURCE=~/jboss-sandbox-quickstarts/xyz-quickstart/ +---- + +. Execute the following command to create the quickstart patch files in the temporary quickstart patch folder. ++ +[source,options="nowrap"] +---- +$ git format-patch -o ~/temp/qsPatchFolder $(git log $QS_SOURCE|grep ^commit|tail -1|awk '{print $2}')^..HEAD $QS_SOURCE +---- + +. Navigate to parent directory where you want to move the quickstart. ++ +[source,options="nowrap"] +---- +$ cd ~/quickstart +---- +. Fetch the latest source code and check out a branch to work in. ++ +[source,options="nowrap"] +---- +$ git fetch upstream +$ git checkout -b merge-xyz-quickstart upstream/11.x +---- +. Merge the patches into the destination directory. ++ +[source,options="nowrap"] +---- +$ git am ~/temp/qsPatchFolder/*.patch +---- +. Push the changes to your own Git. +* Verify that the target quickstarts directory now contains the `xyz-quickstart` quickstart folder and files. +* Verify that the commit history is included. + +. Issue a pull to the upstream repository, verify it is correct, and merge. + +[[build_the_quickstart_readme_files]] +== Build the README.html Files + +To build the quickstart `README.html` file from the source `README.adoc` file, navigate to the quickstart directory and run the following command. + +[source] +---- +$ mvn clean generate-resources -Pdocs +---- + +NOTE: You can build all of the quickstarts by running the command in the root folder of the quickstarts. diff --git a/README.adoc b/README.adoc index 9f62f77100..d55dda6cf7 100644 --- a/README.adoc +++ b/README.adoc @@ -3,148 +3,51 @@ include::shared-doc/attributes.adoc[] = {productNameFull} ({productName}) Quickstarts [abstract] -The quickstarts demonstrate {javaVersion} and a few additional technologies from the JBoss stack. They provide small, specific, working examples that can be used as a reference for your own project. +These 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. + +//***************************************************************************** +// Begin Non-CD release Project (WildFly) and Product (JBoss EAP) instructions +//***************************************************************************** +ifndef::EAPCDRelease[] [[introduction]] == Introduction -These quickstarts run on {productNameFull} {productVersion} or later. We recommend using the {productName} ZIP file. This version uses the correct dependencies and ensures you test and compile against your runtime environment. +// JBoss EAP +ifdef::ProductRelease[] +These quickstarts run on {productNameFull} {productVersion}. 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. It contains the following information: +We recommend using the *{quickstartDownloadName}* ZIP file, which can be downloaded from {quickstartDownloadUrl}. This version of the quickstarts uses the correct dependencies and ensures that you test and compile against the correct runtime environment. -* xref:available_quickstarts[Available Quickstarts]: List of the available quickstarts and details about each one. +// End ifdef::ProductRelease[] +endif::[] -* xref:suggested_approach_to_the_quickstarts[Suggested Approach to the Quickstarts]: A suggested approach on how to work with the quickstarts. +// WildFly +ifndef::ProductRelease[] +These quickstarts run on {productNameFull}. Each quickstart folder contains a `README{outfilesuffix}` file that describes the quickstart features and provides instructions about how to build and run it. -* xref:system_requirements[System Requirements]: List of software required to run the quickstarts. +The quickstarts are configured to use the correct Maven dependencies and ensure that you test and compile the quickstarts against the correct runtime environment. +// End ifndef::ProductRelease[] +endif::[] -* link:{configureMavenDocUrl}[Configure Maven]: How to configure the Maven repository for use by the quickstarts. +Make sure you read this entire document before you attempt to work with the quickstarts. It contains the following information: +* xref:suggested_approach_to_the_quickstarts[Suggested Approach to the Quickstarts]: A suggested approach on how to work with the quickstarts. +* xref:system_requirements[System Requirements]: List of software required to run the quickstarts. +* link:{configureMavenDocUrl}[Configure Maven]: How to configure the Maven repository for use by the quickstarts. * xref:run_the_quickstarts[Run the Quickstarts]: General instructions for building, deploying, and running the quickstarts. - * link:{arquillianTestsDocUrl}[Run the Arquillian Tests]: How to run the Arquillian tests provided by some of the quickstarts. - * xref:optional_components[Optional Components]: How to install and configure optional components required by some of the quickstarts. - -* https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/CONTRIBUTING.adoc#jboss_developer_contributing_guide[Contributing Guide]: This document contains information targeted for developers who want to contribute to JBoss developer projects. +* https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/CONTRIBUTING.adoc#jboss_developer_contributing_guide[Contributing Guide]: This document contains information targeted for developers who want to contribute to {productName} developer projects. +* xref:available_quickstarts[Available Quickstarts]: List of the available quickstarts and details about each one. [[use_of_product_home_and_jboss_home_variables]] == Use of {jbossHomeName} and JBOSS_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]. -[[available_quickstarts]] -== Available Quickstarts - -All available quickstarts can be found here: {githubRepoUrl}. You can review the technologies demonstrated by the quickstart. You can also view the required experience level. Click on the quickstart 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` file. - -NOTE: Some of these quickstarts use the H2 database included with {productName}. 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:app-client/README{outfilesuffix}[app-client]|EJB, EAR, AppClient | The `app-client` quickstart demonstrates how to code and package a client app and use the {productName} client container to start the client `Main` program. | Intermediate | _none_ -| link:batch-processing/README{outfilesuffix}[batch-processing]|CDI, Batch 1.0, JSF | The `batch-processing` quickstart shows how to use chunk oriented batch jobs to import a file to a database. | Intermediate | _none_ -| link:bean-validation/README{outfilesuffix}[bean-validation]|CDI, JPA, BV | The `bean-validation` quickstart provides Arquillian tests to demonstrate how to use CDI, JPA, and Bean Validation. | Beginner | _none_ -| link:bean-validation-custom-constraint/README{outfilesuffix}[bean-validation-custom-constraint]|CDI, JPA, BV | The `bean-validation-custom-constraint` quickstart demonstrates how to use the Bean Validation API to define custom constraints and validators. | Beginner | _none_ -| link:bmt/README{outfilesuffix}[bmt]|EJB, BMT | The `bmt` quickstart demonstrates Bean-Managed Transactions (BMT), showing how to manually manage transaction demarcation while accessing JPA entities. | Intermediate | _none_ -| 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:contacts-jquerymobile/README{outfilesuffix}[contacts-jquerymobile]|jQuery Mobile, jQuery, JavaScript, HTML5, REST | The `contacts-jquerymobile` quickstart demonstrates a {javaVersion} mobile database application using HTML5, jQuery Mobile, JAX-RS, JPA, and REST. | Beginner | _none_ -| link:deltaspike-authorization/README{outfilesuffix}[deltaspike-authorization]|JSF, CDI, Deltaspike | Demonstrate the creation of a custom authorization example using @SecurityBindingType from DeltaSpike | Beginner | _none_ -| link:deltaspike-beanbuilder/README{outfilesuffix}[deltaspike-beanbuilder]|CDI, DeltaSpike | Shows how to create new beans using DeltaSpike utilities. | Advanced | _none_ -| link:deltaspike-projectstage/README{outfilesuffix}[deltaspike-projectstage]|JSF, CDI, Deltaspike | Demonstrate usage of DeltaSpike project stage and shows usage of a conditional @Exclude | Beginner | _none_ -| link:ejb-asynchronous/README{outfilesuffix}[ejb-asynchronous]|Asynchronous EJB | The `ejb-asynchronous` quickstart demonstrates the behavior of asynchronous EJB invocations by a deployed EJB and a remote client and how to handle errors. | Advanced | _none_ -| link:ejb-in-ear/README{outfilesuffix}[ejb-in-ear]|EJB, EAR | The `ejb-in-ear` quickstart demonstrates how to deploy an EAR archive that contains a *JSF* WAR and an EJB JAR. | Intermediate | _none_ -| link:ejb-in-war/README{outfilesuffix}[ejb-in-war]|EJB, JSF, WAR | The `ejb-in-war` quickstart demonstrates how to package an EJB bean in a WAR archive and deploy it to {productName}. Arquillian tests are also provided. | Intermediate | _none_ -| link:ejb-multi-server/README{outfilesuffix}[ejb-multi-server]|EJB, EAR | The `ejb-multi-server` quickstart shows how to communicate between multiple applications deployed to different servers using an EJB to log the invocation. | Advanced | _none_ -| link:ejb-remote/README{outfilesuffix}[ejb-remote]|EJB, JNDI | The `ejb-remote` quickstart uses EJB and JNDI to demonstrate how to access an EJB, deployed to {productName}, from a remote Java client application. | Intermediate | _none_ -| link:ejb-security/README{outfilesuffix}[ejb-security]|EJB, Security | The `ejb-security` quickstart demonstrates the use of Java EE declarative security to control access to EJBs in {productName}. | Intermediate | _none_ -| link:ejb-security-context-propagation/README{outfilesuffix}[ejb-security-context-propagation]|EJB, Security | The `ejb-security-context-propagation` quickstart demonstrates how the security context can be propagated to a remote EJB using a remote outbound connection configuration | Advanced | _none_ -| link:ejb-security-jaas/README{outfilesuffix}[ejb-security-jaas]|EJB, Security | The `ejb-security-jaas` quickstart demonstrates how legacy `JAAS` security domains can be used in conjunction with `Elytron` | Intermediate | _none_ -| link:ejb-security-programmatic-auth/README{outfilesuffix}[ejb-security-programmatic-auth]|EJB, Security | The `ejb-security-programmatic-auth` quickstart demonstrates how to programmatically setup different identities when invoking a remote secured EJB. | Intermediate | _none_ -| link:ejb-throws-exception/README{outfilesuffix}[ejb-throws-exception]|EJB, EAR | The `ejb-throws-exception` quickstart demonstrates how to throw and handle exceptions across JARs in an EAR. | Intermediate | _none_ -| link:ejb-timer/README{outfilesuffix}[ejb-timer]|EJB Timer | The `ejb-timer` quickstart demonstrates how to use the EJB timer service `@Schedule` and `@Timeout` annotations with {productName}. | Beginner | _none_ -| link:greeter/README{outfilesuffix}[greeter]|CDI, JSF, JPA, EJB, JTA | The `greeter` quickstart demonstrates the use of CDI, JPA, JTA, EJB and JSF in {productName}. | Beginner | _none_ -| link:ha-singleton-deployment/README{outfilesuffix}[ha-singleton-deployment]|EJB, Singleton Deployments, Clustering | The `ha-singleton-deployment` quickstart demonstrates the recommended way to deploy any service packaged in an application archive as a cluster-wide singleton. | Advanced | _none_ -| link:ha-singleton-service/README{outfilesuffix}[ha-singleton-service]|MSC, Singleton Service, Clustering | The `ha-singleton-service` quickstart demonstrates how to deploy a cluster-wide singleton MSC service. | Advanced | _none_ -| link:helloworld/README{outfilesuffix}[helloworld]|CDI, Servlet | The `helloworld` quickstart demonstrates the use of CDI and Servlet 3 and is a good starting point to verify {productName} is configured correctly. | Beginner | _none_ -| link:helloworld-classfiletransformer/README{outfilesuffix}[helloworld-classfiletransformer]|ClassLoading | This is a WAR based application showing you how Wildfly let you apply a ClassTransformer to the classes in your enterprise archive. | Advanced | _none_ -| link:helloworld-html5/README{outfilesuffix}[helloworld-html5]|CDI, JAX-RS, HTML5 | The `helloworld-html5` quickstart demonstrates the use of CDI 1.2 and JAX-RS 2.0 using the HTML5 architecture and RESTful services on the backend. | Beginner | _none_ -| link:helloworld-jms/README{outfilesuffix}[helloworld-jms]|JMS | The `helloworld-jms` quickstart demonstrates the use of external JMS clients with {productName}. | Intermediate | _none_ -| link:helloworld-mbean/README{outfilesuffix}[helloworld-mbean]|CDI, JMX, MBean | The `helloworld-mbean` quickstart demonstrates the use of CDI and MBean in {productName} and includes JConsole instructions and Arquillian tests. | Intermediate | _none_ -| link:helloworld-mdb/README{outfilesuffix}[helloworld-mdb]|JMS, EJB, MDB | The `helloworld-mdb` quickstart uses JMS and EJB Message-Driven Bean (MDB) to create and deploy JMS topic and queue resources in {productName}. | Intermediate | _none_ -| link:helloworld-mdb-propertysubstitution/README{outfilesuffix}[helloworld-mdb-propertysubstitution]|JMS, EJB, MDB | The `helloworld-mdb-propertysubstitution` quickstart demonstrates the use of JMS and EJB MDB, enabling property substitution with annotations. | Intermediate | _none_ -| link:helloworld-mutual-ssl/README{outfilesuffix}[helloworld-mutual-ssl]|Mutual SSL, Undertow | The `helloworld-mutual-ssl` quickstart is a basic example that demonstrates mutual SSL configuration in {productName} | Intermediate | _none_ -| link:helloworld-mutual-ssl-secured/README{outfilesuffix}[helloworld-mutual-ssl-secured]|Mutual SSL, Security, Undertow | The `helloworld-mutual-ssl-secured` quickstart demonstrates securing a Web application using client mutual SSL authentication and role-based access control | Intermediate | _none_ -| link:helloworld-rf/README{outfilesuffix}[helloworld-rf]|CDI, JSF, RichFaces | Similar to the `helloworld` quickstart, but with a JSF front end. | Beginner | _none_ -| link:helloworld-rs/README{outfilesuffix}[helloworld-rs]|CDI, JAX-RS | The `helloworld-rs` quickstart demonstrates a simple Hello World application, bundled and deployed as a WAR, that uses JAX-RS to say Hello. | Intermediate | _none_ -| link:helloworld-singleton/README{outfilesuffix}[helloworld-singleton]|EJB, Singleton | The `helloworld-singleton` quickstart demonstrates an EJB Singleton Bean that is instantiated once and maintains state for the life of the session. | Beginner | _none_ -| link:helloworld-ssl/README{outfilesuffix}[helloworld-ssl]|SSL, Undertow | The `helloworld-ssl` quickstart is a basic example that demonstrates server side SSL configuration in {productName}. | 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:hibernate/README{outfilesuffix}[hibernate]|Hibernate | The `hibernate` quickstart demonstrates how to use Hibernate ORM 5 API over JPA, using Hibernate-Core and Hibernate Bean Validation, and EJB. | Intermediate | _none_ -| link:hibernate4/README{outfilesuffix}[hibernate4]|Hibernate 4 | This quickstart performs the same functions as the _hibernate_ quickstart, but uses Hibernate 4 for database access. Compare this quickstart to the _hibernate_ quickstart to see the changes needed to run with Hibernate 5. | Intermediate | _none_ -| link:http-custom-mechanism/README{outfilesuffix}[http-custom-mechanism]|EJB, Security | The `http-custom-mechanism` quickstart demonstrates how to implement a custom HTTP authentication mechanism that can be registered with Elytron. | Intermediate | _none_ -| link:inter-app/README{outfilesuffix}[inter-app]|EJB, CDI, JSF | The `inter-app` quickstart shows you how to use a shared API JAR and an EJB to provide inter-application communication between two WAR deployments. | Advanced | _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:jaxrs-jwt/README{outfilesuffix}[jaxrs-jwt]|JAX-RS, Security | The `jaxrs-jwt` quickstart demonstrates a JAX-RS secured application using JSON Web Tokens (JWT) with Elytron. | Intermediate | _none_ -| link:jaxws-addressing/README{outfilesuffix}[jaxws-addressing]|JAX-WS | The `jaxws-addressing` quickstart is a working example of the web service using WS-Addressing. | Beginner | _none_ -| link:jaxws-ejb/README{outfilesuffix}[jaxws-ejb]|JAX-WS | The `jaxws-ejb` quickstart is a working example of the web service endpoint created from an EJB. | Beginner | _none_ -| link:jaxws-pojo/README{outfilesuffix}[jaxws-pojo]|JAX-WS | The `jaxws-pojo` quickstart is a working example of the web service endpoint created from a POJO. | Beginner | _none_ -| link:jaxws-retail/README{outfilesuffix}[jaxws-retail]|JAX-WS | The `jaxws-retail` quickstart is a working example of a simple web service endpoint. | Beginner | _none_ -| link:jsonp/README{outfilesuffix}[jsonp]|CDI, JSF, JSON-P | The `jsonp` quickstart demonstrates how to use the JSON-P API to produce object-based structures and then parse and consume them as stream-based JSON strings. | Beginner | _none_ -| link:jta-crash-rec/README{outfilesuffix}[jta-crash-rec]|JTA, Crash Recovery | The `jta-crash-rec` quickstart uses JTA and Byteman to show how to code distributed (XA) transactions in order to preserve ACID properties on server crash. | Advanced | _none_ -| link:jts/README{outfilesuffix}[jts]|JTS, EJB, JMS | The `jts` quickstart shows how to use JTS to perform distributed transactions across multiple containers, fulfilling the properties of an ACID transaction. | Intermediate | link:cmt/README{outfilesuffix}[cmt] -| link:jts-distributed-crash-rec/README{outfilesuffix}[jts-distributed-crash-rec]|JTS, Crash Recovery | The `jts-distributed-crash-rec` quickstart uses JTS and Byteman to demonstrate distributed crash recovery across multiple application servers. | Advanced | link:jts/README{outfilesuffix}[jts] -| 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:kitchensink-angularjs/README{outfilesuffix}[kitchensink-angularjs]|AngularJS, CDI, JPA, EJB, JPA, JAX-RS, BV | The `kitchensink-angularjs` quickstart demonstrates a {javaVersion} application using AngularJS with JAX-RS, CDI, EJB, JPA, and Bean Validation. | Intermediate | _none_ -| link:kitchensink-ear/README{outfilesuffix}[kitchensink-ear]|CDI, JSF, JPA, EJB, JAX-RS, BV, EAR | The `kitchensink-ear` quickstart demonstrates web-enabled database application, using JSF, CDI, EJB, JPA, and Bean Validation, packaged as an EAR. | Intermediate | _none_ -| link:kitchensink-jsp/README{outfilesuffix}[kitchensink-jsp]|JSP, JSTL, CDI, JPA, EJB, JAX-RS, BV | The `kitchensink-jsp` quickstart demonstrates how to use JSP, JSTL, CDI, EJB, JPA, and Bean Validation in {productName}. | Intermediate | _none_ -| link:kitchensink-ml/README{outfilesuffix}[kitchensink-ml]|CDI, JSF, JPA, EJB, JAX-RS, BV, i18n, l10n | The `kitchensink-ml` quickstart demonstrates a localized {javaVersion} compliant application using JSF, CDI, EJB, JPA, and Bean Validation. | Intermediate | _none_ -| link:kitchensink-utjs-angularjs/README{outfilesuffix}[kitchensink-utjs-angularjs]|Undertow.js, Angular.js | Based on kitchensink, but uses a Angular for the front end and Undertow.js for the back end. | Intermediate | _none_ -| link:kitchensink-utjs-mustache/README{outfilesuffix}[kitchensink-utjs-mustache]|Undertow.js, Mustache | Based on kitchensink, but uses Mustache for the front end and Undertow.js for the back end. | Intermediate | _none_ -| link:logging/README{outfilesuffix}[logging]|Logging | The `logging` quickstart demonstrates how to configure different logging levels in {productName}. It also includes an asynchronous logging example. | Intermediate | _none_ -| link:logging-tools/README{outfilesuffix}[logging-tools]|JBoss Logging Tools | The `logging-tools` quickstart shows how to use JBoss Logging Tools to create internationalized loggers, exceptions, and messages and localize them. | Beginner | _none_ -| link:mail/README{outfilesuffix}[mail]|JavaMail, CDI, JSF | The `mail` quickstart demonstrates how to send email using CDI and JSF and the default Mail provider that ships with {productName}. | Beginner | _none_ -| link:managed-executor-service/README{outfilesuffix}[managed-executor-service]|EE Concurrency Utilities, JAX-RS, JAX-RS Client API | The `managed-executor-service` quickstart demonstrates how Java EE applications can submit tasks for asynchronous execution. | Beginner | _none_ -| link:messaging-clustering/README{outfilesuffix}[messaging-clustering]|JMS, MDB | The `messaging-clustering` quickstart does not contain any code and instead uses the `helloworld-mdb` quickstart to demonstrate clustering using ActiveMQ Messaging. | Intermediate | link:helloworld-mdb/README{outfilesuffix}[helloworld-mdb] -| link:messaging-clustering-singleton/README{outfilesuffix}[messaging-clustering-singleton]|JMS, MDB, Clustering | The `messaging-clustering-singleton` quickstart uses a JMS topic and a queue to demonstrate clustering using {productName} messaging with MDB singleton configuration where only one node in the cluster will be active. | Advanced | _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:payment-cdi-event/README{outfilesuffix}[payment-cdi-event]|CDI, JSF | The `payment-cdi-event` quickstart demonstrates how to create credit and debit CDI Events in {productName}, using a JSF front-end client. | Beginner | _none_ -| link:resteasy-jaxrs-client/README{outfilesuffix}[resteasy-jaxrs-client]|JAX-RS, CDI | The `resteasy-jaxrs-client` quickstart demonstrates an external JAX-RS RestEasy client, which interacts with a JAX-RS Web service that uses CDI and JAX-RS. | Intermediate | link:helloworld-rs/README{outfilesuffix}[helloworld-rs] -| link:security-domain-to-domain/README{outfilesuffix}[security-domain-to-domain]|Servlet, EJB, Security | The `security-domain-to-domain` quickstart demonstrates the propagation of an identity across two different deployments using different security domains. | Advanced | _none_ -| link:servlet-async/README{outfilesuffix}[servlet-async]|Asynchronous Servlet, CDI, EJB | The `servlet-async` quickstart demonstrates how to use asynchronous servlets to detach long-running tasks and free up the request processing thread. | Intermediate | _none_ -| link:servlet-filterlistener/README{outfilesuffix}[servlet-filterlistener]|Servlet Filter, Servlet Listener | The `servlet-filterlistener` quickstart demonstrates how to use Servlet filters and listeners in an application. | Intermediate | _none_ -| link:servlet-security/README{outfilesuffix}[servlet-security]|Servlet, Security | The `servlet-security` quickstart demonstrates the use of Java EE declarative security to control access to Servlets and Security in {productName}. | Intermediate | _none_ -| link:shopping-cart/README{outfilesuffix}[shopping-cart]|SFSB EJB | The `shopping-cart` quickstart demonstrates how to deploy and run a simple {javaVersion} shopping cart application that uses a stateful session bean (SFSB). | Intermediate | _none_ -| link:spring-greeter/README{outfilesuffix}[spring-greeter]|Spring MVC, JSP, JPA | The `spring-greeter` quickstart is based on the `greeter` quickstart, but differs in that it uses Spring MVC for Mapping `GET` and `POST` requests. | Beginner | _none_ -| link:spring-kitchensink-basic/README{outfilesuffix}[spring-kitchensink-basic]|JSP, JPA, JSON, Spring, JUnit | The `spring-kitchensink-basic` quickstart is an example of a {javaVersion} application using JSP, JPA and Spring 4.x. | Intermediate | _none_ -| link:spring-kitchensink-springmvctest/README{outfilesuffix}[spring-kitchensink-springmvctest]|JSP, JPA, JSON, Spring, JUnit | The `spring-kitchensink-springmvctest` quickstart demonstrates how to create an MVC application using JSP, JPA and Spring 4.x. | Intermediate | _none_ -| link:spring-resteasy/README{outfilesuffix}[spring-resteasy]|Resteasy, Spring | The `spring-resteasy` quickstart demonstrates how to package and deploy a web application that includes resteasy-spring integration. | Beginner | _none_ -| link:tasks-jsf/README{outfilesuffix}[tasks-jsf]|JSF, JPA | The `tasks-jsf` quickstart demonstrates how to use JPA persistence with JSF as the view layer. | Intermediate | link:tasks/README{outfilesuffix}[tasks] -| link:tasks-rs/README{outfilesuffix}[tasks-rs]|JPA, JAX-RS | The `tasks-rs` quickstart demonstrates how to implement a JAX-RS service that uses JPA persistence. | Intermediate | link:tasks/README{outfilesuffix}[tasks] -| 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 Java EE specification. | Beginner | _none_ -| link:websocket-client/README{outfilesuffix}[websocket-client]|Web Socket, CDI Events, JSON, SSL | Demonstrates use of a Javascript WebSocket client, WebSocket configuration, programmatic binding, and secure WebSocket. | Intermediate | _none_ -| link:websocket-endpoint/README{outfilesuffix}[websocket-endpoint]|CDI, WebSocket, JSON-P | Shows how to use WebSockets with JSON to broadcast information to all open WebSocket sessions in {productName}. | Beginner | _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_ -| link:wicket-ear/README{outfilesuffix}[wicket-ear]|Apache Wicket, JPA | Demonstrates how to use the Wicket Framework 7.x with the JBoss server using the Wicket Java EE integration, packaged as an EAR | Intermediate | _none_ -| link:wicket-war/README{outfilesuffix}[wicket-war]|Apache Wicket, JPA | Demonstrates how to use the Wicket Framework 7.x with the JBoss server using the Wicket Java EE integration packaged as a WAR | Intermediate | _none_ -| link:wsat-simple/README{outfilesuffix}[wsat-simple]|WS-AT, JAX-WS | The `wsat-simple` quickstart demonstrates a WS-AT (WS-AtomicTransaction) enabled JAX-WS Web service, bundled as a WAR, and deployed to {productName}. | Intermediate | _none_ -| link:wsba-coordinator-completion-simple/README{outfilesuffix}[wsba-coordinator-completion-simple]|WS-BA, JAX-WS | The `wsba-coordinator-completion-simple` quickstart deploys a WS-BA (WS Business Activity) enabled JAX-WS Web service WAR (CoordinatorCompletion protocol). | Intermediate | _none_ -| link:wsba-participant-completion-simple/README{outfilesuffix}[wsba-participant-completion-simple]|WS-BA, JAX-WS | The `wsba-participant-completion-simple` quickstart deploys a WS-BA (WS Business Activity) enabled JAX-WS Web service WAR (ParticipantCompletion Protocol). | Intermediate | _none_ -| link:xml-jaxp/README{outfilesuffix}[xml-jaxp]|JAXP, SAX, DOM, Servlet | The `xml-jaxp` quickstart demonstrates how to use Servlet and JSF to upload an XML file to {productName} and validate and parse it using DOM or SAX. | Intermediate | _none_ -|=== -// - -[[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 your server is configured and started 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. +// Suggested Approach to the Quickstarts +include::shared-doc/suggested-approach.adoc[leveloffset=+1] [[system_requirements]] == System Requirements @@ -160,61 +63,23 @@ You can also run the quickstarts in xref:run_the_quickstarts_in_jboss_developer_ [[run_the_quickstarts]] == Run the Quickstarts -The root folder of each individual quickstart contains a `README` file with specific details on how to build and run the example. In most cases you do the following: - -* link:{StartServerDocUrl}[Start the {productName} Server] -* xref:build_and_deploy_the_quickstarts[Build and Deploy the Quickstarts] - -[[build_and_deploy_the_quickstarts]] -=== Build and Deploy the Quickstarts - -See the `README` file in each individual quickstart folder for specific details and information on how to run and access the example. - -[[build_the_quickstart_archive]] -==== Build the Quickstart Archive - -In most cases, you can use the following steps to build the application to test for compile errors or to view the contents of the archive. See the specific quickstart `README` file for complete details. - -. Open a terminal and navigate to the root directory of the quickstart you want to build. -. Use the following command if you only want to build the archive, but not deploy it. -+ -[source,options="nowrap"] ----- -$ mvn clean install ----- - -[[build_and_deploy_the_quickstart]] -==== Build and Deploy the Quickstart - -This section describes the basic steps to build and deploy an application. See the specific instructions in each quickstart `README` file for any variations to this process. +[[build_and_deploy_a_quickstart]] +=== Build and Deploy a Quickstart -. Make sure you start the {productName} server as described in the quickstart `README` file. -. Open a terminal and navigate to the root directory of the quickstart you want to run. -. Use the following command to build and deploy the archive. -+ -[source,options="nowrap"] ----- -$ mvn clean install wildfly:deploy ----- +The root folder of each individual quickstart contains a `README{outfilesuffix}` file with detailed instructions on how to build and run the example. In most cases you do the following: -[[undeploy_an_archive]] -==== Undeploy an Archive +* Start the {productName} server. +* Build the archive. +* Deploy the quickstart. +* Undeploy the quickstart when you are finished testing. -Use the following command to undeploy the quickstart. +[[verify_all_quickstarts_build_with_one_command]] +=== Verify All Quickstarts Build with One Command -[source,options="nowrap"] ----- -$ mvn wildfly:undeploy ----- - -[[verify_the_quickstarts_build_with_one_command]] -=== Verify the Quickstarts Build with One Command - -You can verify the quickstarts build using one command. However, quickstarts that have complex dependencies must be skipped. For example, the `resteasy-jaxrs-client` quickstart is a RESTEasy client that depends on the deployment of the `helloworld-rs` quickstart. As noted above, the root `pom.xml` file defines a `complex-dependencies` profile to exclude these quickstarts from the root build process. +You can also verify that all of the quickstarts build using one command. However, quickstarts that have complex dependencies must be skipped. For example, the `resteasy-jaxrs-client` quickstart is a RESTEasy client that depends on the deployment of the `helloworld-rs` quickstart. The root `pom.xml` file defines a `complex-dependencies` profile to exclude these quickstarts from the root build process. To build all of the quickstarts: -. Do not start the {productName} server. . Open a terminal and navigate to the root directory of the quickstarts. . Use the following command to build the quickstarts that do not have complex dependencies: + @@ -223,10 +88,10 @@ To build all of the quickstarts: $ mvn clean install '-Pdefault,!complex-dependencies' ---- -[[undeploy_the_deployed_quickstarts_with_one_command]] -=== Undeploy the Deployed Quickstarts with One Command +[[undeploy_all_deployed_quickstarts_with_one_command]] +=== Undeploy All Deployed Quickstarts with One Command -To undeploy the quickstarts from the root of the quickstart folder, you must pass the argument `-fae` (fail at end) on the command line. This allows the command to continue past quickstarts that fail due to complex dependencies and quickstarts that only have Arquillian tests and do not deploy archives to the server. +To undeploy all of the the quickstarts from the root of the quickstart folder, you must pass the argument `-fae` (fail at end) on the command line. This allows the command to continue past quickstarts that fail due to complex dependencies or only have Arquillian tests and do not deploy archives to the server. You can undeploy quickstarts using the following procedure: @@ -239,7 +104,7 @@ You can undeploy quickstarts using the following procedure: $ mvn wildfly:undeploy -fae ---- -To undeploy any quickstarts that fail due to complex dependencies, follow the undeploy procedure described in the quickstart's `README` file. +To undeploy any quickstarts that fail due to complex dependencies, follow the undeploy procedure described in the quickstart's `README{outfilesuffix}` file. [[run_the_quickstarts_in_jboss_developer_studio_or_eclipse]] == Run the Quickstarts in {JBDSProductName} or Eclipse @@ -256,3 +121,40 @@ The following components are needed for only a small subset of the quickstarts. * link:{configurePostgresDocUrl}[Configure the PostgreSQL Database for Use with the Quickstarts]: The PostgreSQL database is used for the distributed transaction quickstarts. * link:{configureBytemanQuickstartsDocUrl}[Configure Byteman for Use with the Quickstarts]: This tool is used to demonstrate crash recovery for distributed transaction quickstarts. + +// Available Quickstarts +include::shared-doc/available-quickstarts.adoc[leveloffset=+1] + +// End ifndef::EAPCDRelease[] +endif::[] + +//***************************************************************************** +// Begin CD release Product instructions +//***************************************************************************** +ifdef::EAPCDRelease[] + +[[introduction]] +== Introduction + +These quickstarts run on {productNameFull} {productVersion}. Each quickstart folder contains a `README{outfilesuffix}` file that describes the quickstart features and provides instructions about how to build and run it. + +We recommend using the *{quickstartDownloadName}* ZIP file, which can be downloaded from {quickstartDownloadUrl}. This version of the quickstarts uses the correct dependencies and ensures that you test and compile against the correct runtime environment. + +Make sure you read this entire document before you attempt to work with the quickstarts. It contains the following information: + +* xref:suggested_approach_to_the_quickstarts[Suggested Approach to the Quickstarts]: A suggested approach on how to work with the quickstarts. +* xref:getting_started_with_openshift_overview[Getting Started with {xpaasproduct-shortname}]: Information about how to build and deploy applications to {xpaasproduct-shortname}. +* https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/CONTRIBUTING.adoc#jboss_developer_contributing_guide[Contributing Guide]: This document contains information targeted for developers who want to contribute to {productName} developer projects. +* xref:available_quickstarts[Available Quickstarts]: List of the available quickstarts and details about each one. + +// Suggested Approach to the Quickstarts +include::shared-doc/suggested-approach.adoc[leveloffset=+1] + +// Getting Started with OpenShift +include::shared-doc/cd-openshift-getting-started-overview.adoc[leveloffset=+1] + +// Available Quickstarts +include::shared-doc/available-quickstarts.adoc[leveloffset=+1] + +// End ifdef::EAPCDRelease[] +endif::[] diff --git a/shared-doc/attributes.adoc b/shared-doc/attributes.adoc index 8d1226d836..88c45134f0 100644 --- a/shared-doc/attributes.adoc +++ b/shared-doc/attributes.adoc @@ -2,13 +2,13 @@ // Enable the following flag to build README.html files for Product (CD or JBoss EAP) builds. // Comment it out to build README.html files for WildFly builds. //*********************************************************************************** -//:ProductRelease: +// :ProductRelease: //*********************************************************************************** // Enable the following flag to build README.html files for CD product builds. // Comment it out to build README.html files for JBoss EAP product builds. //*********************************************************************************** -//:EAPCDRelease: +// :EAPCDRelease: // This is a universal name for all releases :ProductShortName: JBoss EAP @@ -21,14 +21,16 @@ ifdef::ProductRelease[] ifdef::EAPCDRelease[] // EAP CD release -:productName: JBoss EAP for OpenShift -:productNameFull: Red Hat JBoss Enterprise Application Platform for OpenShift +:productName: JBoss EAP Continuous Delivery +:productNameFull: JBoss Enterprise Application Platform continuous delivery :productVersion: 15 -:githubRepoUrl: https://github.com/jboss-developer/jboss-eap-quickstarts/ +:githubRepoUrl: https://github.com/jboss-developer/jboss-eap-quickstarts/openshift :jbossHomeName: EAP_HOME :DocInfoProductNameURL: jboss_enterprise_application_platform_continuous_delivery :DocInfoProductName: JBoss Enterprise Application Platform Continuous Delivery -:DocInfoProductNumber: 15 +:DocInfoProductNumber: {productVersion} +:quickstartDownloadName: JBoss EAP CD {productVersion} Quickstarts +:quickstartDownloadUrl: https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?product=eap-cd&downloadType=distributions endif::[] ifndef::EAPCDRelease[] @@ -36,12 +38,14 @@ ifndef::EAPCDRelease[] :productName: JBoss EAP :productNameFull: JBoss Enterprise Application Platform Server :productVersion: 7.2 -:githubRepoUrl: https://github.com/jboss-developer/jboss-eap-quickstarts/ +:githubRepoUrl: https://github.com/jboss-developer/jboss-eap-quickstarts/{productVersion} :jbossHomeName: EAP_HOME :DocInfoProductName: red_hat_jboss_enterprise_application_platform :DocInfoProductNameURL: red_hat_jboss_enterprise_application_platform -:DocInfoProductNumber: 7.2 +:DocInfoProductNumber: {productVersion} :DocInfoPreviousProductName: jboss-enterprise-application-platform +:quickstartDownloadName: Red Hat JBoss Enterprise Application Platform {productVersion} Quickstarts +:quickstartDownloadUrl: https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?product=appplatform&downloadType=distributions endif::[] endif::[] diff --git a/shared-doc/available-quickstarts.adoc b/shared-doc/available-quickstarts.adoc new file mode 100644 index 0000000000..eae08f2bd2 --- /dev/null +++ b/shared-doc/available-quickstarts.adoc @@ -0,0 +1,106 @@ +[[available_quickstarts]] += Available Quickstarts + +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 {productName}. 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:app-client/README{outfilesuffix}[app-client]|EJB, EAR, AppClient | The `app-client` quickstart demonstrates how to code and package a client app and use the {productName} client container to start the client `Main` program. | Intermediate | _none_ +| link:batch-processing/README{outfilesuffix}[batch-processing]|CDI, Batch 1.0, JSF | The `batch-processing` quickstart shows how to use chunk oriented batch jobs to import a file to a database. | Intermediate | _none_ +| link:bean-validation/README{outfilesuffix}[bean-validation]|CDI, JPA, BV | The `bean-validation` quickstart provides Arquillian tests to demonstrate how to use CDI, JPA, and Bean Validation. | Beginner | _none_ +| link:bean-validation-custom-constraint/README{outfilesuffix}[bean-validation-custom-constraint]|CDI, JPA, BV | The `bean-validation-custom-constraint` quickstart demonstrates how to use the Bean Validation API to define custom constraints and validators. | Beginner | _none_ +| link:bmt/README{outfilesuffix}[bmt]|EJB, BMT | The `bmt` quickstart demonstrates Bean-Managed Transactions (BMT), showing how to manually manage transaction demarcation while accessing JPA entities. | Intermediate | _none_ +| 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:contacts-jquerymobile/README{outfilesuffix}[contacts-jquerymobile]|jQuery Mobile, jQuery, JavaScript, HTML5, REST | The `contacts-jquerymobile` quickstart demonstrates a {javaVersion} mobile database application using HTML5, jQuery Mobile, JAX-RS, JPA, and REST. | Beginner | _none_ +| link:deltaspike-authorization/README{outfilesuffix}[deltaspike-authorization]|JSF, CDI, Deltaspike | Demonstrate the creation of a custom authorization example using @SecurityBindingType from DeltaSpike | Beginner | _none_ +| link:deltaspike-beanbuilder/README{outfilesuffix}[deltaspike-beanbuilder]|CDI, DeltaSpike | Shows how to create new beans using DeltaSpike utilities. | Advanced | _none_ +| link:deltaspike-projectstage/README{outfilesuffix}[deltaspike-projectstage]|JSF, CDI, Deltaspike | Demonstrate usage of DeltaSpike project stage and shows usage of a conditional @Exclude | Beginner | _none_ +| link:ejb-asynchronous/README{outfilesuffix}[ejb-asynchronous]|Asynchronous EJB | The `ejb-asynchronous` quickstart demonstrates the behavior of asynchronous EJB invocations by a deployed EJB and a remote client and how to handle errors. | Advanced | _none_ +| link:ejb-in-ear/README{outfilesuffix}[ejb-in-ear]|EJB, EAR | The `ejb-in-ear` quickstart demonstrates how to deploy an EAR archive that contains a *JSF* WAR and an EJB JAR. | Intermediate | _none_ +| link:ejb-in-war/README{outfilesuffix}[ejb-in-war]|EJB, JSF, WAR | The `ejb-in-war` quickstart demonstrates how to package an EJB bean in a WAR archive and deploy it to {productName}. Arquillian tests are also provided. | Intermediate | _none_ +| link:ejb-multi-server/README{outfilesuffix}[ejb-multi-server]|EJB, EAR | The `ejb-multi-server` quickstart shows how to communicate between multiple applications deployed to different servers using an EJB to log the invocation. | Advanced | _none_ +| link:ejb-remote/README{outfilesuffix}[ejb-remote]|EJB, JNDI | The `ejb-remote` quickstart uses EJB and JNDI to demonstrate how to access an EJB, deployed to {productName}, from a remote Java client application. | Intermediate | _none_ +| link:ejb-security/README{outfilesuffix}[ejb-security]|EJB, Security | The `ejb-security` quickstart demonstrates the use of Java EE declarative security to control access to EJBs in {productName}. | Intermediate | _none_ +| link:ejb-security-context-propagation/README{outfilesuffix}[ejb-security-context-propagation]|EJB, Security | The `ejb-security-context-propagation` quickstart demonstrates how the security context can be propagated to a remote EJB using a remote outbound connection configuration | Advanced | _none_ +| link:ejb-security-jaas/README{outfilesuffix}[ejb-security-jaas]|EJB, Security | The `ejb-security-jaas` quickstart demonstrates how legacy `JAAS` security domains can be used in conjunction with `Elytron` | Intermediate | _none_ +| link:ejb-security-programmatic-auth/README{outfilesuffix}[ejb-security-programmatic-auth]|EJB, Security | The `ejb-security-programmatic-auth` quickstart demonstrates how to programmatically setup different identities when invoking a remote secured EJB. | Intermediate | _none_ +| link:ejb-throws-exception/README{outfilesuffix}[ejb-throws-exception]|EJB, EAR | The `ejb-throws-exception` quickstart demonstrates how to throw and handle exceptions across JARs in an EAR. | Intermediate | _none_ +| link:ejb-timer/README{outfilesuffix}[ejb-timer]|EJB Timer | The `ejb-timer` quickstart demonstrates how to use the EJB timer service `@Schedule` and `@Timeout` annotations with {productName}. | Beginner | _none_ +| link:greeter/README{outfilesuffix}[greeter]|CDI, JSF, JPA, EJB, JTA | The `greeter` quickstart demonstrates the use of CDI, JPA, JTA, EJB and JSF in {productName}. | Beginner | _none_ +| link:ha-singleton-deployment/README{outfilesuffix}[ha-singleton-deployment]|EJB, Singleton Deployments, Clustering | The `ha-singleton-deployment` quickstart demonstrates the recommended way to deploy any service packaged in an application archive as a cluster-wide singleton. | Advanced | _none_ +| link:ha-singleton-service/README{outfilesuffix}[ha-singleton-service]|MSC, Singleton Service, Clustering | The `ha-singleton-service` quickstart demonstrates how to deploy a cluster-wide singleton MSC service. | Advanced | _none_ +| link:helloworld/README{outfilesuffix}[helloworld]|CDI, Servlet | The `helloworld` quickstart demonstrates the use of CDI and Servlet 3 and is a good starting point to verify {productName} is configured correctly. | Beginner | _none_ +| link:helloworld-classfiletransformer/README{outfilesuffix}[helloworld-classfiletransformer]|ClassLoading | This is a WAR based application showing you how Wildfly let you apply a ClassTransformer to the classes in your enterprise archive. | Advanced | _none_ +| link:helloworld-html5/README{outfilesuffix}[helloworld-html5]|CDI, JAX-RS, HTML5 | The `helloworld-html5` quickstart demonstrates the use of CDI 1.2 and JAX-RS 2.0 using the HTML5 architecture and RESTful services on the backend. | Beginner | _none_ +| link:helloworld-jms/README{outfilesuffix}[helloworld-jms]|JMS | The `helloworld-jms` quickstart demonstrates the use of external JMS clients with {productName}. | Intermediate | _none_ +| link:helloworld-mbean/README{outfilesuffix}[helloworld-mbean]|CDI, JMX, MBean | The `helloworld-mbean` quickstart demonstrates the use of CDI and MBean in {productName} and includes JConsole instructions and Arquillian tests. | Intermediate | _none_ +| link:helloworld-mdb/README{outfilesuffix}[helloworld-mdb]|JMS, EJB, MDB | The `helloworld-mdb` quickstart uses JMS and EJB Message-Driven Bean (MDB) to create and deploy JMS topic and queue resources in {productName}. | Intermediate | _none_ +| link:helloworld-mdb-propertysubstitution/README{outfilesuffix}[helloworld-mdb-propertysubstitution]|JMS, EJB, MDB | The `helloworld-mdb-propertysubstitution` quickstart demonstrates the use of JMS and EJB MDB, enabling property substitution with annotations. | Intermediate | _none_ +| link:helloworld-mutual-ssl/README{outfilesuffix}[helloworld-mutual-ssl]|Mutual SSL, Undertow | The `helloworld-mutual-ssl` quickstart is a basic example that demonstrates mutual SSL configuration in {productName} | Intermediate | _none_ +| link:helloworld-mutual-ssl-secured/README{outfilesuffix}[helloworld-mutual-ssl-secured]|Mutual SSL, Security, Undertow | The `helloworld-mutual-ssl-secured` quickstart demonstrates securing a Web application using client mutual SSL authentication and role-based access control | Intermediate | _none_ +| link:helloworld-rf/README{outfilesuffix}[helloworld-rf]|CDI, JSF, RichFaces | Similar to the `helloworld` quickstart, but with a JSF front end. | Beginner | _none_ +| link:helloworld-rs/README{outfilesuffix}[helloworld-rs]|CDI, JAX-RS | The `helloworld-rs` quickstart demonstrates a simple Hello World application, bundled and deployed as a WAR, that uses JAX-RS to say Hello. | Intermediate | _none_ +| link:helloworld-singleton/README{outfilesuffix}[helloworld-singleton]|EJB, Singleton | The `helloworld-singleton` quickstart demonstrates an EJB Singleton Bean that is instantiated once and maintains state for the life of the session. | Beginner | _none_ +| link:helloworld-ssl/README{outfilesuffix}[helloworld-ssl]|SSL, Undertow | The `helloworld-ssl` quickstart is a basic example that demonstrates server side SSL configuration in {productName}. | 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:hibernate/README{outfilesuffix}[hibernate]|Hibernate | The `hibernate` quickstart demonstrates how to use Hibernate ORM 5 API over JPA, using Hibernate-Core and Hibernate Bean Validation, and EJB. | Intermediate | _none_ +| link:hibernate4/README{outfilesuffix}[hibernate4]|Hibernate 4 | This quickstart performs the same functions as the _hibernate_ quickstart, but uses Hibernate 4 for database access. Compare this quickstart to the _hibernate_ quickstart to see the changes needed to run with Hibernate 5. | Intermediate | _none_ +| link:http-custom-mechanism/README{outfilesuffix}[http-custom-mechanism]|EJB, Security | The `http-custom-mechanism` quickstart demonstrates how to implement a custom HTTP authentication mechanism that can be registered with Elytron. | Intermediate | _none_ +| link:inter-app/README{outfilesuffix}[inter-app]|EJB, CDI, JSF | The `inter-app` quickstart shows you how to use a shared API JAR and an EJB to provide inter-application communication between two WAR deployments. | Advanced | _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:jaxrs-jwt/README{outfilesuffix}[jaxrs-jwt]|JAX-RS, Security | The `jaxrs-jwt` quickstart demonstrates a JAX-RS secured application using JSON Web Tokens (JWT) with Elytron. | Intermediate | _none_ +| link:jaxws-addressing/README{outfilesuffix}[jaxws-addressing]|JAX-WS | The `jaxws-addressing` quickstart is a working example of the web service using WS-Addressing. | Beginner | _none_ +| link:jaxws-ejb/README{outfilesuffix}[jaxws-ejb]|JAX-WS | The `jaxws-ejb` quickstart is a working example of the web service endpoint created from an EJB. | Beginner | _none_ +| link:jaxws-pojo/README{outfilesuffix}[jaxws-pojo]|JAX-WS | The `jaxws-pojo` quickstart is a working example of the web service endpoint created from a POJO. | Beginner | _none_ +| link:jaxws-retail/README{outfilesuffix}[jaxws-retail]|JAX-WS | The `jaxws-retail` quickstart is a working example of a simple web service endpoint. | Beginner | _none_ +| link:jsonp/README{outfilesuffix}[jsonp]|CDI, JSF, JSON-P | The `jsonp` quickstart demonstrates how to use the JSON-P API to produce object-based structures and then parse and consume them as stream-based JSON strings. | Beginner | _none_ +| link:jta-crash-rec/README{outfilesuffix}[jta-crash-rec]|JTA, Crash Recovery | The `jta-crash-rec` quickstart uses JTA and Byteman to show how to code distributed (XA) transactions in order to preserve ACID properties on server crash. | Advanced | _none_ +| link:jts/README{outfilesuffix}[jts]|JTS, EJB, JMS | The `jts` quickstart shows how to use JTS to perform distributed transactions across multiple containers, fulfilling the properties of an ACID transaction. | Intermediate | link:cmt/README{outfilesuffix}[cmt] +| link:jts-distributed-crash-rec/README{outfilesuffix}[jts-distributed-crash-rec]|JTS, Crash Recovery | The `jts-distributed-crash-rec` quickstart uses JTS and Byteman to demonstrate distributed crash recovery across multiple application servers. | Advanced | link:jts/README{outfilesuffix}[jts] +| 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:kitchensink-angularjs/README{outfilesuffix}[kitchensink-angularjs]|AngularJS, CDI, JPA, EJB, JPA, JAX-RS, BV | The `kitchensink-angularjs` quickstart demonstrates a {javaVersion} application using AngularJS with JAX-RS, CDI, EJB, JPA, and Bean Validation. | Intermediate | _none_ +| link:kitchensink-ear/README{outfilesuffix}[kitchensink-ear]|CDI, JSF, JPA, EJB, JAX-RS, BV, EAR | The `kitchensink-ear` quickstart demonstrates web-enabled database application, using JSF, CDI, EJB, JPA, and Bean Validation, packaged as an EAR. | Intermediate | _none_ +| link:kitchensink-jsp/README{outfilesuffix}[kitchensink-jsp]|JSP, JSTL, CDI, JPA, EJB, JAX-RS, BV | The `kitchensink-jsp` quickstart demonstrates how to use JSP, JSTL, CDI, EJB, JPA, and Bean Validation in {productName}. | Intermediate | _none_ +| link:kitchensink-ml/README{outfilesuffix}[kitchensink-ml]|CDI, JSF, JPA, EJB, JAX-RS, BV, i18n, l10n | The `kitchensink-ml` quickstart demonstrates a localized {javaVersion} compliant application using JSF, CDI, EJB, JPA, and Bean Validation. | Intermediate | _none_ +| link:kitchensink-utjs-angularjs/README{outfilesuffix}[kitchensink-utjs-angularjs]|Undertow.js, Angular.js | Based on kitchensink, but uses a Angular for the front end and Undertow.js for the back end. | Intermediate | _none_ +| link:kitchensink-utjs-mustache/README{outfilesuffix}[kitchensink-utjs-mustache]|Undertow.js, Mustache | Based on kitchensink, but uses Mustache for the front end and Undertow.js for the back end. | Intermediate | _none_ +| link:logging/README{outfilesuffix}[logging]|Logging | The `logging` quickstart demonstrates how to configure different logging levels in {productName}. It also includes an asynchronous logging example. | Intermediate | _none_ +| link:logging-tools/README{outfilesuffix}[logging-tools]|JBoss Logging Tools | The `logging-tools` quickstart shows how to use JBoss Logging Tools to create internationalized loggers, exceptions, and messages and localize them. | Beginner | _none_ +| link:mail/README{outfilesuffix}[mail]|JavaMail, CDI, JSF | The `mail` quickstart demonstrates how to send email using CDI and JSF and the default Mail provider that ships with {productName}. | Beginner | _none_ +| link:managed-executor-service/README{outfilesuffix}[managed-executor-service]|EE Concurrency Utilities, JAX-RS, JAX-RS Client API | The `managed-executor-service` quickstart demonstrates how Java EE applications can submit tasks for asynchronous execution. | Beginner | _none_ +| link:messaging-clustering/README{outfilesuffix}[messaging-clustering]|JMS, MDB | The `messaging-clustering` quickstart does not contain any code and instead uses the `helloworld-mdb` quickstart to demonstrate clustering using ActiveMQ Messaging. | Intermediate | link:helloworld-mdb/README{outfilesuffix}[helloworld-mdb] +| link:messaging-clustering-singleton/README{outfilesuffix}[messaging-clustering-singleton]|JMS, MDB, Clustering | The `messaging-clustering-singleton` quickstart uses a JMS topic and a queue to demonstrate clustering using {productName} messaging with MDB singleton configuration where only one node in the cluster will be active. | Advanced | _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:payment-cdi-event/README{outfilesuffix}[payment-cdi-event]|CDI, JSF | The `payment-cdi-event` quickstart demonstrates how to create credit and debit CDI Events in {productName}, using a JSF front-end client. | Beginner | _none_ +| link:resteasy-jaxrs-client/README{outfilesuffix}[resteasy-jaxrs-client]|JAX-RS, CDI | The `resteasy-jaxrs-client` quickstart demonstrates an external JAX-RS RestEasy client, which interacts with a JAX-RS Web service that uses CDI and JAX-RS. | Intermediate | link:helloworld-rs/README{outfilesuffix}[helloworld-rs] +| link:security-domain-to-domain/README{outfilesuffix}[security-domain-to-domain]|Servlet, EJB, Security | The `security-domain-to-domain` quickstart demonstrates the propagation of an identity across two different deployments using different security domains. | Advanced | _none_ +| link:servlet-async/README{outfilesuffix}[servlet-async]|Asynchronous Servlet, CDI, EJB | The `servlet-async` quickstart demonstrates how to use asynchronous servlets to detach long-running tasks and free up the request processing thread. | Intermediate | _none_ +| link:servlet-filterlistener/README{outfilesuffix}[servlet-filterlistener]|Servlet Filter, Servlet Listener | The `servlet-filterlistener` quickstart demonstrates how to use Servlet filters and listeners in an application. | Intermediate | _none_ +| link:servlet-security/README{outfilesuffix}[servlet-security]|Servlet, Security | The `servlet-security` quickstart demonstrates the use of Java EE declarative security to control access to Servlets and Security in {productName}. | Intermediate | _none_ +| link:shopping-cart/README{outfilesuffix}[shopping-cart]|SFSB EJB | The `shopping-cart` quickstart demonstrates how to deploy and run a simple {javaVersion} shopping cart application that uses a stateful session bean (SFSB). | Intermediate | _none_ +| link:spring-greeter/README{outfilesuffix}[spring-greeter]|Spring MVC, JSP, JPA | The `spring-greeter` quickstart is based on the `greeter` quickstart, but differs in that it uses Spring MVC for Mapping `GET` and `POST` requests. | Beginner | _none_ +| link:spring-kitchensink-basic/README{outfilesuffix}[spring-kitchensink-basic]|JSP, JPA, JSON, Spring, JUnit | The `spring-kitchensink-basic` quickstart is an example of a {javaVersion} application using JSP, JPA and Spring 4.x. | Intermediate | _none_ +| link:spring-kitchensink-springmvctest/README{outfilesuffix}[spring-kitchensink-springmvctest]|JSP, JPA, JSON, Spring, JUnit | The `spring-kitchensink-springmvctest` quickstart demonstrates how to create an MVC application using JSP, JPA and Spring 4.x. | Intermediate | _none_ +| link:spring-resteasy/README{outfilesuffix}[spring-resteasy]|Resteasy, Spring | The `spring-resteasy` quickstart demonstrates how to package and deploy a web application that includes resteasy-spring integration. | Beginner | _none_ +| link:tasks-jsf/README{outfilesuffix}[tasks-jsf]|JSF, JPA | The `tasks-jsf` quickstart demonstrates how to use JPA persistence with JSF as the view layer. | Intermediate | link:tasks/README{outfilesuffix}[tasks] +| link:tasks-rs/README{outfilesuffix}[tasks-rs]|JPA, JAX-RS | The `tasks-rs` quickstart demonstrates how to implement a JAX-RS service that uses JPA persistence. | Intermediate | link:tasks/README{outfilesuffix}[tasks] +| 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 Java EE specification. | Beginner | _none_ +| link:websocket-client/README{outfilesuffix}[websocket-client]|Web Socket, CDI Events, JSON, SSL | Demonstrates use of a Javascript WebSocket client, WebSocket configuration, programmatic binding, and secure WebSocket. | Intermediate | _none_ +| link:websocket-endpoint/README{outfilesuffix}[websocket-endpoint]|CDI, WebSocket, JSON-P | Shows how to use WebSockets with JSON to broadcast information to all open WebSocket sessions in {productName}. | Beginner | _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_ +| link:wicket-ear/README{outfilesuffix}[wicket-ear]|Apache Wicket, JPA | Demonstrates how to use the Wicket Framework 7.x with the JBoss server using the Wicket Java EE integration, packaged as an EAR | Intermediate | _none_ +| link:wicket-war/README{outfilesuffix}[wicket-war]|Apache Wicket, JPA | Demonstrates how to use the Wicket Framework 7.x with the JBoss server using the Wicket Java EE integration packaged as a WAR | Intermediate | _none_ +| link:wsat-simple/README{outfilesuffix}[wsat-simple]|WS-AT, JAX-WS | The `wsat-simple` quickstart demonstrates a WS-AT (WS-AtomicTransaction) enabled JAX-WS Web service, bundled as a WAR, and deployed to {productName}. | Intermediate | _none_ +| link:wsba-coordinator-completion-simple/README{outfilesuffix}[wsba-coordinator-completion-simple]|WS-BA, JAX-WS | The `wsba-coordinator-completion-simple` quickstart deploys a WS-BA (WS Business Activity) enabled JAX-WS Web service WAR (CoordinatorCompletion protocol). | Intermediate | _none_ +| link:wsba-participant-completion-simple/README{outfilesuffix}[wsba-participant-completion-simple]|WS-BA, JAX-WS | The `wsba-participant-completion-simple` quickstart deploys a WS-BA (WS Business Activity) enabled JAX-WS Web service WAR (ParticipantCompletion Protocol). | Intermediate | _none_ +| link:xml-jaxp/README{outfilesuffix}[xml-jaxp]|JAXP, SAX, DOM, Servlet | The `xml-jaxp` quickstart demonstrates how to use Servlet and JSF to upload an XML file to {productName} and validate and parse it using DOM or SAX. | Intermediate | _none_ +|=== +// + diff --git a/shared-doc/cd-openshift-getting-started-overview.adoc b/shared-doc/cd-openshift-getting-started-overview.adoc new file mode 100644 index 0000000000..03e2186b96 --- /dev/null +++ b/shared-doc/cd-openshift-getting-started-overview.adoc @@ -0,0 +1,8 @@ +[[getting_started_with_openshift_overview]] += Getting Started with {xpaasproduct-shortname} + +Each quickstart `README{outfilesuffix}` file contains the basic instructions to build and deploy the quickstart to {xpaasproduct-shortname} or {xpaasproductOpenShiftOnline-shortname}. + +See link:{LinkOpenShiftGuide}[_{EapForOpenshiftBookName}_] for more detailed information about building and running applications on {xpaasproduct-shortname}. + +See link:{LinkOpenShiftOnlineGuide}[_{EapForOpenshiftOnlineBookName}_] for more detailed information about building and running applications on {xpaasproductOpenShiftOnline-shortname}. diff --git a/shared-doc/cd-openshift-getting-started.adoc b/shared-doc/cd-openshift-getting-started.adoc index 5ee6f079d8..0e86501462 100644 --- a/shared-doc/cd-openshift-getting-started.adoc +++ b/shared-doc/cd-openshift-getting-started.adoc @@ -1,5 +1,5 @@ [[getting_started_with_openshift]] -= Getting Started with OpenShift += Getting Started with {xpaasproduct-shortname} This document contains the basic instructions to build and deploy this quickstart to {xpaasproduct-shortname} or {xpaasproductOpenShiftOnline-shortname}. diff --git a/shared-doc/suggested-approach.adoc b/shared-doc/suggested-approach.adoc new file mode 100644 index 0000000000..a7930fe155 --- /dev/null +++ b/shared-doc/suggested-approach.adoc @@ -0,0 +1,8 @@ +[[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 link:helloworld/README{outfilesuffix}[`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.