How do I Run JBoss as a Service on Windows


    Option 1.  Use JBoss Native for Windows

    You can use JBossNative : Download the appropriate version based on your system and go through the README-service.txt which lists down the steps for running JBoss as a service.





    See: Available Builds



    Option 2. Use the JavaServiceWrapper by Tanuki.


    Note: Users keep editing this page, saying that the JavaServiceWrapper is not recommended.  This is not true.  They are confused between the JavaService and the JavaServiceWrapper.  They are two completely different products. JavaService is not recommended(for the below reasons), but JavaServiceWrapper is recommended.  The majority of JBoss users are using the JavaServiceWrapper as their way of making jboss run as a service.


    You can use Java Service Wrapper : and manage it by JMX :


    Unzip the wrapper zip file, and do the following:

    copy WRAPPER_HOME\bin\Wrapper.exe %JBOSS_HOME%\bin\Wrapper.exe
    copy WRAPPER_HOME\lib\Wrapper.DLL %JBOSS_HOME%\lib\Wrapper.DLL
    copy WRAPPER_HOME\lib\wrapper.jar %JBOSS_HOME%\lib\wrapper.jar
    mkdir %JBOSS_HOME%\server\YOURCONFIG\wrapper


    Create wrapper.conf file inside %JBOSS_HOME%\server\YOURCONFIG\wrapper with the below contents:
    # these are the JAVA_OPTS
    # enviroment variables - define the ones that match your desired environment
    # memory parameters - define the ones that match your desired environment
    # If you need serialization suppport
    # Parameters to be passed to the application (Jboss) 
    # Define server name (configuration) - If you need a config that is different than the "default" or need to run multiple configs YOURCONFIG
    # Define listening IP - If you have more than one IP or want to indicate to listen on a specific IP aaa.bbb.ccc.ddd
    # wrapper log location
    # You must not change below parameters without first uninstall the service
    # service name
    # service display name
    wrapper.ntservice.displayname=JBoss Server YOURCONFIG


    Test the service:

    cd %JBOSS_HOME%\bin\
    wrapper.exe -c %JBOSS_HOME%\server\YOURCONFIG\wrapper\wrapper.conf

    Install the service:

    cd %JBOSS_HOME%\bin\
    wrapper.exe -i %JBOSS_HOME%\server\YOURCONFIG\wrapper\wrapper.conf

    Uninstall the service:

    cd %JBOSS_HOME%\bin\
    wrapper.exe -r %JBOSS_HOME%\server\YOURCONFIG\wrapper\wrapper.conf


    Warning: make sure your JBOSS_HOME environment var is set correctly (this is not the case if

    you haven't done that yourself): the run.bat does set this itself, but the wrapper doesn't !


    java-service-wrapper-service.xml :


    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE server>
        <mbean code="org.tanukisoftware.wrapper.jmx.WrapperManager"
        <mbean code="org.tanukisoftware.wrapper.jmx.WrapperManagerTesting"






    JavaService is no longer recommended


    JavaService has a bug where it will not pass either Xss or XX:ThreadStackStize arguemnts to the jvm properly.  This results are that each thread stack is 1MB.  Under load this will most likely fail with an "java.lang.OutOfMemoryError: unable to create new native thread" error.  The fix for this error is to lower the thread stack size.  Since JavaService does not allow the thread stack size to be set, there will be no solution once an application has run into this error.


    The limit on the memory can also cause Tiles to slow down in JBoss when many applications are deployed.


    Thread dumps


    Running as a service makes it more difficult to generate a thread dump. Here are some workarounds for the problem


    Port Conflicts


    Occasionally, when run JBoss as a service you may encounter port conflicts resulting in a BindException. See here for help


    Mysterious shutdowns


    Some users have reported JBoss experiencing clean shutdowns while running as a service.  It turns out that the Sun JVM monitors for SIGHUP and interprets it as a signal to shut down, so this can occur anytime the console user logs out of the system.  To prevent this from happening, you should add this flag to your JVM parameters:


    -Xrs Reduces use of operating-system signals by the Java virtual machine (JVM). This option is available beginning with J2SE 1.3.1. In J2SE 1.3.0, the Shutdown Hooks facility was added to allow orderly shutdown of a Java application. The intent was to allow user cleanup code (such as closing database connections) to run at shutdown, even if the JVM terminates abruptly.  You can reference the following url, that gives you a table of the operating systems and the associated interrupts that Xrs will stop the vm from listening to. Revelations on Java signal handling


    Sun's JVM catches signals to implement shutdown hooks for abnormal JVM termination. The JVM uses SIGHUP, SIGINT, and SIGTERM to initiate the running of shutdown hooks.


    The JVM uses a similar mechanism to implement the pre-1.2 feature of dumping thread stacks for debugging purposes. Sun's JVM uses SIGQUIT to perform thread dumps.


    Applications embedding the JVM frequently need to trap signals like SIGINT or SIGTERM, which can lead to interference with the JVM's own signal handlers. To address this issue, the -Xrs command-line option has been added beginning in J2SE 1.3.1. When -Xrs is used on Sun's JVM, the signal masks for SIGINT, SIGTERM, SIGHUP, and SIGQUIT are not changed by the JVM, and signal handlers for these signals are not installed.


    Please see MysteriousShutdowns for more information.


    SrvAny utility


    Some of our customers also use the SrvAny utility, but we have heard that there may be conflicts with this tool if you make use of Windows Update.


    Windows resource kit


    The instructions from this Microsoft tech-note will help to install jboss as a service.  The trick is when you get to the part about editing the registry key you use this for you executable: cmd.exe /c path\run_my_jboss.bat.  Also, paths in the batch file become relative to a windows system folder so you cannot use relative path in the batch file.







    Referenced by: