a5c254a0bf5bfef67a17ac0d48e1a24def1728b2
[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 \r
100 set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf\r
101 set DEFAULT_JAVA_DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005\r
102 \r
103 if "%LOCAL_CLASSPATH%" == "" goto :KARAF_CLASSPATH_EMPTY\r
104     set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf\r
105     goto :KARAF_CLASSPATH_END\r
106 :KARAF_CLASSPATH_EMPTY\r
107     set CLASSPATH=%KARAF_BASE%\conf\r
108 :KARAF_CLASSPATH_END\r
109 \r
110 rem Setup Karaf Home\r
111 if exist "%KARAF_HOME%\conf\karaf-rc.cmd" call %KARAF_HOME%\conf\karaf-rc.cmd\r
112 if exist "%HOME%\karaf-rc.cmd" call %HOME%\karaf-rc.cmd\r
113 \r
114 rem Support for loading native libraries\r
115 set PATH=%PATH%;%KARAF_BASE%\lib;%KARAF_HOME%\lib\r
116 \r
117 rem Setup the Java Virtual Machine\r
118 if not "%JAVA%" == "" goto :Check_JAVA_END\r
119     if not "%JAVA_HOME%" == "" goto :TryJDKEnd\r
120         call :warn JAVA_HOME not set; results may vary\r
121 :TryJRE\r
122     start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment"\r
123     if not exist __reg1.txt goto :TryJDK\r
124     type __reg1.txt | find "CurrentVersion" > __reg2.txt\r
125     if errorlevel 1 goto :TryJDK\r
126     for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x\r
127     if errorlevel 1 goto :TryJDK\r
128     set JavaTemp=%JavaTemp%##\r
129     set JavaTemp=%JavaTemp:                ##=##%\r
130     set JavaTemp=%JavaTemp:        ##=##%\r
131     set JavaTemp=%JavaTemp:    ##=##%\r
132     set JavaTemp=%JavaTemp:  ##=##%\r
133     set JavaTemp=%JavaTemp: ##=##%\r
134     set JavaTemp=%JavaTemp:##=%\r
135     del __reg1.txt\r
136     del __reg2.txt\r
137     start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\%JavaTemp%"\r
138     if not exist __reg1.txt goto :TryJDK\r
139     type __reg1.txt | find "JavaHome" > __reg2.txt\r
140     if errorlevel 1 goto :TryJDK\r
141     for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x\r
142     if errorlevel 1 goto :TryJDK\r
143     del __reg1.txt\r
144     del __reg2.txt\r
145     goto TryJDKEnd\r
146 :TryJDK\r
147     start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit"\r
148     if not exist __reg1.txt (\r
149         goto TryRegJRE\r
150     )\r
151     type __reg1.txt | find "CurrentVersion" > __reg2.txt\r
152     if errorlevel 1 (\r
153         goto TryRegJRE\r
154     )\r
155     for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x\r
156     if errorlevel 1 (\r
157         goto TryRegJRE\r
158     )\r
159     set JavaTemp=%JavaTemp%##\r
160     set JavaTemp=%JavaTemp:                ##=##%\r
161     set JavaTemp=%JavaTemp:        ##=##%\r
162     set JavaTemp=%JavaTemp:    ##=##%\r
163     set JavaTemp=%JavaTemp:  ##=##%\r
164     set JavaTemp=%JavaTemp: ##=##%\r
165     set JavaTemp=%JavaTemp:##=%\r
166     del __reg1.txt\r
167     del __reg2.txt\r
168     start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\%JavaTemp%"\r
169     if not exist __reg1.txt (\r
170         goto TryRegJRE\r
171     )\r
172     type __reg1.txt | find "JavaHome" > __reg2.txt\r
173     if errorlevel 1 (\r
174         goto TryRegJRE\r
175     )\r
176     for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x\r
177     if errorlevel 1 (\r
178         goto TryRegJRE\r
179     )\r
180     del __reg1.txt\r
181     del __reg2.txt\r
182 :TryRegJRE\r
183     rem try getting the JAVA_HOME from registry\r
184     FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion`) DO (\r
185        set JAVA_VERSION=%%A\r
186     )\r
187     FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\%JAVA_VERSION%" /v JavaHome`) DO (\r
188        set JAVA_HOME=%%A %%B\r
189     )\r
190     if not exist "%JAVA_HOME%" (\r
191        goto TryRegJDK\r
192         )\r
193         goto TryJDKEnd\r
194 :TryRegJDK\r
195     rem try getting the JAVA_HOME from registry\r
196     FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit" /v CurrentVersion`) DO (\r
197        set JAVA_VERSION=%%A\r
198     )\r
199     FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit\%JAVA_VERSION%" /v JavaHome`) DO (\r
200        set JAVA_HOME=%%A %%B\r
201     )\r
202     if not exist "%JAVA_HOME%" (\r
203        call :warn Unable to retrieve JAVA_HOME from Registry\r
204     )\r
205         goto TryJDKEnd\r
206 :TryJDKEnd\r
207     if not exist "%JAVA_HOME%" (\r
208         call :warn JAVA_HOME is not valid: "%JAVA_HOME%"\r
209         goto END\r
210     )\r
211     set JAVA=%JAVA_HOME%\bin\java\r
212 :Check_JAVA_END\r
213 \r
214 if not exist "%JAVA_HOME%\bin\server\jvm.dll" (\r
215     if not exist "%JAVA_HOME%\jre\bin\server\jvm.dll" (\r
216         echo WARNING: Running Karaf on a Java HotSpot Client VM because server-mode is not available.\r
217         echo Install Java Developer Kit to fix this.\r
218         echo For more details see http://java.sun.com/products/hotspot/whitepaper.html#client\r
219         set JAVA_MODE=-client\r
220     )\r
221 )\r
222 \r
223 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
224 \r
225 if not "%ODL_JAVA_SECURITY_PROPERTIES%" == "" (\r
226     set DEFAULT_JAVA_OPTS=-Djava.security.properties="%ODL_JAVA_SECURITY_PROPERTIES%" %DEFAULT_JAVA_OPTS%\r
227 ) else (\r
228     set DEFAULT_JAVA_OPTS=-Djava.security.properties="%KARAF_ETC%\odl.java.security" %DEFAULT_JAVA_OPTS%\r
229 )\r
230 \r
231 rem Check some easily accessible MIN/MAX params for JVM mem usage\r
232 if not "%JAVA_PERM_MEM%" == "" (\r
233     set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:PermSize=%JAVA_PERM_MEM%\r
234 )\r
235 if not "%JAVA_MAX_PERM_MEM%" == "" (\r
236     set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:MaxPermSize=%JAVA_MAX_PERM_MEM%\r
237 )\r
238 \r
239 if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS%\r
240 \r
241 if "%EXTRA_JAVA_OPTS%" == "" goto :KARAF_EXTRA_JAVA_OPTS_END\r
242     set JAVA_OPTS=%JAVA_OPTS% %EXTRA_JAVA_OPTS%\r
243 :KARAF_EXTRA_JAVA_OPTS_END\r
244 \r
245 if "%KARAF_DEBUG%" == "" goto :KARAF_DEBUG_END\r
246     if "%1" == "stop" goto :KARAF_DEBUG_END\r
247     if "%1" == "client" goto :KARAF_DEBUG_END\r
248     rem Use the defaults if JAVA_DEBUG_OPTS was not set\r
249     if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%\r
250 \r
251     set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%\r
252     call :warn Enabling Java debug options: %JAVA_DEBUG_OPTS%\r
253 :KARAF_DEBUG_END\r
254 \r
255 if "%KARAF_PROFILER%" == "" goto :KARAF_PROFILER_END\r
256     set KARAF_PROFILER_SCRIPT=%KARAF_HOME%\conf\profiler\%KARAF_PROFILER%.cmd\r
257 \r
258     if exist "%KARAF_PROFILER_SCRIPT%" goto :KARAF_PROFILER_END\r
259     call :warn Missing configuration for profiler '%KARAF_PROFILER%': %KARAF_PROFILER_SCRIPT%\r
260     goto END\r
261 :KARAF_PROFILER_END\r
262 \r
263 rem Setup the classpath\r
264 pushd "%KARAF_HOME%\lib"\r
265 for %%G in (karaf*.jar) do call:APPEND_TO_CLASSPATH %%G\r
266 popd\r
267 goto CLASSPATH_END\r
268 \r
269 : APPEND_TO_CLASSPATH\r
270 set filename=%~1\r
271 set suffix=%filename:~-4%\r
272 if %suffix% equ .jar set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\lib\%filename%\r
273 goto :EOF\r
274 \r
275 :CLASSPATH_END\r
276 \r
277 rem Execute the JVM or the load the profiler\r
278 if "%KARAF_PROFILER%" == "" goto :RUN\r
279     rem Execute the profiler if it has been configured\r
280     call :warn Loading profiler script: %KARAF_PROFILER_SCRIPT%\r
281     call %KARAF_PROFILER_SCRIPT%\r
282 \r
283 :RUN\r
284     SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true\r
285     SET MAIN=org.apache.karaf.main.Main\r
286     SET SHIFT=false\r
287 \r
288 :RUN_LOOP\r
289     if "%1" == "stop" goto :EXECUTE_STOP\r
290     if "%1" == "status" goto :EXECUTE_STATUS\r
291     if "%1" == "console" goto :EXECUTE_CONSOLE\r
292     if "%1" == "server" goto :EXECUTE_SERVER\r
293     if "%1" == "client" goto :EXECUTE_CLIENT\r
294     if "%1" == "clean" goto :EXECUTE_CLEAN\r
295     if "%1" == "debug" goto :EXECUTE_DEBUG\r
296     goto :EXECUTE\r
297 \r
298 :EXECUTE_STOP\r
299     SET MAIN=org.apache.karaf.main.Stop\r
300     shift\r
301     goto :RUN_LOOP\r
302 \r
303 :EXECUTE_STATUS\r
304     SET MAIN=org.apache.karaf.main.Status\r
305     shift\r
306     goto :RUN_LOOP\r
307 \r
308 :EXECUTE_CONSOLE\r
309     shift\r
310     goto :RUN_LOOP\r
311 \r
312 :EXECUTE_SERVER\r
313     SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true\r
314     shift\r
315     goto :RUN_LOOP\r
316 \r
317 :EXECUTE_CLIENT\r
318     SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false\r
319     shift\r
320     goto :RUN_LOOP\r
321 \r
322 :EXECUTE_CLEAN\r
323     rmdir /S /Q "%KARAF_DATA%"\r
324     shift\r
325     goto :RUN_LOOP\r
326 \r
327 :EXECUTE_DEBUG\r
328     if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%\r
329     set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%\r
330     shift\r
331     goto :RUN_LOOP\r
332 \r
333 :EXECUTE\r
334     SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8\r
335     rem Execute the Java Virtual Machine\r
336     cd "%KARAF_BASE%"\r
337     "%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
338 \r
339 rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\r
340 \r
341 :END\r
342 \r
343 endlocal\r
344 \r
345 if not "%PAUSE%" == "" pause\r
346 \r
347 :END_NO_PAUSE\r