Installing Jboss 6.1.0-Final under RHEL or CentOS

The following is a howto for installing Jboss under Red Hat Enterprise Linux or CentOS.  The steps are most likely the same under any other Linux distro.

  • Unpack your jboss.zip (or .tar)
  • Jboss requires a ‘place’ to store data as it runs.  Out of the box it uses org.jboss.jdbc.HypersonicDatabase which is horribly inefficient and should never be used in a production system.  So we’ll set up MySQL such that jboss can write to it (installing and configuring MySQL is an excersize for the reader) and create a DataStore instance in jboss that points to the MySQL server:

Add a jboss user to MySQL (This is with a 5.x version of MySQL)

INSERT INTO `user` VALUES (‘localhost’, ‘jboss’, ‘5d2e19393cc5ef67’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘N’, ‘N’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘N’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘N’, ”, ”, ”, ”, 0, 0, 0, 0)

Create a table for jboss

  • Create a DataSource definition:

Copy mysql-ds.xml from $JBOSS_HOME/docs/examples/jcs/mysql-ds.xml to $JBOSS_HOME/server_profile/deploy

Edit the mysql-ds.xml:

Change JNDI name to: DefaultDS

Update the URL to point to the MySQL server and jboss database.

Remove the ‘zeroDateTimeBehavior=convertToNull’ connection argument

# mv deploy/hsqldb-ds.xml deploy/hsqldb-ds.xml.removed.   This will disable the default HyperSonic db DataStore.

  • Unistall the services that you do not need.  This will greatly depend on what it is that you are trying to do with this application server instance.  Following are some examples of services that are removed and how to do it.  Each one is a bit different.

javamail:

In deployers/jsr77-deployers-jboss-beans.xml: Comment out the following: <property name=”mailService”>jboss:service=Mail</property>

# mv deploy/mail-service.xml deploy/mail-service.xml.removed

hornetq:

# rm -rf deploy/jms-ra.rar/
# rm -rf deploy/hornetq/
# mv deployers/hornetq-deployers-jboss-beans.xml deployers/hornetq-deployers-jboss-beans.xml.removed

clustering:

# mv ./deployers/clustering-deployer-jboss-beans.xml ./deployers/clustering-deployer-jboss-beans.xml.removed
# rm -rf ./deploy/mod_cluster.sar/

  • Update the admin console password:

Edit: $JBOSS_HOME/server_profile/conf/props/jmx-console-users.properties

Add a uid/password combination in the following format: uid=password

  • Secure the jmx-console:

Copy the jmx-console.war from the common directory into the server_profile server dir.

# cp -Rpf ./common/deploy/jmx-console.war/ server/amap/deploy

Edit: ./deploy/jmx-console.war/WEB-INF/jboss-web.xml

Uncomment the <security-domain> node

Edit: ./deploy/jmx-console.war/WEB-INF/web.xml

Uncomment the <security-constraint> node

Edit: ./deploy/jmx-jboss-beans.xml

Uncomment the line: <property name=”securityDomain”>jmx-console</property>

Edit: conf/props/jmx-console-users.properties

Change the password

With that, you should have an instance of JBoss up and running and ready for you to develop your applications.

Configuring JBoss 6.x to Run as a Service Under RHEL and CentOS

In most cases you will want to run JBoss as a non-privileged user.  For this example we will set up a jboss user (adding the user is an excersize for the user).  This example covers jboss-6.1.0-Final.

  • Add $JAVA_HOME and $JBOSS_HOME environmental vars to .bash_profile for your jboss user.  $JAVA_HOME points to your install of the JDK and $JBOSS_HOME points to your jboss installation directory.

    JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk.x86_64
    export JAVA_HOME
    PATH=$JAVA_HOME/bin:$PATH
    export PATH

JBOSS_HOME=/opt/jboss/
export JBOSS_HOME

  • Once you have done the basic JBoss installation set up, copy the jboss_init_redhat.sh to /etc/init.d/jboss.
  • Add the following directly below the #!/bin/bash line:

# description: JBoss Start Stop Restart
# processname: jboss
# chkconfig: 234 20 80

  • Set JBOSS_HOME
  • JAVAPTH to the location of your JDK
  • Set JBOSS_CONF to the profile you want to run
  • define a $JBOSS_HOST variable and set it to either the IP address or host name of the machine on which you are running jboss.
  • Update the JBOSSCP to include the jbossall-client.jar

JBOSSCP=${JBOSSCP:-“$JBOSS_HOME/bin/shutdown.jar:$JBOSS_HOME/client/jbossall-client.jar”}

  • Replace the JBOSS_CMD_STOP with the following line (the uid:password combo is whatever you used to lock down the admin console in jboss):

JBOSS_CMD_STOP=”$JBOSS_HOME/bin/shutdown.sh -s service:jmx:rmi:///jndi/rmi://192.168.126.128:1090/jmxrmi -u admin -p password”

  • Enable jboss as a service in the OS:
  • Make the jboss script executable:
  • # chmod 755 jboss

Add it as a service via chkconfig:

  • # chkconfig –add jboss

Set the run levels for the jboss service

  • # chkconfig –level 2345 jboss on