home | tech | misc | code | bookmarks (broken) | contact | README


JBoss notes

Note

I'm not a experienced Java developer. If you find any errors, please, let me know.

Running your application

(Using JBoss 5.1.0.GA)

There are different ways of running the application with JBoss. I like to use the deploy word for a production environment only, although it is used in a more broader sense sometimes, almost being a synonym of "run". I'll use it for production scenario only.

Configuration of JBoss

JBoss configuration is scattered among logs of XML files. The one we are going to touch is, just below the JBoss, located at server/<servername>/conf/bootstrap/profile.xml. In <servername> I'm using default but it can change according to your setup.

Running it in your development environment

In profile.xml file, you will find the following snippet of configuration:

<property name="applicationURIs">
        <list elementClass="java.net.URI">
                <value>${jboss.server.home.url}deploy</value>
        </list>
</property>

To add the your application, you should add the directory of it and related libraries:

<property name="applicationURIs">
        <list elementClass="java.net.URI">
                <value>${jboss.server.home.url}deploy</value>
                <value>file:///home/foo/libs/</value>
                <value>file:///home/foo/project/app/project.ear/lib/</value>
                <value>file:///home/foo/project/app/</value>
        </list>
</property>

Remember: you don't need to generated the EAR file in this case. EAR files are necessary for deploying only.

This is a good method for development, because JBoss will not have to unpack and load the whole EAR file over and over again. If you change a JSP file, the change appear on-the-fly. If you changed a Java class, you need to compile it again (generating the class file) and need to touch the META-INF/application.xml.

Note

This is also called Exploded Deployment. For more information about that check the chapter Deployment of the JBoss 5.1.0 Administration and Configuration Guide.

Deploying it in your production environment

The deploying phase consists in generating a package file, normally a EAR file that holds everything somebody need to run the application (3rd party libraries and so on).

Everything you have to do is to put the EAR file in the default deploy directory (usually ${jboss.server.home.url}deploy, i.e., server/<servername>/deploy) your change the applicationURIs property (as we did above) to have the directory where the EAR file is.

Troubleshooting

*** PROFILES MISSING DEPENDENCIES: Name -> Dependency{Required State:Actual State}

The following error:

13:56:59,512 ERROR [ScopedProfileServiceController] Error installing to Create: name=ProfileKey@1e2b619[domain=default, server=default, name=applications] state=Configured mode=On Demand requiredState=Installed
...
13:56:59,513 ERROR [STDERR] Failed to boot JBoss:
13:56:59,514 ERROR [STDERR] java.lang.IllegalStateException: Incompletely deployed:

*** PROFILES IN ERROR: Name -> Error
Profile: ProfileKey@1e2b619[domain=default, server=default, name=applications] in error due to java.lang.reflect.InvocationTargetException

*** PROFILES MISSING DEPENDENCIES: Name -> Dependency{Required State:Actual State}
ProfileKey@d4a0be[domain=default, server=default, name=default] is missing following dependencies: ProfileKey@1e2b619[domain=default, server=default, name=applications]{Installed:**ERROR**}

is difficult to know the reason it happened. My problem is that I was using a version of JBoss 5-1-0.GA modified by the supplier of the application and it was lacking some files and directories that probably its IDE created automatically (I don't use a IDE).

The solution I found was to use the original version of JBoss. See this link for more information.