2015-02-27 1 views
1

J'ai essayé de planifier le documents4j comme service Windows à l'aide procrun pour RTF à la conversion PDF, mais il ne cesse de lancer l'erreur suivante:Comment programmer le serveur documents4j autonome en tant que service Windows en utilisant procrun?

com.documents4j.throwables.ConversionInputException: The sent input is invalid 
    at com.documents4j.util.Reaction$ConversionInputExceptionBuilder.make(Reaction.java:159) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] 
    at com.documents4j.util.Reaction$ExceptionalReaction.apply(Reaction.java:75) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] 
    at com.documents4j.ws.ConverterNetworkProtocol$Status.resolve(ConverterNetworkProtocol.java:97) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] 
    at com.documents4j.job.WebserviceRequestFutureWrapper.handle(WebserviceRequestFutureWrapper.java:48) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] 
    at com.documents4j.job.WebserviceRequestFutureWrapper.get(WebserviceRequestFutureWrapper.java:38) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] 
    at com.documents4j.job.WebserviceRequestFutureWrapper.get(WebserviceRequestFutureWrapper.java:13) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] 
    at com.documents4j.job.AbstractFutureWrappingPriorityFuture.run(AbstractFutureWrappingPriorityFuture.java:78) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_31] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_31] 
    at java.lang.Thread.run(Unknown Source) [na:1.8.0_31] 

J'ai créé le fichier de chauve-souris suivant pour procrun

@echo off 
 
set SELF=%CD% 
 
set SERVICE_NAME=PCNService 
 
set SERVICE_URL= 
 
set PR_INSTALL=%SELF%\prunsrv.exe 
 
set PRMGR_INSTALL=%SELF%\prunmgr.exe 
 
    
 
@REM Service Log Configuration 
 
set PR_LOGPREFIX=%SERVICE_NAME% 
 
set PR_LOGPATH=%SELF%\logs 
 
set PR_STDOUTPUT=auto 
 
set PR_STDERROR=auto 
 
set PR_LOGLEVEL=Debug 
 
    
 
@REM Path to Java Installation 
 
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_05 
 
set PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll 
 
set PR_CLASSPATH=%SELF%\documents4j-server-standalone-0.3-SNAPSHOT-shaded.jar 
 
    
 
@REM JVM Configuration 
 
set PR_JVMOPTIONS= 
 
@REM Startup Configuration 
 
set JETTY_START_CLASS=com.documents4j.standalone.StandaloneServer 
 

 
set PR_STARTUP=auto 
 
set PR_STARTMODE=java 
 
set PR_STARTCLASS=%JETTY_START_CLASS% 
 
set PR_STARTMETHOD=start 
 
set PR_STARTPARAMS=http://localhost:9998 
 
    
 
@REM Shutdown Configuration 
 
set PR_STOPMODE=java 
 
set PR_STOPCLASS=%JETTY_START_CLASS% 
 
set PR_STOPMETHOD=stop 
 
set PR_STOPPARAMS= 
 

 
if "x%1x" == "xx" goto displayUsage 
 
set SERVICE_CMD=%1 
 
shift 
 
if "x%1x" == "xx" goto checkServiceCmd 
 
:checkServiceCmd 
 
if /i %SERVICE_CMD% == install goto doInstall 
 
if /i %SERVICE_CMD% == delete goto doDelete 
 
if /i %SERVICE_CMD% == stop goto doStop 
 
if /i %SERVICE_CMD% == start goto doStart 
 
if /i %SERVICE_CMD% == monitor goto doMonitor 
 
if /i %SERVICE_CMD% == run goto doRun 
 
if /i %SERVICE_CMD% == console goto doConsole 
 

 
echo Unknown parameter "%SERVICE_CMD%" 
 
:displayUsage 
 
echo. 
 
echo Usage: service.bat install/start/stop/delete 
 
goto end 
 

 
:doInstall 
 
rem Install the service 
 
echo Installing the service '%SERVICE_NAME%' ... 
 
