The quickstarts included in this distribution were written to demonstrate Java EE 6 and a few additional technologies. They provide small, specific, working examples that can used as a reference for your own project.
These quickstarts run on both JBoss Enterprise Application Platform 6 and JBoss AS 7. If you want to run the quickstarts on JBoss Enterprise Application Platform 6, we recommend using the JBoss Enterprise Application Platform 6 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.
-
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.
-
Suggested Approach to the Quickstarts: A suggested approach on how to work with the quickstarts.
-
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 to This Quickstart column. If a quickstart lists prerequisites, those must be installed before working with the quickstart.
Quickstarts with tutorials in the Getting Started Developing Applications Guide are noted with two asterisks ( ** ) following the quickstart name.
Quickstart Name | Demonstrated Technologies | Description | Experience Level Required | Prerequisites to This Quickstart |
---|---|---|---|---|
bean-validation | Bean Validation, JPA | Shows how to use Arquillian to test Bean Validation | Beginner | None |
bmt | EJB, BMT | EJB that demonstrates bean-managed transactions (BMT) | Beginner | None |
cdi-injection | CDI injection, Qualifiers, Servlet | Demonstrates the use of CDI 1.0 Injection and Qualifiers with JSF as the front-end client. | Beginner | None |
[cmt] (cmt/README.html "cmt") | EJB, container-managed transaction (CMT) | EJB that demonstrates container-managed transactions (CMT) | Beginner | None |
ejb-in-ear | EJB, JSF, JAR, and WAR deployed as an EAR | Packages an EJB JAR and WAR in an EAR | Beginner | None |
ejb-in-war | EJB and JSF deployed as a WAR | Packages an EJB JAR in a WAR | Beginner | None |
ejb-remote | Remote EJB | Shows how to access an EJB from a remote Java client program using JNDI | Beginner | None |
forge-from-scratch | Forge | Demonstrates how to generate a fully Java EE compliant project using nothing but JBoss Forge | Beginner | None |
greeter | CDI, JSF, JPA, EJB, JTA | Demonstrates the use of CDI 1.0, JPA 2.0, JTA 1.1, EJB 3.1 and JSF 2.0 | Beginner | None |
h2-console | H2 Database Console | Shows how to use the H2 console with JBoss AS | Beginner | greeter |
helloworld** | Basic CDI, Servlet | Basic example that can be used to verify that the server is configured and running correctly | Beginner | None |
helloworld-gwt | GWT | Demonstrates the use of CDI 1.0 and JAX-RS with a GWT front-end client | Beginner | None |
helloworld-html5 | Basic HTML5 | Demonstrates the use of CDI 1.0 and JAX-RS using the POH5 architecture and RESTful services on the backend | Beginner | None |
helloworld-jms | JMS | Demonstrates the use of external JMS clients | Intermediate | None |
helloworld-jsf | Basic CDI, JSF | Similar to the helloworld quickstart, but with a JSF front end | Beginner | None |
helloworld-mdb | Basic JMS, message-driven bean (MDB) | Demonstrates the use of JMS 1.1 and EJB 3.1 Message-Driven Bean | Intermediate | None |
helloworld-osgi** | OSGi JAR | Shows how to create and deploy a simple OSGi Bundle | Beginner | None |
helloworld-rs | CDI, JAX-RS | Demonstrates the use of CDI 1.0 and JAX-RS | Intermediate | None |
helloworld-singleton | Singleton Session Bean | Demonstrates the use of an EJB 3.1 Singleton Session Bean | Beginner | None |
hibernate3 | Hibernate 3 | Performs the same functions as hibernate4 quickstart, but uses Hibernate version 3 for database access | Beginner | None |
hibernate4 | Hibernate 4 | Performs the same functions as hibernate3 quickstart, but uses Hibernate version 4 for database access | Beginner | None |
jax-rs-client | JAX-RS | Demonstrates the use an external JAX-RS RestEasy client which interacts with a JAX-RS Web service that uses CDI 1.0 and JAX-RS | Intermediate | helloworld-rs |
jts | JTS | Uses Java Transaction Service (JTS) to coordinate distributed transactions | Intermediate | cmt |
kitchensink** | CDI, JSF, JPA, EJB, JPA, JAX-RS, BV | An example that incorporates multiple technologies | Beginner | None |
kitchensink-ear | EAR | Based on kitchensink, but deployed as an EAR | Beginner | None |
kitchensink-html5-mobile | HTML5 | Based on kitchensink, but uses HTML5, making it suitable for mobile and tablet computers | Beginner | None |
kitchensink-jsp | JSP | Based on kitchensink, but uses a JSP for the user interface | Beginner | None |
log4j | JBoss Modules | Demonstrates how to use modules to control class loading for 3rd party logging frameworks | Beginner | None |
numberguess** | CDI, JSF | Demonstrates the use of CDI 1.0 and JSF 2.0 | Beginner | None |
payment-cdi-event | CDI, Events | Demonstrates how to use CDI 1.0 Events | Beginner | None |
servlet-async | CDI, EJB, Servlet | Demonstrates CDI, plus asynchronous Servlets and EJBs | Intermediate | None |
servlet-filterlistener | Servlet | Demonstrates Servlet filters and listeners | Intermediate | None |
wsat-simple | WS-AT, Web service, JAX-WS | Deployment of a WS-AT (WS-AtomicTransaction) enabled JAX-WS Web service bundled in a WAR archive | Intermediate | None |
wsba-coordinator-completion-simple | WS-BA, Web service, JAX-WS | Deployment of a WS-BA (WS-BusinessActivity) enabled JAX-WS Web service bundled in a WAR archive (Participant Completion protocol) | Intermediate | None |
wsba-participant-completion-simple | WS-BA, Web service, JAX-WS | Deployment of a WS-BA (WS-BusinessActivity) enabled JAX-WS Web service bundled in a war archive (Coordinator Completion protocol) | Intermediate | None |
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're comfortable with those, move on to the Advanced.
- Some quickstarts are based on other quickstarts, but have expanded capabilities and functionality. If a prerequisite quickstart is listed, be sure to run through it before looking at the expanded version.
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: * OpenJDK * Oracle Java SE * Oracle JRockit
-
Maven 3.0.0 or newer, to build and deploy the examples * Follow the official Maven installation guide if you don't already have Maven 3 installed. * If you have Maven installed, you can check the version by typing the following in a command line:
mvn --version
-
The JBoss AS 7 distribution zip or the JBoss Enterprise Application Platform 6 distribution zip * For information on how to install and run JBoss, refer to the product documentation.
-
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 Getting Started Developing Applications Guide.
Maven configuration is dependent on whether you are running JBoss Enterprise Application Platform 6 or JBoss AS7.
If you are using the JBoss AS 7 Quickstart distribution, the community artifacts are available in the Maven central repository so no additional configuration is needed.
If you are using the JBoss Enterprise Application Platform 6 distribution, you need to download and configure the Maven repository.
-
Download the JBoss Enterprise Application Platform 6 Maven repository distribution zip and unzip it into a directory of your choice.
-
Modify the example-settings.xml file located in the root of your quickstarts folder. Replace all instances of
path/to/jboss-eap/repo
withinfile:///path/to/jboss-eap/repo
with the fully qualified path to the Maven repository you unzipped in the previous step. -
When you run Maven commands, you need to append
-s PATH_TO_QUICKSTARTS/example-settings.xml
to the command, for example:mvn jboss-as:deploy -s PATH_TO_QUICKSTARTS/example-settings.xml
-
You can configure the Maven user settings if you do not want to add the alternate path parameter each time you issue a Maven command. * If you have an existing ~/.m2/settings.xml file, modify it with the configuration information from the example-settings.xml file. * If there is no ~/.m2/settings.xml file, copy the example-settings.xml file to the ~/.m2 directory and rename it to settings.xml.
The root folder of each 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 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 server can be started a few different ways.
- Start the JBoss Server With the web profile: This is the default configuration. It defines minimal subsystems and services.
- Start the JBoss Server with the full profile: This profile configures many of the commonly used subsystems and services.
- Start the JBoss Server with a custom configuration: Custom configuration parameters can be specified on the command line when starting the server.
The README for each quickstart will specify which configuration is required to run the example.
-
Open a command line and navigate to the root of the JBoss directory.
-
The following shows the command line to start the server with the web profile:
For Linux: JBOSS_HOME/bin/standalone.sh For Windows: JBOSS_HOME\bin\standalone.bat
-
Open a command line and navigate to the root of the JBoss directory.
-
The following shows the command line to start the server with the full profile:
For Linux: JBOSS_HOME/bin/standalone.sh -c standalone-full.xml For Windows: JBOSS_HOME\bin\standalone.bat -c standalone-full.xml
Start the JBoss Enterprise Application Platform 6 or JBoss AS 7 Server with the Custom Configuration Options
-
Open a command line and navigate to the root of the JBoss directory.
-
The following shows the command line to start the server. Replace the CUSTOM_OPTIONS with the commands specified in the quickstart.
For Linux: JBOSS_HOME/bin/standalone.sh CUSTOM_OPTIONS For Windows: JBOSS_HOME\bin\standalone.bat CUSTOM_OPTIONS
Review the README file in the root folder of the quickstart for specific details on how to build and run the example. In most cases you do the following:
-
If required by the quickstart, make sure you start the JBoss Server as described in the README.
-
Build and deploy the quickstarts a. Open a command line and navigate to the root of the directory of the quickstart you want to run. b. Build the archive
-
The command used to build the quickstart depends on the individual quickstart, the server version, and how you configured Maven.
-
If you are running JBoss AS 7, it uses community artifacts available in the Maven central repository, so command line arguments are not usually required.
-
If you are running JBoss Enterprise Application Platform 6 and did not configure the Maven user settings described in Configure Maven for JBoss Enterprise Application Platform 6 above, you need to specify command line arguments.
-
Although some of the quickstarts require special commands, for most of the quickstarts you do the following.
For JBoss Enterprise Application Platform 6, Maven user settings NOT configured: mvn clean package -s PATH_TO_QUICKSTARTS/example-settings.xml For JBoss AS 7 or JBoss Enterprise Application Platform 6, Maven user settings configured: mvn clean package
c. Deploy the archive built in the previous step by typing the following in the command line:
mvn jboss-as:deploy
d. Alternatively, you can build and deploy the quickstart in one step. As in step b above when you built the archive, the command you use depends on the individual quickstart, the server version, and how you configured Maven. Although some of the quickstarts require special commands, for most of the quickstarts you do the following:
For JBoss Enterprise Application Platform 6, Maven user settings NOT configured: mvn package jboss-as:deploy -s PATH_TO_QUICKSTARTS/example-settings.xmlns For JBoss AS 7 or JBoss Enterprise Application Platform 6, Maven user settings configured: mvn package jboss-as:deploy
e. The command to undeploy the quickstart is simply:
mvn jboss-as:undeploy
f. If you want to redeploy a quickstart that uses a database, you should undeploy it first. This ensures the database is cleaned up correctly before the redeploy.
-
-
See the README file in each individual quickstart folder for specific details and information on how to run and access the example.
-
You can also start the JBoss Application Server and deploy the quickstarts using Eclipse. See the Getting Started Developing Applications Guide for more information.
The following components are needed for only a small subset of the quickstarts. Do not install or configure them unless the quickstart requires it.
-
Add a User: Add a Management or Application user for the quickstarts that run in a secured mode.
-
Install and Configure the PostgreSQL Database: The PostgreSQL database is used for the distributed transaction quickstarts.
-
Install and Configure Byteman: A tool used to demonstrated crash recovery for distributed transaction quickstarts.
By default, JBoss Enterprise Application Platform 6 and JBoss AS 7 are 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. A script is provided in the JBOSS_HOME/bin directory for that purpose.
The following procedures describe how to add a user with the appropriate permissions to run the quickstarts that depend on them.
#### Add an Management User 1. Open a command line 2. Type the command for your operating system For Linux: JBOSS_HOME/bin/add-user.sh
For Windows: JBOSS_HOME\bin\add-user.bat
-
You will 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 take the default Management User
-
You see the following response:
Enter the details of the new user to add. Realm (ManagementRealm) :
At the prompt, press enter to take the default ManagementRealm
-
When prompted, enter the following
Username : admin Password : (choose a password for the admin user)
Repeat the password
-
Choose yes for the remaining promts.
-
Open a command line
-
Type the command for your operating system
For Linux: JBOSS_HOME/bin/add-user.sh For Windows: JBOSS_HOME\bin\add-user.bat
-
You will 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 see the following response:
Enter the details of the new user to add. Realm (ApplicationRealm) :
At the prompt, press enter to take the default ApplicationRealm
-
When prompted, enter the following
Username : quickstartUser Password : quickstartPassword
-
When asked "What roles do you want this user to belong to?", enter:
guest
Some of the quickstarts require the PostgreSQL database. This section describes how to install and configure the database for use with the quickstarts.
The following is a brief overview of how to install PostgreSQL. More detailed instructions for installing and starting PostgreSQL can be found on the internet.
Use the following steps to install and configure PostgreSQL on Linux. You can download the PDF installation guide here: http://yum.postgresql.org/files/PostgreSQL-RPM-Installation-PGDG.pdf
- Install PostgreSQL
-
The yum install instructions for PostgreSQL can be found here: http://yum.postgresql.org/howtoyum.php/
-
Download the repository RPM from here: http://yum.postgresql.org/repopackages.php/
-
To install PostgreSQL, in a command line type:
* `sudo rpm -ivh pgdg-fedora91-9.1-4.noarch.rpm`
-
Edit your distributions package manager definitions to exclude PostgreSQL. See the "important note" on http://yum.postgresql.org/howtoyum.php/ for details on how to exclude postgresql packages from the repository of the distribution.
-
Install postgresql91 and postgres91-server by typing the following in a command line:
* `sudo yum install postgresql91 postgresql91-server`
- Set a password for the postgres user
-
In a command line, login as root and set the postgres password by typing the following commands:
* `su` * `passwd postgres`
-
Choose a password
- Configure the test database
-
In a command line, login as the postgres user, navigate to the postgres directory, and initialize the database by typing:
* `su postgres` * `cd /usr/pgsql-9.1/bin/` * `./initdb -D /var/lib/pgsql/9.1/data`
-
Modify the
/var/lib/pgsql/9.1/data/pg_hba.conf
file to set the authentication scheme to password for tcp connections. Modify the line following the IPv4 local connections: change trust to to password. The line should look like this:host all all 127.0.0.1/32 password
-
Modify the /var/lib/pgsql/9.1/data/postgresql.conf file to allow prepared transactions and reduce the maximum number of connections
max_prepared_transactions = 10 max_connections = 10
- Start the database server
-
In the same command line, type the following:
./postgres -D /var/lib/pgsql/9.1/data
-
Note, this command does not release the command line. In the next step you need to open a new command line.
-
- Create the test1 database
-
Open a new command line and login again as the postgres user, navigate to the postgres directory, and create the test1 database by typing the following:
* `su postgres` * `cd /usr/pgsql-9.1/bin/` * `./createdb test1`
The following are the steps to install and start PostreSQL on Mac OS X. Note that this guide covers only 'One click installer' option.
- Install PostgreSQL using Mac OS X One click installer: http://www.postgresql.org/download/macosx/
- Allow prepared transactions:
-
sudo su - postgres
-
Edit
/Library/PostgreSQL/9.1/data/postgresql.conf
to allow prepared transactionsmax_prepared_transactions = 10
-
- Start the database server
cd /Library/PostgreSQL/9.1/bin
./pg_ctl -D ../data restart
- Create the test1 database using the password you specified in Step 1
./createdb test1
- Verify that everything works. As the postgres user using the password you specified in Step 1, type the following:
-
cd /Library/PostgreSQL/9.1/bin
-
./psql -U postgres
start transaction; select 1; prepare transaction 'foobar'; commit prepared 'foobar';
-
Use the following steps to install and configure PostgreSQL on Windows:
- Install PostgreSQL using the Windows installer: http://www.postgresql.org/download/windows/
- Enable password authentication and configure PostgreSQL to allow prepared transactions
-
Modify the
C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
file to set the authentication scheme to password for tcp connections. Modify the line following the IPv4 local connections: change trust to to password. The line should look like this:host all all 127.0.0.1/32 password`
-
Modify the
C:\Program Files\PostgreSQL\9.1\data\postgresql.conf
file to allow prepared transactions and reduce the maximum number of connections:max_prepared_transactions = 10 max_connections = 10
- Start the database server
- Choose Start -> All Programs -> PostgreSQL 9.1\pgAdmin III
- Server Groups -> Servers (1) -> PostreSQL 9.1 (localhost:5432)
- Right click -> Stop Service
- Right click -> Start Service
- Create the test1 database
- Open a command line
- cd
C:\Program Files\PostgreSQL\9.1\bin\
createdb.exe -U postgres test1
- Make sure the PostgreSQL bin directory is in your PATH.
- Open a command line and change to the root directory
- Type:
psql
- If you see an error that 'psql' is not a recognized command, you need to add the PostgreSQL bin directory to your PATH environment variable.
- As the postgres user, start the PostgreSQL interactive terminal by typing the following command:
psql -U postgres
- Create the user sa with password sa and all privileges on database test1 by typing the following commands:
create user sa with password 'sa';
grant all privileges on database test1 to sa;
\q
(to quit)
- Test the connection to the database using the TCP connection as user 'sa'. This validates that the change to
pg_hba.conf
was made correctly:psql -h 127.0.0.1 -U sa test1
-
Create the following directory structure: JBOSS_HOME/modules/org/postgresql/main
-
Download the JBDC driver from <http://jdbc.postgresql.org/download.html /> and copy it into the directory you created in the previous step.
-
In the same directory, create a file named module.xml. Copy the following contents into the file:
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.0" name="org.postgresql"> <resources> <resource-root path="postgresql-9.1-901.jdbc4.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
-
Backup the file: JBOSS_HOME/standalone/configuration/standalone-full.xml
-
Open the JBOSS_HOME/standalone/configuration/standalone-full.xml file in an editor and locate the subsystem "urn:jboss:domain:datasources:1.0".
-
Add the following driver to the
<drivers>
section that subsystem. You may need to merge with other drivers in that section:<driver name="postgresql" module="org.postgresql"> <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> </driver>
The installation of PostgreSQL is a one time procedure. However, unless you have set up the database to automatically start as a service, you must repeat the instructions "Start the database server" above for your operating system every time you reboot your machine.
### Install and Configure BytemanByteman is used by a few of the quickstarts to demonstrate distributed transaction processing and crash recovery.
Byteman is a tool which simplifies tracing and testing of Java programs. Byteman allows you to insert extra Java code into your application, either as it is loaded during JVM startup or even after it has already started running. This code can be used to trace what the application is doing and to monitor and debug deployments to be sure it is operating correctly. You can also use Byteman to inject faults or synchronization code when testing your application. A few of the quickstarts use Byteman to halt an application server in the middle of a distributed transaction to demonstrate crash recovery.
-
Download Byteman from http://www.jboss.org/byteman/downloads/
-
Extract the zip file to a directory of your choice.
-
By default, the Byteman download provides unrestricted permissions to others which can cause a problem when running Ruby commands for the OpenShift quickstarts. To restrict the permissions to others, open a command line and type the followinge:
cd byteman-download-2.0.0/ chmod -R o-rwx byteman-download-2.0.0/
When instructed to use Byteman to halt the application, perform the following steps:
-
Find the appropriate configuration file for your operating system in the list below and make a backup copy.
For Linux: JBOSS_HOME/bin/standalone.conf For Windows: JBOSS_HOME\bin\standalone.conf.bat
-
The quickstart README should specify the text you need to append to the server configuration file.
-
Open the configuration file and append the text specified by the quickstart to the end of the file. Make sure to replace the file paths with the correct location of your quickstarts and the Byteman download.
-
The following is an example of of the configuration changes needed for the jta-crash-rec quickstart:
For Linux, open the JBOSS_HOME/bin/standalone.conf file and append the following line:
JAVA_OPTS="-javaagent:/PATH_TO_BYTEMAN_DOWNLOAD/lib/byteman.jar=script:/PATH_TO_QUICKSTARTS/jta-crash-rec/src/main/scripts/xa.btm ${JAVA_OPTS}"
For Windows, open the JBOSS_HOME\bin\standalone.conf.bat file and append the following line:
SET "JAVA_OPTS=%JAVA_OPTS% -javaagent:C:PATH_TO_BYTEMAN_DOWNLOAD\lib\byteman.jar=script:C:\PATH_TO_QUICKSTARTS\jta-crash-rec\src\main\scripts\xa.btm %JAVA_OPTS%"
-
When you are done testing the quickstart, remember to restore the configuration file with the backup copy.