diff --git a/CONTRIBUTING.html b/CONTRIBUTING.html new file mode 100644 index 000000000..ad8b01107 --- /dev/null +++ b/CONTRIBUTING.html @@ -0,0 +1,553 @@ +
To demonstrate Java EE 6 technologies
To provide developers with working examples and instructions that are easy to follow .
To allow examples to be copied by developers and used as the basis for their own projects.
To contribute to the quickstarts, fork the quickstart repository to your own Git, clone your fork, commit your work on topic branches, and make pull requests.
+ +If you don’t have the Git client (git
), get it from: http://git-scm.com/
Here are the steps in detail:
+ +Fork the project. This creates a the project in your own Git with the default remote name ‘origin’.
Clone your fork. This creates and populates a directory in your local file system.
+git clone https://github.com/<your-username>/jboss-wfk-quickstarts.git
+
Change to the jboss-wfk-quickstarts
directory.
Add the remote upstream
repository so you can fetch any changes to the original forked repository.
git remote add upstream https://github.com/jboss-developer/jboss-wfk-quickstarts.git
+
Get the latest files from the upstream
repository.
git fetch upstream
+
Create a new topic branch to contain your new quickstart, features, changes, or fixes using the git checkout -b <topic-branch-name> upstream/master
command. For example:
git checkout -b helloworld-fix upstream/master
+
Contribute new code or make changes to existing files. Make sure that you follow the General Guidelines below.
To verify if your code followed the General Guidelines you can run QS Tools on your project.
+ +To run QS Tools, go to your quickstart project root and execute:
+ +mvn -U org.jboss.maven.plugins:maven-qstools-plugin:check
+This will generate a report on QUICKSTART_HOME/target/site/qschecker.html
. Review the report to determine if your quickstart project violates any item in the General Guidelines.
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 may want to stage:
+git add src/
+git add pom.xml
+git add README.md
+
Note: It is probably best not to add the entire quickstart root folder because you may unintentionally add classes or other target files that should not be in source control.
If you only modified a few files, use git add <filename>
for every file you create or change. For example:
git add README.md
+
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:
+git status
+
Commit your changes to your local topic branch.
+git commit -m 'Description of change...'
+
Update your branch with any changes made upstream since you started.
+ +Fetch the latest changes from upstream
+ +git fetch upstream
Apply those changes to your branch
+ +git rebase upstream/master
If anyone has commited changes to files that you have also changed, you may see conflicts.
+Resolve the conflicted files, add them using git add
, and continue the rebase:
git add
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 will create a branch on your Git fork repository with the same name as your local topic branch name.
+git push origin HEAD
+
Note: The above command assumes your remote repository is named ‘origin’. You can verify your forked remote repository name using the command git remote -v
.
Browse to the
The sample project should be formatted using the JBoss AS profiles found at http://github.com/jboss/ide-config/tree/master/
+ +The package must be org.jboss.quickstarts.<product-type>
, for example: org.jboss.quickstarts.eap, org.jboss.quickstarts.wfk, org.jboss.quickstarts.jdg, org.jboss.quickstarts.brms, org.jboss.quickstarts.fuse, etc.
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 <name>
in the quickstart pom.xml
file should follow the template: JBoss <target-product> Quickstart: <quickstart-name> < - optional-subfolder-name>
where target-product
is the Target Product
metadata specified in the README.html file, quickstart-name
is the quickstart folder name, and optional-subfolder-name
is the name of any nested subfolder containing a pom.xml
file. The following are a few examples of quickstart pom files and the correct name tags:
kitchensink-html5-mobile/pom.xml ==> `JBoss WFK Quickstart: JBoss WFK Quickstart: kitchensink-html5-mobile`
+helloworld-html5/pom.xml ==> `JBoss WFK Quickstart: helloworld-html5`
+
The <artifactId>
in the quickstart pom.xml
file should follow the template: jboss-<target-product>-<quickstart-name>
. For example, the <artifactId>
for the kitchensink-html5-mobile
quickstart in the WFK project is jboss-wfk-kitchensink-html5-mobile
. The <artifactId>
for errors
quickstart in the Fuse project is jboss-fuse-errors
.
The JBoss developer Maven repository, which contains newly staged artifacts, is located at jboss-developer.github.io. See Configure Maven below for instructions how to configure your settings to use this repository.
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 numberguess. A good starting point would be to copy the numberguess
project.
The sample project should be importable into JBoss Developer Studio/JBoss Tools and be deployable from there.
Maven POMs 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:
+ +The sample project must contain a README.html
file using the template/README.html
file as a guideline
Don’t forget to update the pom.xml
in the quickstart root directory. Add your quickstart to the ‘modules’ section.
The project must target Java 6
+ +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.
If possible, create a cheat sheet for the quickstart to guide users and developers through the example. See the Quickstart Cheat Sheet Contributing Guide for more information.
There are multiple quickstarts based on the kitchensink example. Each showcases different technologies and techniques including pure EE6, 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 3-4 lines directly under the EAP banner in the middle section to describe what makes this variant different.
+ +Projects can have their logo in the left side of the banner.
+ +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.
The quickstart README.html files are converted to HTML using markdown. We recommend using redcarpet, as that is what github uses, but you can use any markdown tool really.
+ +There are two scripts, dist/github-flavored-markdown.rb
, that will convert an individual file, and dist/release-utils.sh -m
, that will convert all the files.
To setup the environment you need to follow these steps.
+ +Install Ruby 1.9.X
+ +For RHEL you can use this spec
+ +In general, you’re better off not relying on your OSs ruby install, they are often quite broken.
Install Ruby GEMs
+gem install nokogiri pygments.rb redcarpet fileutils
+
Install Python Eggs
+ +You’ll need python eggs installed, which often isn’t available on OS installs of python. Try to read and use setuptools installation-instructions
Install pygments
+ sudo easy_install pygments
+
If you are working with quickstarts currently under development in the master branch, you need access to artifacts currently under development. The JBoss developer Maven repository, which contains newly staged artifacts, is located at jboss-developer.github.io.
+ +To access these artifacts, do one of the following:
+ +You can simply copy the contributor-settings.xml
located in the root of the quickstart directory to your ${user.home}/.m2/
and rename it to settings.xml
.
Or, assuming you followed the Configure Maven instructions in the root README file, you can manually edit the settings and copy the following profile to your settings.xml
file.
<profile>
+ <id>jboss-developer-repository</id>
+ <repositories>
+ <repository>
+ <id>jboss-developer-repository</id>
+ <url>http://jboss-developer.github.io/temp-maven-repo/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>jboss-developer-plugin-repository</id>
+ <url>http://jboss-developer.github.io/temp-maven-repo/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+</profile>
+
Then add <activeProfile>jboss-developer-repository</activeProfile>
to the <activeProfiles>
section of the file.
Note: Regardless of the method you choose to configure your Maven settings, you must also delete the existing ${user.home}/.m2/repository/
.
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.
+ + /**
+ * JBoss, Home of Professional Open Source
+ * Copyright 2013, 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.
+ */
+
<!--
+ JBoss, Home of Professional Open Source
+ Copyright 2013, 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.
+ -->
+
# JBoss, Home of Professional Open Source
+ # Copyright 2013, 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.
+
--
+ -- JBoss, Home of Professional Open Source
+ -- Copyright 2013, 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.
+ --
+
<%--
+ JBoss, Home of Professional Open Source
+ Copyright 2013, 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.
+ --%>
+
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.
+ +Note: Be sure your project folder is located outside of the Eclipse workspace before you begin this process.
+ +File
–> Import
–> Maven
–> Existing Maven Projects
, then click Next
.OK
.Finish
.File
–> New
–> Other
–> User Assistance
–> Cheat Sheet
, then click Next
.Simple Cheat Sheet
.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.
+ +Title
in the content section on the left. Title
field and modify it to something useful, for example: helloworld
intro
field and add introduction text to the Body
, for example: 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:
<command
+required="true"
+returns="currentProject"
+serialization="org.jboss.tools.project.examples.cheatsheet.getProjectForCheatsheet"/>
+
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.
Test your cheat sheet by opening it in JDBS.
+ +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.
If your cheat sheet is for the quickstart based on an archetype, it will automatically generate the cheat sheet for the archetype. However, you must add an <include>.cheatsheet.*</include>
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.
.cheatsheet.xml
. Eclipse will not let you name the file with a leading ‘.’, so you will need to rename it after it is created.${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.<action>
tag if it can be avoided. It is more fragile than the <command>
tag, which uses parameters names instead of indexes.<?xml version="1.0" encoding="UTF-8"?>
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 JBoss Developer Studio.You can find additional help at the following locations:
+ +In the source repository that currently contains the quickstarts, for example jboss-eap-quickstarts
, create a branch for each quickstart you want to move. For example:
git fetch upstream
+git checkout -b <source_branch_name> upstream/master
+
To extract only one quickstart, in each source branch, run:
+git filter-branch --subdirectory-filter <quickstart_name> -- --all
+
The previous step places the quickstart at the root of the tree. You need to create a directory using the quickstart name and move the files under it. To accomplish that task, in each source branch, run:
+git filter-branch --tree-filter '(ls -A; mkdir <quickstart_name>; echo <quickstart_name>) | xargs mv'
+
Push each branch up to your own GitHub repository to make merging into the destination repository easy.
+git push <your_remote_source_github> HEAD
+
Navigate to the target directory that does not yet contain the quickstarts, for example, jboss-sandbox-quickstarts
.
Add the source GitHub repository as a remote to the local target destination repository.
+git remote add <your_remote_source_github> https://github.com/<your_remote_source_github>/jboss-eap-quickstarts.git
+
Create a branch, into which you will merge the quickstarts.
+git fetch upstream
+git checkout -b <target_branch_name> upstream/master
+
For each quickstart source branch you want to merge, run:
+git merge -s ours --no-commit <your_remote_source_github>/<source_branch_name>
+git read-tree --prefix=<quickstart_name> -u <your_remote_source_github>/<source_branch_name>
+git commit -m "Merge <quickstart_name> to XXX."
+
Now, rebase out the merges. Run:
+git rebase upstream/master
+
This should succeed with no problems as you are merging into new subdirectories.
This process leaves your GitHub repository with a lot of unwanted junk in it, so you need to do some cleaning up! Run:
+git gc --prune=all
+
Now push this branch to your target GitHub:
+git push <your_remote_target_github> HEAD
+
Verify that it looks correct and send a pull request.
Remove the quickstarts from the source repository if they are no longer needed.
If your quickstart needs a Maven repository other than the standard repository configured on OpenShift, you can use the following procedure to configure Maven.
+ +Note: The following substitution variables are used in these instructions:
+ +CURRENT_PATH
is the path where you execute the commands. For example home/jsmith/my-apps
.YOUR_APP_NAME
is your application name. For example helloworld
.YOUR_ACCOUNT_NAME
is your account name on OpenShift. For example jsmith
.APPLICATION_UUID
is the UUID generated by OpenShift for your application. For example 52864af85973ca430200006f
When you create your OpenShift application using the rhc app create -a <app-name> -t jbosseap-6
command, you see messages similar to the following:
Your application ‘YOUR_APP_NAME’ is now available.
+ URL: http://YOUR_APP_NAME-YOUR_ACCOUNT_NAME.rhcloud.com/
+ SSH to: APPLICATION_UUID@YOUR_APP_NAME-YOUR_ACCOUNT_NAME.rhcloud.com
+ Git remote: ssh://APPLICATION_UUID@YOUR_APP_NAME-YOUR_ACCOUNT_NAME.rhcloud.com/~/git/YOUR_APP_NAME.git/
+ Cloned to: /CURRENT_PATH/YOUR_APP_NAME
+
Make note of the SSH to
URL that is returned. You will need that URL later to copy files to your OpenShift application.
Create a Maven settings file that contains profiles for the repositories you need to test your quickstart.
+ +For example, if your application needs to use the temporary developer repository, you should add the following <profile>
and <active-profile>
:
<profile>
+ <id>jboss-developer-repository</id>
+ <repositories>
+ <repository>
+ <id>jboss-developer-repository</id>
+ <url>http://jboss-developer.github.io/temp-maven-repo/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>jboss-developer-plugin-repository</id>
+ <url>http://jboss-developer.github.io/temp-maven-repo/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+</profile>
+
+<activeProfile>jboss-developer-repository</activeProfile>
+
If it needs to use a local repository, you must upload the repository to OpenShift file:///${HOME}/app-root/data/
directory, and specify the URL in the settings.xml
file relative to that location. You must use the ${HOME}
environment variable in the URL. For example:
<profile>
+ <id>jboss-620GA-repository</id>
+ <repositories>
+ <repository>
+ <id>jboss-620GA-repository</id>
+ <url>file:///${HOME}/app-root/data/jboss-eap-6.2.0.GA-maven-repository/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>jboss-620GA-repository-plugin</id>
+ <url>file:///${HOME}/app-root/data/jboss-eap-6.2.0.GA-maven-repository/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+</profile>
+
+<activeProfile>jboss-620GA-repository</activeProfile>
+
Upload your settings.xml
file to the OpenShift application app-root/data/
directory using the ‘SSH to’ URL displayed when you created the application. For example:
$ scp <SETTINGS_DIRECTORY>/settings.xml APPLICATION_UUID@YOUR_APP_NAME-YOUR_ACCOUNT_NAME.rhcloud.com:app-root/data
+
If you specified a local Maven repository, upload the zip file to the OpenShift application app-root/data/
directory using the ‘SSH to’ URL displayed when you created the application. For example:
$ scp <MAVEN_ZIP_DIRECTORY>/jboss-eap-6.2.0.CR1-maven-repository.zip APPLICATION_UUID@YOUR_APP_NAME-YOUR_ACCOUNT_NAME.rhcloud.com:app-root/data
+
Wait until the upload completes before performing the next step. This takes a very long time!! When the upload process is complete, SSH into the same URL and unzip the Maven repository:
+$ ssh APPLICATION_UUID@YOUR_APP_NAME-YOUR_ACCOUNT_NAME.rhcloud.com
+cd app-root/data
+unzip jboss-eap-6.2.0.CR1-maven-repository.zip
+
To direct Maven to use the uploaded settings.xml
file, create a file in the .openshift/action_hooks/
directory named pre_build_jbosseap
, containing this line:
export MAVEN_ARGS="clean package -Popenshift -s ${OPENSHIFT_DATA_DIR}settings.xml -DskipTests"
+
Use git add
to add the above file, along with the updated src/
and pom.xml
files to GitHub.
$ git add src/ pom.xml .openshift/action_hooks/pre_build_jbosseap
+
Issue the git commit
and git push
in the usual manner.
Summary: The quickstarts demonstrate Java EE 6 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 run on Red Hat JBoss Enterprise Application Platform 6.1 or later with the Red Hat JBoss Web Framework Kit. We recommend using the JBoss EAP ZIP file. This version uses the correct dependencies and ensures you test and compile against your runtime environment.
+ +Be sure to read this entire document before you attempt to work with the quickstarts. It contains the following information:
+ +Available Quickstarts: List of the available quickstarts and details about each one.
Suggested Approach to the Quickstarts: A suggested approach on how to work with the quickstarts.
System Requirements: List of software required to run the quickstarts.
Configure Maven: How to configure the Maven repository for use by the quickstarts.
Run the Quickstarts: General instructions for building, deploying, and running the quickstarts.
Run the Arquillian Tests: How to run the Arquillian tests provided by some of the quickstarts.
Build and Deploy the Quickstart - to OpenShift: Deploy the application to OpenShift
Optional Components: How to install and configure optional components required by some of the quickstarts.
The following is a list of the currently available quickstarts. The table lists each quickstart name, the technologies it demonstrates, gives a brief description of the quickstart, and the level of experience required to set it up. For more detailed information about a quickstart, click on the quickstart name.
+ +Some quickstarts are designed to enhance or extend other quickstarts. These are noted in the Prerequisites column. If a quickstart lists prerequisites, those must be installed or deployed before working with the quickstart.
+ +Quickstarts with tutorials in the Get Started Developing Applications are noted with two asterisks ( ** ) following the quickstart name.
+ +Note: The quickstart README files use the replaceable value EAP_HOME
to denote the path to the JBoss EAP 6 installation. When you encounter this value in a README file, be sure to replace it with the actual path to your JBoss EAP 6 installation. The ‘JBOSS_HOME’ environment variable, which is used in scripts, continues to work as it has in the past.
Quickstart Name | Demonstrated Technologies | Description | Experience Level Required | Prerequisites |
---|---|---|---|---|
cdi-add-interceptor-binding | DeltaSpike, CDI | Creating a basic CDI extension to automatically add an interceptor binding | Intermediate | |
contacts-mobile-basic | HTML5, JavaScript, REST, jQuery, jQuery Mobile | A basic example of CRUD operations in a mobile only website. | Beginner | |
deltaspike-authorization | CDI, Deltaspike, JSF | Demonstrate the creation of a custom authorization example using @SecurityBindingType from DeltaSpike | Beginner | |
deltaspike-beanbuilder | DeltaSpike, CDI | Shows how to create new beans using DeltaSpike utilities. | Advanced | |
deltaspike-beanmanagerprovider | Deltaspike, JPA, JSF, CDI | Shows how to use DeltaSpike BeanManagerProvider to access CDI in a EntityListener | Intermediate | |
deltaspike-deactivatable | DeltaSpike, CDI | Demonstrate usage of Deactivatable. | Beginner | |
deltaspike-exception-handling | DeltaSpike, JSF, CDI | Exception being handled by different handlers and purpose | Intermediate | |
deltaspike-helloworld-jms | CDI, DeltaSpike, JMS | Demonstrates a JMS client using DeltaSpike configuration properties | Intermediate | |
deltaspike-partialbean-advanced | DeltaSpike, CDI | Demonstrates a partial bean providing a dynamic implementation of a generic Entity Query service | Advanced | |
deltaspike-partialbean-basic | DeltaSpike, CDI | Demonstrates a class providing a dynamic implementation of a DeltaSpike Partial Bean | Advanced | |
deltaspike-projectstage | CDI, Deltaspike, JSF | Demonstrate usage of DeltaSpike project stage and shows usage of a conditional @Exclude | Beginner | |
helloworld-errai | GWT, JAX-RS, Errai | Helloworld using the Errai framework | Beginner | |
helloworld-gwt | GWT | Demonstrates the use of CDI 1.0 and JAX-RS with a GWT front-end client | Beginner | |
helloworld-html5 | HTML5, JAX-RS, CDI | Basic HTML5 |Demonstrates the use of CDI 1.0 and JAX-RS using the HTML5 architecture and RESTful services on the backend | Beginner | |
helloworld-rf | JSF, RichFaces, CDI | Similar to the helloworld quickstart, but with a JSF and RichFaces front end | Beginner | |
kitchensink-angularjs | BV, CDI, EJB, JAX-RS, JPA, JPA, AngularJS | An example that incorporates multiple technologies | Intermediate | |
kitchensink-angularjs-bootstrap | BV, CDI, EJB, JAX-RS, JPA, JPA, AngularJS | An example that incorporates multiple technologies | Intermediate | |
kitchensink-backbone | BV, CDI, EJB, JAX-RS, JPA, JPA, Backbone | An example of Backbone.js integrated with jQuery, REST, and a Java back-end running on JBoss. | Intermediate | |
kitchensink-cordova | Apache Cordova, REST, HTML5 | Based on kitchensink, but uses hybrid HTML5 running as a native application on mobiles | Intermediate | |
kitchensink-cordova-contacts | Apache Cordova, REST, HTML5 | Based on kitchensink, but uses hybrid HTML5 running as a native application on mobiles | Intermediate | |
kitchensink-deltaspike | BV, DeltaSpike, JAX-RS, JPA, JPA, JSF, CDI | A version of kitchensink that uses DeltaSpike @Transactional | Intermediate | |
kitchensink-html5-mobile | HTML5, REST, CDI | Based on kitchensink, but uses HTML5, making it suitable for mobile and tablet computers | Beginner | |
kitchensink-rf | BV, EJB, JAX-RS, JPA, JPA, JSF, RichFaces, CDI | The canonical JSF kitchensink quickstart implemented with JSF and RichFaces | Intermediate | |
richfaces-validation | RichFaces | Demonstrates RichFaces and bean validation | Beginner | |
shrinkwrap-resolver | Arquillian, Shrinkwrap, CDI | Demonstrate usage of some Shrinkwrap resolver use cases | Intermediate | |
spring-greeter | JSP, and JPA 2.0, Spring MVC | Demonstrates the use of JPA 2.0 and JSP in Red Hat JBoss Enterprise Application Platform 6.1 or later. | Beginner | |
spring-kitchensink-asyncrequestmapping | JPA, JSON, JUnit, Spring, JSP | An example that incorporates multiple technologies | Intermediate | |
spring-kitchensink-basic | JPA, JSON, JUnit, Spring, JSP | An example that incorporates multiple technologies | Intermediate | |
spring-kitchensink-controlleradvice | JPA, JSON, JUnit, Spring, JSP | An example that incorporates multiple technologies | Intermediate | |
spring-kitchensink-matrixvariables | JPA, JSON, JUnit, Spring, JSP | An example that incorporates multiple technologies | Intermediate | |
spring-kitchensink-springmvctest | JPA, JSON, JUnit, Spring, JSP | An example that incorporates multiple technologies | Intermediate | |
spring-petclinic | AOP, JMX, JSP, Junit, Spring Data, Spring MVC Annotations, and Dandellion, webjars, JPA 2.0 | An example that incorporates multiple technologies in Red Hat JBoss Enterprise Application Platform 6.1 or later. | Advanced | |
spring-resteasy | Spring, Resteasy | Basic example demonstrating how a spring application can be packaged for JBoss EAP | Beginner |
We suggest you approach the quickstarts as follows:
+ +The application this project produces is designed to be run on Red Hat JBoss Enterprise Application Platform (EAP) 6.1 or later with the Red Hat JBoss Web Framework Kit (WFK) 2.5.
+ +To run these quickstarts with the provided build scripts, you need the following:
+ +Java 1.6, to run JBoss AS and Maven. You can choose from the following:
+ +Maven 3.0.0 or later, to build and deploy the examples
+ +If you have installed Maven, you can check the version by typing the following in a command line:
+mvn --version
+
The JBoss EAP distribution ZIP.
+ +You can also use JBoss Developer Studio or Eclipse to run the quickstarts.
The quickstarts use artifacts located in the JBoss GA and Early Access repositories. You must configure Maven to use these repositories before you build and deploy the quickstarts.
+ +Note: These instructions assume you are working with a released version of the quickstarts. If you are working with the quickstarts located in the GitHub master branch, follow the instructions located in the Contributing Guide.
+ +Locate the Maven install directory for your operating system. It is usually installed in ${user.home}/.m2/
.
For Linux or Mac: ~/.m2/
+ For Windows: "\Documents and Settings\USER_NAME\.m2\" -or- "\Users\USER_NAME\.m2\"
+
If you have an existing settings.xml
file, rename it so you can restore it later.
For Linux or Mac: mv ~/.m2/settings.xml ~/.m2/settings-backup.xml
+ For Windows: ren "\Documents and Settings\USER_NAME\.m2\settings.xml" settings-backup.xml
+ -or- ren "\Users\USER_NAME\.m2\settings.xml" settings-backup.xml
+
If you have an existing repository/
directory, rename it so you can restore it later. For example
For Linux or Mac: mv ~/.m2/repository/ ~/.m2/repository-backup/
+ For Windows: ren "\Documents and Settings\USER_NAME\.m2\repository\" repository-backup
+ -or- ren "\Users\USER_NAME\.m2\repository\" repository-backup
+
Copy the settings.xml
file from the root of the quickstarts directory to your Maven install directory.
For Linux or Mac: cp QUICKSTART_HOME/settings.xml ~/.m2/settings.xml
+ For Windows: copy QUICKSTART_HOME/settings.xml "\Documents and Settings\USER_NAME\.m2\settings.xml"
+ -or- copy QUICKSTART_HOME/settings.xml "\Users\USER_NAME\.m2\settings.xml"
+
Note: If you do not wish to configure the Maven settings, you must pass the configuration setting on every Maven command as follows: -s QUICKSTART_HOME/settings.xml
Locate the Maven install directory for your operating system. It is usually installed in ${user.home}/.m2/
.
For Linux or Mac: ~/.m2/
+ For Windows: "\Documents and Settings\USER_NAME\.m2\" -or- "\Users\USER_NAME\.m2\"
+
Restore the settings.xml
file/
For Linux or Mac: mv ~/.m2/settings-backup.xml ~/.m2/settings.xml
+ For Windows: ren "\Documents and Settings\USER_NAME\.m2\settings-backup.xml" settings.xml
+ -or- ren "\Users\USER_NAME\.m2\settings-backup.xml" settings.xml
+
Restore the repository/
directory
For Linux or Mac: mv ~/.m2/repository-backup/ ~/.m2/repository/
+ For Windows: ren "\Documents and Settings\USER_NAME\.m2\repository-backup\" repository
+ -or- ren "\Users\USER_NAME\.m2\repository-backup\" repository
+
Profiles are used by Maven to customize the build environment. The pom.xml
in the root of the quickstart directory defines the following profiles:
default
profile defines the list of modules or quickstarts that require nothing but JBoss Enterprise Application Platform.non-maven
profile lists quickstarts that do not require Maven, for example, quickstarts that use other Frameworks or technologies.functional-tests
profile lists quickstarts that provide functional tests.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:
+ + + +Before you deploy a quickstart, in most cases you need a running JBoss EAP server. A few of the Arquillian tests do not require a running server. This will be noted in the README for that quickstart.
+ +The JBoss EAP server can be started a few different ways.
+ +The README for each quickstart will specify which configuration is required to run the example.
+ +To start JBoss EAP:
+ +The following shows the command line to start the JBoss EAP server:
+For Linux: EAP_HOME/bin/standalone.sh
+For Windows: EAP_HOME\bin\standalone.bat
+
To start JBoss EAP with the Full Profile:
+ +The following shows the command line to start the JBoss EAP server with the full profile:
+For Linux: EAP_HOME/bin/standalone.sh -c standalone-full.xml
+For Windows: EAP_HOME\bin\standalone.bat -c standalone-full.xml
+
To start JBoss EAP with custom configuration options:
+ +The following shows the command line to start the JBoss EAP server. Replace the CUSTOM_OPTIONS with the custom optional parameters specified in the quickstart.
+For Linux: EAP_HOME/bin/standalone.sh CUSTOM_OPTIONS
+For Windows: EAP_HOME\bin\standalone.bat CUSTOM_OPTIONS
+
See the README file in each individual quickstart folder for specific details and information on how to run and access the example.
+ +In some cases, you may want to build the application to test for compile errors or view the contents of the archive.
+ +Use this command if you only want to build the archive, but not deploy it:
+ mvn clean package
+
Use this command to build and deploy the archive:
+ mvn clean package jboss-as:deploy
+
The command to undeploy the quickstart is simply:
+ mvn jboss-as:undeploy
+
You can verify the quickstarts build using one command.
+ +To build the quickstarts:
+ +Use this command to build the quickstarts:
+ mvn clean install
+
Note: If you see a java.lang.OutOfMemoryError: PermGen space
error when you run this command, increase the memory by typing the following command for your operating system, then try the above command again.
For Linux: export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=128m"
+ For Windows: SET MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=128m"
+
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.
You can undeploy quickstarts using the following procedure:
+ +Use this command to undeploy any deployed quickstarts:
+ mvn jboss-as:undeploy -fae
+
To undeploy any quickstarts that fail due to complex dependencies, follow the undeploy procedure described in the quickstart’s README file.
+ +Some of the quickstarts provide Arquillian tests. By default, these tests are configured to be skipped, as Arquillian tests an application on a real server, not just in a mocked environment.
+ +You can either start the server yourself or let Arquillian manage its lifecycle during the testing. The individual quickstart README should tell you what to expect in the console output and the server log when you run the test.
+ +Test the quickstart on a remote server
+ +If you need to run the tests on a JBoss EAP server running on a machine other than localhost, you can configure this, along with other options, in the src/test/resources/arquillian.xml
file using the following properties:
<container qualifier="jboss" default="true">
+ <configuration>
+ <property name="managementAddress">myhost.example.com</property>
+ <property name="managementPort">9999</property>
+ <property name="username">customAdminUser</property>
+ <property name="password">myPassword</property>
+ </configuration>
+</container>
+
Run the test goal with the following profile activated:
+mvn clean test -Parq-jbossas-remote
+
Test the quickstart on a managed server
+ +Arquillian’s managed container adapter requires that your server is not running as it will start the container for you. However, you must first let it know where to find the JBoss EAP directory. The simplest way to do this is to set the JBOSS_HOME
environment variable to the full path to your JBoss EAP directory. Alternatively, you can set the path in the jbossHome
property in the Arquillian configuration file.
src/test/resources/arquillian.xml
file located in the quickstart directory.Find the configuration for the JBoss container. It should look like this:
+<!-- Example configuration for a managed/remote JBoss EAP instance -->
+<container qualifier="jboss" default="true">
+ <!-- If you want to use the JBOSS_HOME environment variable, just delete the jbossHome property -->
+ <!--<configuration> -->
+ <!--<property name="jbossHome">/path/to/jboss/as</property> -->
+ <!--</configuration> -->
+</container>
+
Uncomment the configuration
element, find the jbossHome
property and replace the “/path/to/jboss/as” value with the actual path to your JBoss EAP server.
Run the test goal with the following profile activated:
+mvn clean test -Parq-jbossas-managed
+
You can also deploy the quickstarts from Eclipse using JBoss tools. For more information on how to set up Maven and the JBoss tools, refer to the JBoss Enterprise Application Platform Development Guide or Get Started Developing Applications.
+ +Note: The following variables are used in these instructions. Be sure to replace them as follows:
+ +If you do not yet have an OpenShift account and domain, Sign in to OpenShift to create the account and domain.
+ +Get Started with OpenShift details how to install the OpenShift Express command line interface.
+ +Open a shell command prompt and change to a directory of your choice. Enter the following command to create a JBoss EAP 6 application:
+rhc app create -a APPLICATION_NAME -t jbosseap-6
+
NOTE: The domain name for this application will be APPLICATION_NAME-YOUR_DOMAIN_NAME.rhcloud.com`. Be sure to replace the variables as noted above.
+ +This command creates an OpenShift application named APPLICATION_NAME and will run the application inside the jbosseap-6
container. You should see some output similar to the following:
Application Options
+-------------------
+ Namespace: YOUR_DOMAIN_NAME
+ Cartridges: jbosseap-6 (addtl. costs may apply)
+ Gear Size: default
+ Scaling: no
+
+Creating application 'APPLICATION_NAME' ... done
+
+Waiting for your DNS name to be available ... done
+
+Cloning into 'APPLICATION_NAME'...
+Warning: Permanently added the RSA host key for IP address '54.237.58.0' to the list of known hosts.
+
+Your application 'APPLICATION_NAME' is now available.
+
+ URL: http://APPLICATION_NAME-YOUR_DOMAIN_NAME.rhcloud.com/
+ SSH to: APPLICATION_UUID@APPLICATION_NAME-YOUR_DOMAIN_NAME.rhcloud.com
+ Git remote: ssh://APPLICATION_UUID@APPLICATION_NAME-YOUR_DOMAIN_NAME.rhcloud.com/~/git/APPLICATION_NAME.git/
+ Cloned to: CURRENT_DIRECTORY/APPLICATION_NAME
+
+Run 'rhc show-app APPLICATION_NAME' for more details about your app.
+
The create command creates a git repository in the current directory with the same name as the application.
+ +Notice that the output also reports the URL at which the application can be accessed. Make sure it is available by typing the published url into a browser or use command line tools such as curl or wget. Be sure to replace APPLICATION_NAME
and YOUR_DOMAIN_NAME
with your OpenShift application and account domain name.
Now that you have confirmed it is working you can migrate the quickstart source. You do not need the generated default application, so navigate to the new git repository directory created by the OpenShift command and tell git to remove the source and pom files:
+cd APPLICATION_NAME
+git rm -r src pom.xml
+
Copy the source for the QUICKSTART_NAME quickstart into this new git repository:
+cp -r QUICKSTART_HOME/QUICKSTART_NAME/src .
+cp QUICKSTART_HOME/QUICKSTART_NAME/pom.xml .
+
See individual quickstart README file for any specific server configuration requiremens.
+ +You can now deploy the changes to your OpenShift application using git as follows:
+git add src pom.xml
+git commit -m "QUICKSTART_NAME quickstart on OpenShift"
+git push
+
The final push command triggers the OpenShift infrastructure to build and deploy the changes.
+ +Note that the openshift
profile in pom.xml
is activated by OpenShift, and causes the WAR build by OpenShift to be copied to the deployments/
directory, and deployed without a context path.
When the push command returns, you can test the application by getting the following URL either via a browser or using tools such as curl or wget. Be sure to replace the APPLICATION_NAME
and YOUR_DOMAIN_NAME
variables in the URL with your OpenShift application and account domain name.
You can use the OpenShift command line tools or the OpenShift web console to discover and control the application.
+ +When you are finished with the application you can delete it as follows:
+rhc app-delete -a APPLICATION_NAME
+
Note: There is a limit to the number of applications you can deploy concurrently to OpenShift. If the rhc app create
command returns an error indicating you have reached that limit, you must delete an existing application before you continue.
rhc domain show
rhc app-delete -a APPLICATION_NAME_TO_DELETE
The following components are needed for only a small subset of the quickstarts. Do not install or configure them unless the quickstart requires it.
+ +By default, JBoss EAP is now distributed with security enabled for the management interfaces.
+A few of the quickstarts use these management interfaces and require that you create a management or application user to access the running application.
+An add-user
script is provided in the EAP_HOME/bin
directory for that purpose.
+You can run the script interactively or you can pass arguments on the command line.
The following procedures describe how to add a user with the appropriate permissions to run the quickstarts that depend on them.
+ +You can choose to run the script interactively or you can pass arguments on the command line.
+ +Type the command for your operating system
+For Linux: EAP_HOME/bin/add-user.sh
+For Windows: EAP_HOME\bin\add-user.bat
+
You should see the following response:
+What type of user do you wish to add?
+
+a) Management User (mgmt-users.properties)
+b) Application User (application-users.properties)
+(a):
+
At the prompt, press enter to use the default Management User.
You should see the following response:
+Enter the details of the new user to add.
+Using realm 'ManagementRealm' as discovered from the existing property files.
+Username :
+
Enter the Username and, at the next prompt, enter the Password.
+Username : admin
+Password : (choose a password for the admin user)
+
Repeat the password.
At the next prompt, you will be asked “What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]: ”. Leave it blank and press enter.
Choose yes for the remaining prompts.
If you prefer, you can create the management user non-interactively by passing each argument on the command line.
+ +For example, to add the Management User admin
in the default ManagementRealm
realm with password adminPass1!
, type the following:
For Linux: EAP_HOME/bin/add-user.sh -u 'admin' -p 'adminPass1!'
+ For Windows: EAP_HOME\bin\add-user.bat -u 'admin' -p 'adminPass1!'
+
You can choose to run the script interactively or you can pass arguments on the command line.
+ +Type the command for your operating system
+For Linux: EAP_HOME/bin/add-user.sh
+For Windows: EAP_HOME\bin\add-user.bat
+
You should see the following response:
+What type of user do you wish to add?
+
+a) Management User (mgmt-users.properties)
+b) Application User (application-users.properties)
+(a):
+
At the prompt, type: b
You should see the following response:
+Enter the details of the new user to add.
+Using realm 'ApplicationRealm' as discovered from the existing property files.
+Username :
+
Enter the the Username and at the next prompt, enter the Password. If the quickstart README specifies a Username and Password, enter them here. Otherwise, use the default Username quickstartUser
and Password quickstartPwd1!
.
Username : quickstartUser
+Password : quickstartPwd1!
+
At the next prompt, you will be asked “What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]: ”. If the quickstart README specifies the groups to use, enter that here. Otherwise, type the group: guest
If you prefer, you can create the application user non-interactively by passing each argument on the command line.
+ +For example, to add the Application User quickstartUser
in the ApplicationRealm
realm with password quickstartPwd1!
in group guest
, type the following:
For Linux: EAP_HOME/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!' -g 'guest'
+ For Windows: EAP_HOME\bin\add-user.bat -a -u 'quickstartUser' -p 'quickstartPwd1!' -g 'guest'
+
Profiles are used in the root POM to separate out these groups, allowing you to test the quickstarts easily. For example, to run those that require only started Server:
+ mvn clean install jboss-as:deploy jboss-as:undeploy -Parq-jbossas-remote
+
If the quickstarts are stored in another repository, you may wish to merge them in from there, do this:
+ +Add the other repo as a remote
+ git remote add -f <other repo> <other repo url>
+
Merge from the tag in the other repo that you wish to use. It is important to use a tag, to make tracking of history easier. We use a recursive merge strategy, always preferring changes from the other repo, in effect overwriting what we have locally.
+ git merge <tag> -s recursive -Xtheirs -m "Merge <Other repository name> '<Tag>'"
+
Review and push to upstream
+ git push upstream HEAD:master
+
The quickstarts use Redcarpet to process the markdown, the same processor used by GitHub. This builds on the basic markdown syntax, adding support for tables, code highlighting, relaxed code blocks etc). We add a couple of custom piece of markup - [TOC] which allows a table of contents, based on headings, to be added to any file, and [Quickstart-TOC], which adds in a table listing the quickstarts.
+ +To render the quickstarts README’s you will need, a working Ruby and Python install, with the various gems and eggs set up.
+ +To setup the environment you need to follow these steps. Certify to use the correct versions.
+ +Install Ruby 1.9.X
+ +For RHEL you can use this spec
Install Ruby GEMs
+gem install redcarpet nokogiri pygments.rb
+
Then just run
+ ./dist/release-utils.sh -m
+
To render all markdown files to HTML.
+ +You must provide a property gpg.passphrase
in your settings.xml
in the release
profile e.g.
<profile>
+ <id>release</id>
+ <properties>
+ <gpg.passphrase>myPassPhrase</gpg.passphrase>
+ </properties>
+ </profile>
+
You must have a JBoss Nexus account, configured with the server id in settings.xml
with the id jboss-releases-repository
e.g.
<server>
+ <id>jboss-releases-repository</id>
+ <username>myUserName</username>
+ <password>myPassword</password>
+ </server>
+
Add org.sonatype.plugins
plugin group to your settings.xml
so nexus plugin can be available for publishing scripts.
<pluginGroups>
+ <pluginGroup>org.sonatype.plugins</pluginGroup>
+ </pluginGroups>
+
filemgmt.jboss.org/download_htdocs/jbossas
Regenerate the quickstart based on archetypes
+ dist/release-utils.sh -r
+
Release
+ dist/release.sh -s <old snapshot version> -r <release version>
+
This will update the version number, commit and tag, build the distro zip and upload it to