%PR_INSTALL% //IS//%SERVICE_NAME%^
 
    --DisplayName="%SERVICE_NAME%"^
 
    --Install="%PR_INSTALL%"^
 
    --Startup="%PR_STARTUP%"^
 
    --LogPath="%PR_LOGPATH%"^
 
    --LogPrefix="%PR_LOGPREFIX%"^
 
    --LogLevel="%PR_LOGLEVEL%"^
 
    --StdOutput="%PR_STDOUTPUT%"^
 
    --StdError="%PR_STDERROR%"^
 
    --JavaHome="%JAVA_HOME%"^
 
    --Jvm="%PR_JVM%"^
 
    --JvmMs=""^
 
    --JvmMx=""^
 
    --JvmSs=""^
 
    --JvmOptions="%PR_JVMOPTIONS%"^
 
    --Classpath="%PR_CLASSPATH%"^
 
    --StartMode="%PR_STARTMODE%"^
 
    --StartClass="%PR_STARTCLASS%"^
 
    --StartMethod="%PR_STARTMETHOD%"^
 
    --StartParams="%PR_STARTPARAMS%"^
 
    --StopMode="%PR_STOPMODE%"^
 
    --StopClass="%PR_STOPCLASS%"^
 
    --StopMethod="%PR_STOPMETHOD%"^
 
    --StopParams="%PR_STOPPARAMS%"^
 
    --Type interactive 
 
    
 
if not errorlevel 1 goto installed 
 
echo Failed to install "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH% 
 
goto end 
 
    
 
:doStart 
 
rem Starting the service 
 
echo Starting the service '%SERVICE_NAME%' ... 
 
%PR_INSTALL% //ES//%SERVICE_NAME% 
 
if not errorlevel 1 goto started 
 
echo Failed to start "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH% 
 
goto end 
 

 
:doStop 
 
rem Stop the service 
 
echo Stopping the service '%SERVICE_NAME%' ... 
 
%PR_INSTALL% //SS//%SERVICE_NAME% 
 
if not errorlevel 1 goto stopped 
 
echo Failed to stop "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH% 
 
goto end 
 

 
:doDelete 
 
rem Delete the service 
 
echo Deleting the service '%SERVICE_NAME%' ... 
 
%PR_INSTALL% //DS//%SERVICE_NAME% 
 
if not errorlevel 1 goto deleted 
 
echo Failed to delete "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH% 
 
goto end 
 

 
:doMonitor 
 
rem Monitor the service 
 
echo Monitoring the service '%SERVICE_NAME%' ... 
 
echo Look for the service in the system tray. You can modify the properties in the GUI. 
 
%PRMGR_INSTALL% //MR//%SERVICE_NAME% 
 
goto end 
 

 
:doRun 
 
rem Run the service 
 
echo Running the service '%SERVICE_NAME%' ... 
 
%PR_INSTALL% //RS//%SERVICE_NAME% 
 
goto end 
 

 
:doEdit 
 
rem Edit the service 
 
echo Editing the service '%SERVICE_NAME%' ... 
 
%PRMGR_INSTALL% //ES//%SERVICE_NAME% 
 
goto end 
 

 
:doConsole 
 
rem Running the service as console application 
 
%PR_INSTALL% //TS//%SERVICE_NAME% 
 
goto end 
 

 
:installed 
 
echo The Service "%SERVICE_NAME%" has been installed 
 
goto logging 
 
goto end 
 

 
:started 
 
echo The Service "%SERVICE_NAME%" has been started 
 
goto logging 
 
goto end 
 
    
 
:deleted 
 
echo The Service "%SERVICE_NAME%" has been deleted 
 
goto end 
 

 
:stopped 
 
echo The Service "%SERVICE_NAME%" has been stopped 
 
goto logging 
 
goto end 
 

 
:logging 
 
echo Refer to log in %PR_LOGPATH% 
 

 
:end 
 
</code>

Je mesure d'installer avec succès le pot comme service windows et démarrer/arrêter

En outre, lorsque la classe com.documents4j.standalone.StandaloneServer est exécutée via la ligne de commande, les conversions se produisent correctement.

Répondre

2

Avez-vous lu les informations sur l'exécution de documents4j avec Word en tant que service Windows?

documents4j might malfunction when run as a Windows service together with MS Office conversion. Note that MS Office does not officially support execution in a service context. When run as a service, MS Office is always started with MS Window's local service account which does not configure a desktop. However, MS Office expects a desktop to exist in order to run properly. Without such a desktop configuration, MS Office will start up correctly but fail to read any input file. In order to allow MS Office to run in a service context, there are two possible approaches of which the first approach is more recommended:

On a 32-bit system, create the folder C:\Windows\System32\config\systemprofile\Desktop. On a 64-bit system, create the folder C:\Windows\SysWOW64\config\systemprofile\Desktop.

Further information can be found on MSDN. You can manipulate MS Window's registry such that MS Office applications are run with another account than the local service account. This approach is documented on MSDN. Note that this breaks MS Window's sandbox model and imposes additional security threats to the machine that runs MS Office.