Trouble Shooting Apache Procrun Unable to Start Service Problem

Today, I am debugging the batch script that wraps the embedded jetty+solr application as windows service. The script looks like:
Windows BAT: Using Apache Procrun to Install Java Application As Windows Service

Then I run installService.bat -service_name service1 -start_params "start;-port;9753" -stop_params shutdown, it installs the service successfully. But when I click service1.exe and try to start the service, it fails silently. No any (error) message logged in commons-daemon.log or service1.stderr/stdout.log. But when I run prunsrv //TS//service1 to debug the service, it runs well.

Looks weird. If procrun logged error message in some place, it would be much easier to find the root cause of the problem.
View Procrun Error Message in Event Viewer
To view the error log, we have to view Windows Event Log: Go to Control Panel, and search Event Viewer, open it. Select "Windows Log" -> "System", reproduce the problem by starting the service in service1 service GUI, we can see one new error log:
The service1 service failed to start due to the following error: 
The system cannot find the file specified.

Root Cause of The system cannot find the file specified
Google search "The system cannot find the file specified". Find post Build windows service from java application with procrun:
If you use (correct) relative paths to files(especially for prunmgr.exe) in the installation script, the service will install correctly and it will run fine in debugging mode. It will however fail when run normally with any administrative tooling you have.
Generally, you should use absolute paths with procrun.

Check the service1 GUI, in general tab. it indeed uses prunsrv //RS//service1.
Check the script, I use:
"%PRUNSRV%" //IS//%SERVICE_JAVA% --Install="%MYPATH%prunsrv"
But somehow I removed the definition of MYPATH in the script. Update the script:
set "PRUNSRV=%%~dp0/%prunsrv.exe"
"%PRUNSRV%" //IS//%SERVICE_JAVA% --Install="%PRUNSRV%"
Now it works.
Lesson Learned
Use absolute path in installation script.
Don't use white spaces in the service name.
Use System Event Log to view prunsrv error message.

Resources
Build windows service from java application with procrun
https://github.com/lenhard/procrun-sample
Windows BAT: Using Apache Procrun to Install Java Application As Windows Service
http://commons.apache.org/proper/commons-daemon/procrun.html
Post a Comment

Labels

Java (159) Lucene-Solr (110) Interview (61) All (58) J2SE (53) Algorithm (45) Soft Skills (36) Eclipse (34) Code Example (31) Linux (24) JavaScript (23) Spring (22) Windows (22) Web Development (20) Nutch2 (18) Tools (18) Bugs (17) Debug (15) Defects (14) Text Mining (14) J2EE (13) Network (13) PowerShell (11) Troubleshooting (11) Chrome (9) Design (9) How to (9) Learning code (9) Performance (9) UIMA (9) html (9) Http Client (8) Maven (8) Problem Solving (8) Security (8) bat (8) blogger (8) Big Data (7) Continuous Integration (7) Google (7) Guava (7) JSON (7) ANT (6) Coding Skills (6) Database (6) Scala (6) Shell (6) css (6) Algorithm Series (5) Cache (5) Dynamic Languages (5) IDE (5) Lesson Learned (5) Programmer Skills (5) Tips (5) adsense (5) xml (5) AIX (4) Code Quality (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Spark (4) System Design (4) Testing (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Become a Better You (3) Concurrency (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (3) Restful Web Service (3) Script (3) regex (3) seo (3) .Net (2) Android Studio (2) Apache (2) Apache Procrun (2) Architecture (2) Batch (2) Bit Operation (2) Build (2) Building Scalable Web Sites (2) C# (2) C/C++ (2) CSV (2) Career (2) Cassandra (2) Distributed (2) Fiddler (2) Firefox (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Life (2) Logging (2) Python (2) Software Issues (2) Storage (2) Text Search (2) xml parser (2) AOP (1) Application Design (1) AspectJ (1) Chrome DevTools (1) Cloud (1) Codility (1) Data Mining (1) Data Structure (1) ExceptionUtils (1) Exif (1) Feature Request (1) FindBugs (1) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Mac (1) Machine Learning (1) Mobile (1) My Plan for 2010 (1) Netbeans (1) Notes (1) Operating System (1) Perl (1) Problems (1) Product Architecture (1) Programming Life (1) Quality (1) Redhat (1) Redis (1) Review (1) RxJava (1) Solutions logs (1) Team Management (1) Thread Dump Analyzer (1) Visualization (1) boilerpipe (1) htm (1) ongoing (1) procrun (1) rss (1)

Popular Posts