a45087730f15e3d1a97b4c65a82cc5c8a9ffd022
[controller.git] / karaf / opendaylight-karaf-resources / src / main / resources / bin / karaf.bat
1 @echo off\r
2 rem\r
3 rem\r
4 rem    Licensed to the Apache Software Foundation (ASF) under one or more\r
5 rem    contributor license agreements.  See the NOTICE file distributed with\r
6 rem    this work for additional information regarding copyright ownership.\r
7 rem    The ASF licenses this file to You under the Apache License, Version 2.0\r
8 rem    (the "License"); you may not use this file except in compliance with\r
9 rem    the License.  You may obtain a copy of the License at\r
10 rem\r
11 rem       http://www.apache.org/licenses/LICENSE-2.0\r
12 rem\r
13 rem    Unless required by applicable law or agreed to in writing, software\r
14 rem    distributed under the License is distributed on an "AS IS" BASIS,\r
15 rem    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16 rem    See the License for the specific language governing permissions and\r
17 rem    limitations under the License.\r
18 rem\r
19 \r
20 if not "%ECHO%" == "" echo %ECHO%\r
21 \r
22 setlocal\r
23 set DIRNAME=%~dp0%\r
24 set PROGNAME=%~nx0%\r
25 set ARGS=%*\r
26 \r
27 rem Sourcing environment settings for karaf similar to tomcats setenv\r
28 SET KARAF_SCRIPT="karaf.bat"\r
29 if exist "%DIRNAME%setenv.bat" (\r
30   call "%DIRNAME%setenv.bat"\r
31 )\r
32 \r
33 rem Check console window title. Set to Karaf by default\r
34 if not "%KARAF_TITLE%" == "" (\r
35     title %KARAF_TITLE%\r
36 ) else (\r
37     title Karaf\r
38 )\r
39 \r
40 rem Check/Set up some easily accessible MIN/MAX params for JVM mem usage\r
41 if "%JAVA_MIN_MEM%" == "" (\r
42     set JAVA_MIN_MEM=128M\r
43 )\r
44 if "%JAVA_MAX_MEM%" == "" (\r
45     set JAVA_MAX_MEM=512M\r
46 )\r
47 \r
48 goto BEGIN\r
49 \r
50 :warn\r
51     echo %PROGNAME%: %*\r
52 goto :EOF\r
53 \r
54 :BEGIN\r
55 \r
56 rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\r
57 \r
58 if not "%KARAF_HOME%" == "" (\r
59     call :warn Ignoring predefined value for KARAF_HOME\r
60 )\r
61 set KARAF_HOME=%DIRNAME%..\r
62 if not exist "%KARAF_HOME%" (\r
63     call :warn KARAF_HOME is not valid: "%KARAF_HOME%"\r
64     goto END\r
65 )\r
66 \r
67 if not "%KARAF_BASE%" == "" (\r
68     if not exist "%KARAF_BASE%" (\r
69        call :warn KARAF_BASE is not valid: "%KARAF_BASE%"\r
70        goto END\r
71     )\r
72 )\r
73 if "%KARAF_BASE%" == "" (\r
74   set "KARAF_BASE=%KARAF_HOME%"\r
75 )\r
76 \r
77 if not "%KARAF_DATA%" == "" (\r
78     if not exist "%KARAF_DATA%" (\r
79         call :warn KARAF_DATA is not valid: "%KARAF_DATA%"\r
80         goto END\r
81     )\r
82 )\r
83 if "%KARAF_DATA%" == "" (\r
84     set "KARAF_DATA=%KARAF_BASE%\data"\r
85 )\r
86 \r
87 if not "%KARAF_ETC%" == "" (\r
88     if not exist "%KARAF_ETC%" (\r
89         call :warn KARAF_ETC is not valid: "%KARAF_ETC%"\r
90         goto END\r
91     )\r
92 )\r
93 if "%KARAF_ETC%" == "" (\r
94     set "KARAF_ETC=%KARAF_BASE%\etc"\r
95 )\r
96 \r
97 set LOCAL_CLASSPATH=%CLASSPATH%\r
98 set JAVA_MODE=-server\r
99 if not exist "%JAVA_HOME%\bin\server\jvm.dll" (\r
100     if not exist "%JAVA_HOME%\jre\bin\server\jvm.dll" (\r
101         echo WARNING: Running karaf on a Java HotSpot Client VM because server-mode is not available.\r
102         echo Install Java Developer Kit to fix this.\r
103         echo For more details see http://java.sun.com/products/hotspot/whitepaper.html#client\r
104         set JAVA_MODE=-client\r
105     )\r
106 )\r
107 set DEFAULT_JAVA_OPTS=%JAVA_MODE% -Xms%JAVA_MIN_MEM% -Xmx%JAVA_MAX_MEM% -Dderby.system.home="%KARAF_DATA%\derby" -Dderby.storage.fileSyncTransactionLog=true -Dcom.sun.management.jmxremote  -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass\r
108 \r
109 rem Check some easily accessible MIN/MAX params for JVM mem usage\r
110 if not "%JAVA_PERM_MEM%" == "" (\r
111     set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:PermSize=%JAVA_PERM_MEM%\r
112 )\r
113 if not "%JAVA_MAX_PERM_MEM%" == "" (\r
114     set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:MaxPermSize=%JAVA_MAX_PERM_MEM%\r
115 )\r
116 \r
117 set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf\r
118 set DEFAULT_JAVA_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005\r
119 \r
120 if "%LOCAL_CLASSPATH%" == "" goto :KARAF_CLASSPATH_EMPTY\r
121     set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf\r
122     goto :KARAF_CLASSPATH_END\r
123 :KARAF_CLASSPATH_EMPTY\r
124     set CLASSPATH=%KARAF_BASE%\conf\r
125 :KARAF_CLASSPATH_END\r
126 \r
127 rem Setup Karaf Home\r
128 if exist "%KARAF_HOME%\conf\karaf-rc.cmd" call %KARAF_HOME%\conf\karaf-rc.cmd\r
129 if exist "%HOME%\karaf-rc.cmd" call %HOME%\karaf-rc.cmd\r
130 \r
131 rem Support for loading native libraries\r
132 set PATH=%PATH%;%KARAF_BASE%\lib;%KARAF_HOME%\lib\r
133 \r
134 rem Setup the Java Virtual Machine\r
135 if not "%JAVA%" == "" goto :Check_JAVA_END\r
136     if not "%JAVA_HOME%" == "" goto :TryJDKEnd\r
137         call :warn JAVA_HOME not set; results may vary\r
138 :TryJRE\r
139     start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment"\r
140     if not exist __reg1.txt goto :TryJDK\r
141     type __reg1.txt | find "CurrentVersion" > __reg2.txt\r
142     if errorlevel 1 goto :TryJDK\r
143     for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x\r
144     if errorlevel 1 goto :TryJDK\r
145     set JavaTemp=%JavaTemp%##\r
146     set JavaTemp=%JavaTemp:                ##=##%\r
147     set JavaTemp=%JavaTemp:        ##=##%\r
148     set JavaTemp=%JavaTemp:    ##=##%\r
149     set JavaTemp=%JavaTemp:  ##=##%\r
150     set JavaTemp=%JavaTemp: ##=##%\r
151     set JavaTemp=%JavaTemp:##=%\r
152     del __reg1.txt\r
153     del __reg2.txt\r
154     start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\%JavaTemp%"\r
155     if not exist __reg1.txt goto :TryJDK\r
156     type __reg1.txt | find "JavaHome" > __reg2.txt\r
157     if errorlevel 1 goto :TryJDK\r
158     for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x\r
159     if errorlevel 1 goto :TryJDK\r
160     del __reg1.txt\r
161     del __reg2.txt\r
162     goto TryJDKEnd\r
163 :TryJDK\r
164     start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit"\r
165     if not exist __reg1.txt (\r
166         goto TryRegJRE\r
167     )\r
168     type __reg1.txt | find "CurrentVersion" > __reg2.txt\r
169     if errorlevel 1 (\r
170         goto TryRegJRE\r
171     )\r
172     for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x\r
173     if errorlevel 1 (\r
174         goto TryRegJRE\r
175     )\r
176     set JavaTemp=%JavaTemp%##\r
177     set JavaTemp=%JavaTemp:                ##=##%\r
178     set JavaTemp=%JavaTemp:        ##=##%\r
179     set JavaTemp=%JavaTemp:    ##=##%\r
180     set JavaTemp=%JavaTemp:  ##=##%\r
181     set JavaTemp=%JavaTemp: ##=##%\r
182     set JavaTemp=%JavaTemp:##=%\r
183     del __reg1.txt\r
184     del __reg2.txt\r
185     start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\%JavaTemp%"\r
186     if not exist __reg1.txt (\r
187         goto TryRegJRE\r
188     )\r
189     type __reg1.txt | find "JavaHome" > __reg2.txt\r
190     if errorlevel 1 (\r
191         goto TryRegJRE\r
192     )\r
193     for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x\r
194     if errorlevel 1 (\r
195         goto TryRegJRE\r
196     )\r
197     del __reg1.txt\r
198     del __reg2.txt\r
199 :TryRegJRE\r
200     rem try getting the JAVA_HOME from registry\r
201     FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion`) DO (\r
202        set JAVA_VERSION=%%A\r
203     )\r
204     FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\%JAVA_VERSION%" /v JavaHome`) DO (\r
205        set JAVA_HOME=%%A %%B\r
206     )\r
207     if not exist "%JAVA_HOME%" (\r
208        goto TryRegJDK\r
209     )\r
210        goto TryJDKEnd\r
211 :TryRegJDK\r
212     rem try getting the JAVA_HOME from registry\r
213     FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit" /v CurrentVersion`) DO (\r
214        set JAVA_VERSION=%%A\r
215     )\r
216     FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit\%JAVA_VERSION%" /v JavaHome`) DO (\r
217        set JAVA_HOME=%%A %%B\r
218     )\r
219     if not exist "%JAVA_HOME%" (\r
220        call :warn Unable to retrieve JAVA_HOME from Registry\r
221     )\r
222         goto TryJDKEnd\r
223 :TryJDKEnd\r
224     if not exist "%JAVA_HOME%" (\r
225         call :warn JAVA_HOME is not valid: "%JAVA_HOME%"\r
226         goto END\r
227     )\r
228     set JAVA=%JAVA_HOME%\bin\java\r
229 :Check_JAVA_END\r
230 \r
231 if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS%\r
232 \r
233 if "%KARAF_DEBUG%" == "" goto :KARAF_DEBUG_END\r
234     if "%1" == "stop" goto :KARAF_DEBUG_END\r
235     if "%1" == "client" goto :KARAF_DEBUG_END\r
236     rem Use the defaults if JAVA_DEBUG_OPTS was not set\r
237     if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%\r
238 \r
239     set "JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%"\r
240     call :warn Enabling Java debug options: %JAVA_DEBUG_OPTS%\r
241 :KARAF_DEBUG_END\r
242 \r
243 if "%KARAF_PROFILER%" == "" goto :KARAF_PROFILER_END\r
244     set KARAF_PROFILER_SCRIPT=%KARAF_HOME%\conf\profiler\%KARAF_PROFILER%.cmd\r
245 \r
246     if exist "%KARAF_PROFILER_SCRIPT%" goto :KARAF_PROFILER_END\r
247     call :warn Missing configuration for profiler '%KARAF_PROFILER%': %KARAF_PROFILER_SCRIPT%\r
248     goto END\r
249 :KARAF_PROFILER_END\r
250 \r
251 rem Setup the classpath\r
252 pushd "%KARAF_HOME%\lib"\r
253 for %%G in (karaf*.jar) do call:APPEND_TO_CLASSPATH %%G\r
254 popd\r
255 goto CLASSPATH_END\r
256 \r
257 : APPEND_TO_CLASSPATH\r
258 set filename=%~1\r
259 set suffix=%filename:~-4%\r
260 if %suffix% equ .jar set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\lib\%filename%\r
261 goto :EOF\r
262 \r
263 :CLASSPATH_END\r
264 \r
265 rem Execute the JVM or the load the profiler\r
266 if "%KARAF_PROFILER%" == "" goto :RUN\r
267     rem Execute the profiler if it has been configured\r
268     call :warn Loading profiler script: %KARAF_PROFILER_SCRIPT%\r
269     call %KARAF_PROFILER_SCRIPT%\r
270 \r
271 :RUN\r
272     SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true\r
273     SET MAIN=org.apache.karaf.main.Main\r
274     SET SHIFT=false\r
275 \r
276 :RUN_LOOP\r
277     if "%1" == "stop" goto :EXECUTE_STOP\r
278     if "%1" == "status" goto :EXECUTE_STATUS\r
279     if "%1" == "console" goto :EXECUTE_CONSOLE\r
280     if "%1" == "server" goto :EXECUTE_SERVER\r
281     if "%1" == "client" goto :EXECUTE_CLIENT\r
282     if "%1" == "clean" goto :EXECUTE_CLEAN\r
283     if "%1" == "debug" goto :EXECUTE_DEBUG\r
284     goto :EXECUTE\r
285 \r
286 :EXECUTE_STOP\r
287     SET MAIN=org.apache.karaf.main.Stop\r
288     shift\r
289     goto :RUN_LOOP\r
290 \r
291 :EXECUTE_STATUS\r
292     SET MAIN=org.apache.karaf.main.Status\r
293     shift\r
294     goto :RUN_LOOP\r
295 \r
296 :EXECUTE_CONSOLE\r
297     shift\r
298     goto :RUN_LOOP\r
299 \r
300 :EXECUTE_SERVER\r
301     SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true\r
302     shift\r
303     goto :RUN_LOOP\r
304 \r
305 :EXECUTE_CLIENT\r
306     SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false\r
307     shift\r
308     goto :RUN_LOOP\r
309 \r
310 :EXECUTE_CLEAN\r
311     rmdir /S /Q "%KARAF_DATA%"\r
312     shift\r
313     goto :RUN_LOOP\r
314 \r
315 :EXECUTE_DEBUG\r
316     if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%\r
317     set "JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%"\r
318     shift\r
319     goto :RUN_LOOP\r
320 \r
321 :EXECUTE\r
322     SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8\r
323     rem Execute the Java Virtual Machine\r
324     cd "%KARAF_BASE%"\r
325     "%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%" -Djava.endorsed.dirs="%JAVA_HOME%\jre\lib\endorsed;%JAVA_HOME%\lib\endorsed;%KARAF_HOME%\lib\endorsed" -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\ext;%KARAF_HOME%\lib\ext" -Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%" -Dkaraf.base="%KARAF_BASE%" -Dkaraf.etc="%KARAF_ETC%" -Djava.io.tmpdir="%KARAF_DATA%\tmp" -Dkaraf.data="%KARAF_DATA%" -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" %KARAF_OPTS% %MAIN% %ARGS%\r
326 \r
327 rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\r
328 \r
329 :END\r
330 \r
331 endlocal\r
332 \r
333 if not "%PAUSE%" == "" pause\r
334 \r
335 :END_NO_PAUSE\r
336 \r