Server startup: batch file vs windows services

Hi guys,

I’m having difficulty running Servoy 5.1.4 as a window service.
If I start it from a batch file servoy_server.bat that comes with Servoy installation then it’s all fine.
However if I install a service with wrapper.exe -i wrapper.conf then I get a startup error

2010-08-20 11:53 WrapperSimpleAppMain ERROR com.servoy.j2db.util.Debug Error occured loading server plugin class com.servoyguy.plugins.servoycom.ServerPlugin, error: no jacob-1.14.3-x86 in java.library.path

It does not crush the server but the application is unable to use ServoyCOM plugin.
What is different when running the batch vs a windows service?

Below is my wrapper.conf and servoy_server.bat
wrapper.log is empty
.service_log.txt is below - looks ok
servoy_log.txt has that only error message: 2010-08-20 12:10:09,265 ERROR [WrapperSimpleAppMain] com.servoy.j2db.util.Debug - Error occured loading server plugin class com.servoyguy.plugins.servoycom.ServerPlugin, error: no jacob-1.14.3-x86 in java.library.path

Please help!

Cheers,
Maria

wrapper.conf

#********************************************************************
# Wrapper Properties
#********************************************************************

# Java Application
wrapper.java.command=java

# Java Main class
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

# Application parameters.  Add parameters as needed starting from 1
wrapper.app.parameter.1=com.servoy.j2db.server.ApplicationServer

#license
wrapper.license.type=DEV
wrapper.license.id=200907080021
wrapper.license.licensee=Servoy
wrapper.license.dev_application=ServoyApplicationServer
wrapper.license.features=64bit
wrapper.license.upgrade_term.begin_date=2009-07-08
wrapper.license.upgrade_term.end_date=2010-07-08
wrapper.license.key.1=b5e5-3c44-70cd-b8a5
wrapper.license.key.2=a77b-c685-32b1-a790
wrapper.license.key.3=b746-fc90-ecac-a233
wrapper.license.key.4=ddef-35d1-4588-5164

# Java Classpath (include wrapper.jar)  Add class path elements as needed starting from 1
wrapper.java.classpath.1=.
wrapper.java.classpath.2=service\wrapper.jar
wrapper.java.classpath.3=lib\activation.jar
wrapper.java.classpath.4=lib\antlr.jar
wrapper.java.classpath.5=lib\BrowserLauncher2.jar
wrapper.java.classpath.6=lib\commons-codec.jar
wrapper.java.classpath.7=lib\commons-collections.jar
wrapper.java.classpath.8=lib\commons-dbcp.jar
wrapper.java.classpath.9=lib\commons-fileupload-1.2.1.jar
wrapper.java.classpath.10=lib\commons-httpclient.jar
wrapper.java.classpath.11=lib\commons-logging.jar
wrapper.java.classpath.12=lib\commons-pool.jar
wrapper.java.classpath.13=lib\jabsorb.jar
wrapper.java.classpath.14=lib\dom4j.jar
wrapper.java.classpath.15=lib\help.jar
wrapper.java.classpath.16=lib\hibernate3.jar
wrapper.java.classpath.17=lib\j2dbdev.jar
wrapper.java.classpath.18=lib\j2db.jar
wrapper.java.classpath.19=lib\jdbc2_0-stdext.jar
wrapper.java.classpath.20=lib\jmx.jar
wrapper.java.classpath.21=lib\jndi.jar
wrapper.java.classpath.22=lib\joda-time.jar
wrapper.java.classpath.23=lib\js.jar
wrapper.java.classpath.24=lib\jta.jar
wrapper.java.classpath.25=lib\jug.jar
wrapper.java.classpath.26=lib\log4j.jar
wrapper.java.classpath.27=lib\mail.jar
wrapper.java.classpath.28=lib\ohj-jewt.jar
wrapper.java.classpath.29=lib\oracle_ice.jar
wrapper.java.classpath.30=lib\server-bootstrap.jar
wrapper.java.classpath.31=lib\servlet-api.jar
wrapper.java.classpath.32=lib\slf4j-api.jar
wrapper.java.classpath.33=lib\slf4j-log4j.jar
wrapper.java.classpath.34=lib\wicket-calendar.jar
wrapper.java.classpath.35=lib\wicket-extentions.jar
wrapper.java.classpath.36=lib\wicket.jar
wrapper.java.classpath.37=lib\networktnl.jar
wrapper.java.classpath.38=lib\rmitnl.jar
wrapper.java.classpath.39=lib\commons-io-1.4.jar

# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=C:\apps\TSM_LIVE_DEMO\Servoy_5_TSMLive_DEMO\application_server\service

# Java Additional Parameters
wrapper.java.additional.1=-Djava.awt.headless=true
wrapper.java.additional.2=-Duser.dir="C:\apps\TSM_LIVE_DEMO\Servoy_5_TSMLive_DEMO\application_server"
wrapper.java.additional.3=-XX:MaxPermSize=128m

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=32

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256

# Port which the native wrapper code will attempt to connect to
wrapper.port=1777

wrapper.on_exit.default=RESTART
wrapper.on_exit.0=SHUTDOWN
wrapper.jvm_exit.timeout=60

#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Format of output for the console.  (See docs for formats)
wrapper.console.format=PM

# Log Level for console output.  (See docs for log levels)
wrapper.console.loglevel=INFO

