Setting a lightweight JBoss server for web development only
Posted by felipeal on October 28, 2004 at 12:04 AM EDT
A couple of months ago, I had to implement a custom LoginModule to be used by a J2EE application running primarily on JBoss 3.0.8 (bundled with Tomcat 4.1.24). While developing it, I had to restart JBoss on every new progress, in order to test the changes. As my desktop was just a poor Pentium III with 512MB, running all sort of geek stuff (mozilla, emacs, eclipse, many shells, gaim, openoffice, etc...), JBoss started in about 2 minutes and stopped in another 1:30 minutes, totalizing long 4 minutes for every iteration!So, as a good 'lazy developer', I decided to spend some time cleaning JBoss (I was using the default configuration, which loads a lot of stuff that didn't matter to my LoginModule, such as EJB container, Messaging server, EAR deployet, HSQLDB, etc...) and recover that time during each iteration. So here's what I did:
1.Started copying the
minimal server configuration to a new configuration called web:cp -a ${JBOSS_HOME}/server/minimal ${JBOSS_HOME}/server/web2.Copied the
tomcat41-service.xml from the default configuration:cp ${JBOSS_HOME}/server/default/deploy/tomcat41-service.xml ${JBOSS_HOME}/server/web/deploy3.Copied some JARs from
default's lib:cd ${JBOSS_HOME}/server/default/lib; cp jboss.jar tomcat41-service.jar jbosssx.jar ../../web/libAt this point, the new server was already ready for web development, and starting as a breeze:
~felipeal# ${JBOSS_HOME}/bin/run.sh -c web
...
...
00:25:43,280 INFO [Server] JBoss (MX MicroKernel) [3.0.8 (CVSTag=JBoss_3_0_8 Date=200306050849)] Started in 0m:7s:303ms
Now I needed to set the authentication stuff:
4.Added new MBeans on
jboss-service.xml:
<mbean code="org.jboss.security.plugins.SecurityConfig"
name="jboss.security:name=SecurityConfig">
<attribute name="LoginConfig">jboss.security:service=XMLLoginConfig</attribute>
</mbean>
<mbean code="org.jboss.security.auth.login.XMLLoginConfig"
name="jboss.security:service=XMLLoginConfig">
<attribute name="ConfigResource">login-config.xml</attribute>
</mbean>
<mbean code="org.jboss.security.plugins.JaasSecurityManagerService"
name="jboss.security:service=JaasSecurityManager">
<attribute name="SecurityManagerClassName">
org.jboss.security.plugins.JaasSecurityManager
</attribute>
</mbean>
5.Created the
login-config.xml on web/conf, adding my custom LoginModule:
<?xml version='1.0'?>
<!DOCTYPE policy PUBLIC
"-//JBoss//DTD JBOSS Security Config 3.0//EN"
"http://www.jboss.org/j2ee/dtd/security_config.dtd">
<policy>
<!-- put my login module setup here - don't remember the details :-) -->
</policy>
6.(optional) If running on JDK 1.3, it's also necessary to copy jboss-jaas.jar and xalan.jar to lib:cd ${JBOSS_HOME}/server/default/lib; cp jboss-jaas.jar xalan.jar jbosssx.jar ../../web/libThat's it: the new server was ready for quick development cycles (startup and shutdown in about 20s!)
Now, back to present day, I had to configure JBoss 3.2.5 to run as a web-server only (I know I could use a pristine Tomcat 5.0.x, but it had to be JBoss) on my home server, which is also an old PIII, again running a lot of stuff (xinetd, mysql, tomcat, X, eclipse, emacs, gaim, evolution, mozilla, etc...).
The steps changed a little bit, but fortunately not that much:
1.Start copying the
minimal configuration:cp -a ${JBOSS_HOME}/server/minimal ${JBOSS_HOME}/server/web2.Instead of copying
tomcat4-service.xml, copy the whole jbossweb-tomcat50.sar directory:cp -a ${JBOSS_HOME}/server/default/deploy/jbossweb-tomcat50.sar ${JBOSS_HOME}/server/web/deploy3.Copy some JARs from
default's lib:cd ${JBOSS_HOME}/server/default/lib; cp jboss.jar jboss-j2ee.jar jbosssx.jar ../../web/lib4.Assuming you don't need transactions neither Tomcat's
CachedConnectionValve, comment out the following lines on ${JBOSS_HOME}/server/web/deploy/jbossweb-tomcat50.sar/META-INF/jboss-service.xml:
<depends>jboss:service=TransactionManager</depends>
<depends>jboss.jca:service=CachedConnectionManager</depends>
That's it, now you have a 'clean' JBoss 3.2.5 web server ready to roll! Note that this new server is not that faster proportionally (in my case, the startup is 30s against 1m from the default configuration), but it still saves you a good ammount of resources (memory, threads, file handlers, etc...).
Related Topics >>
Blog Links >>
- Login or register to post comments
- Printer-friendly version
- felipeal's blog
- 1896 reads