# Log file to use for wrapper output logging.
wrapper.logfile=..\.service_log.txt

# Format of output for the log file.  (See docs for formats)
wrapper.logfile.format=LPTM

# Log Level for log file output.  (See docs for log levels)
wrapper.logfile.loglevel=INFO

# Maximum size that the log file will be allowed to grow to before
#  the log is rolled. Size is specified in bytes.  The default value
#  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
#  'm' (mb) suffix.  For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=30m

# Maximum number of rolled log files which will be allowed before old
#  files are deleted.  The default value of 0 implies no limit.
wrapper.logfile.maxfiles=0

# Log Level for sys/event log output.  (See docs for log levels)
wrapper.syslog.loglevel=FATAL

#********************************************************************
# Wrapper NT Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.  The
#  service can then be reinstalled.

# Name of the service
wrapper.ntservice.name=ServoyService

# Display name of the service
wrapper.ntservice.displayname=TSM Live Demo

# Description of the service
wrapper.ntservice.description=TSM Live Demo

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.  AUTO_START or DEMAND_START
wrapper.ntservice.starttype=DEMAND_START

# Priority at which the service is run.  NORMAL, LOW, HIGH, or
#  REALTIME
wrapper.ntservice.process_priority=NORMAL

# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=false

servoy_server.bat

@echo off

:restart
rem To enable logging change 'java' into 'java -DSTACKTRACE=true'
java -Djava.awt.headless=true -Xmx256m -Xms64m -XX:MaxPermSize=128m -classpath .;lib\compat141.jar;lib\commons-codec.jar;lib\commons-httpclient.jar;lib\activation.jar;lib\antlr.jar;lib\commons-collections.jar;lib\commons-dbcp.jar;lib\commons-fileupload-1.2.1.jar;lib\commons-io-1.4.jar;lib\commons-logging.jar;lib\commons-pool.jar;lib\dom4j.jar;lib\help.jar;lib\jabsorb.jar;lib\hibernate3.jar;lib\j2db.jar;lib\j2dbdev.jar;lib\jdbc2_0-stdext.jar;lib\jmx.jar;lib\BrowserLauncher2.jar;lib\jndi.jar;lib\js.jar;lib\jta.jar;lib\jug.jar;lib\log4j.jar;lib\mail.jar;lib\ohj-jewt.jar;lib\oracle_ice.jar;lib\server-bootstrap.jar;lib\servlet-api.jar;lib\wicket-calendar.jar;lib\wicket-extentions.jar;lib\wicket.jar;lib\slf4j-api.jar;lib\slf4j-log4j.jar;lib\joda-time.jar;lib\rmitnl.jar;lib\networktnl.jar com.servoy.j2db.server.ApplicationServer %1 %2 %3 %4 %5 %6 %7 %8 %9

rem restart if the server exited with the restart exit code 99
if errorlevel 99 goto restart

.service_log.txt

INFO   | jvm 1    | 2010/08/20 12:10:04 | TSMDBFDriver - extended functions registered with driver.
INFO   | jvm 1    | 2010/08/20 12:10:09 | Loading Com libs: tsm61.global
INFO   | jvm 1    | 2010/08/20 12:10:09 | Binding lib: tsm61.global...
INFO   | jvm 1    | 2010/08/20 12:10:09 | Loading Com libs: tsm61.global
INFO   | jvm 1    | 2010/08/20 12:10:09 | Binding lib: tsm61.global...
INFO   | jvm 1    | 2010/08/20 12:10:09 | Registered remote COM service: tsm61.global
INFO   | jvm 1    | 2010/08/20 12:10:10 | Aug 20, 2010 12:10:10 PM org.apache.coyote.http11.Http11Protocol init
INFO   | jvm 1    | 2010/08/20 12:10:10 | INFO: Initializing Coyote HTTP/1.1 on http-8085
INFO   | jvm 1    | 2010/08/20 12:10:10 | Aug 20, 2010 12:10:10 PM org.apache.catalina.startup.Catalina load
INFO   | jvm 1    | 2010/08/20 12:10:10 | INFO: Initialization processed in 518 ms
INFO   | jvm 1    | 2010/08/20 12:10:10 | Aug 20, 2010 12:10:10 PM org.apache.catalina.core.StandardService start
INFO   | jvm 1    | 2010/08/20 12:10:10 | INFO: Starting service Catalina
INFO   | jvm 1    | 2010/08/20 12:10:10 | Aug 20, 2010 12:10:10 PM org.apache.catalina.core.StandardEngine start
INFO   | jvm 1    | 2010/08/20 12:10:10 | INFO: Starting Servlet Engine: Apache Tomcat/6.0.20
INFO   | jvm 1    | 2010/08/20 12:10:12 | Aug 20, 2010 12:10:12 PM org.apache.coyote.http11.Http11Protocol start
INFO   | jvm 1    | 2010/08/20 12:10:12 | INFO: Starting Coyote HTTP/1.1 on http-8085
INFO   | jvm 1    | 2010/08/20 12:10:12 | Aug 20, 2010 12:10:12 PM org.apache.catalina.startup.Catalina start
INFO   | jvm 1    | 2010/08/20 12:10:12 | INFO: Server startup in 2207 ms

this is not really about the java classpath
But about the native lib that plugin uses. Somehow that native lib is not on the path of the user that starts the window service.
I dont know how that plugin is installed on the server, so i guess “servoyguy” should be asked.

Thanks Johan.