Modified:
websites/production/commons/content/proper/commons-daemon/apidocs/src-html/org/apache/commons/daemon/support/DaemonWrapper.html
==============================================================================
---
websites/production/commons/content/proper/commons-daemon/apidocs/src-html/org/apache/commons/daemon/support/DaemonWrapper.html
(original)
+++
websites/production/commons/content/proper/commons-daemon/apidocs/src-html/org/apache/commons/daemon/support/DaemonWrapper.html
Tue Jan 14 12:30:25 2025
@@ -1,12 +1,12 @@
<!DOCTYPE HTML>
-<html lang="en">
+<html lang>
<head>
-<!-- Generated by javadoc (17) -->
+<!-- Generated by javadoc (23) -->
<title>Source code</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="source: package:
org.apache.commons.daemon.support, class: DaemonWrapper">
<meta name="generator" content="javadoc/SourceToHTMLConverter">
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css"
title="Style">
+<link rel="stylesheet" type="text/css"
href="../../../../../../resource-files/stylesheet.css" title="Style">
</head>
<body class="source-page">
<main role="main">
@@ -60,242 +60,245 @@
<span class="source-line-no">047</span><span id="line-47"> private final
Invoker startup;</span>
<span class="source-line-no">048</span><span id="line-48"> private final
Invoker shutdown;</span>
<span class="source-line-no">049</span><span id="line-49"></span>
-<span class="source-line-no">050</span><span id="line-50"> public
DaemonWrapper()</span>
-<span class="source-line-no">051</span><span id="line-51"> {</span>
-<span class="source-line-no">052</span><span id="line-52"> config =
new DaemonConfiguration();</span>
-<span class="source-line-no">053</span><span id="line-53"> startup =
new Invoker();</span>
-<span class="source-line-no">054</span><span id="line-54"> shutdown =
new Invoker();</span>
-<span class="source-line-no">055</span><span id="line-55"> }</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57"> /**</span>
-<span class="source-line-no">058</span><span id="line-58"> * Called from
DaemonLoader on init stage.</span>
-<span class="source-line-no">059</span><span id="line-59"> *
<p></span>
-<span class="source-line-no">060</span><span id="line-60"> * Accepts the
following configuration arguments:</span>
-<span class="source-line-no">061</span><span id="line-61"> *
<ul></span>
-<span class="source-line-no">062</span><span id="line-62"> *
<li>-daemon-properties: - load DaemonConfiguration properties from the
specified file to act as defaults</li></span>
-<span class="source-line-no">063</span><span id="line-63"> *
<li>-start: set start class name</li></span>
-<span class="source-line-no">064</span><span id="line-64"> *
<li>-start-method: set start method name</li></span>
-<span class="source-line-no">065</span><span id="line-65"> *
<li>-stop: set stop class name</li></span>
-<span class="source-line-no">066</span><span id="line-66"> *
<li>-stop-method: set stop method name</li></span>
-<span class="source-line-no">067</span><span id="line-67"> *
<li>-stop-argument: set optional argument to stop method</li></span>
-<span class="source-line-no">068</span><span id="line-68"> *
<li>Anything else is treated as a startup argument</li></span>
-<span class="source-line-no">069</span><span id="line-69"> *
</ul></span>
-<span class="source-line-no">070</span><span id="line-70"> *
<p></span>
-<span class="source-line-no">071</span><span id="line-71"> * The following
"-daemon-properties" are recognized:</span>
-<span class="source-line-no">072</span><span id="line-72"> *
<ul></span>
-<span class="source-line-no">073</span><span id="line-73"> *
<li>args (startup argument)</li></span>
-<span class="source-line-no">074</span><span id="line-74"> *
<li>start</li></span>
-<span class="source-line-no">075</span><span id="line-75"> *
<li>start.method</li></span>
-<span class="source-line-no">076</span><span id="line-76"> *
<li>stop</li></span>
-<span class="source-line-no">077</span><span id="line-77"> *
<li>stop.method</li></span>
-<span class="source-line-no">078</span><span id="line-78"> *
<li>stop.args</li></span>
-<span class="source-line-no">079</span><span id="line-79"> *
</ul></span>
-<span class="source-line-no">080</span><span id="line-80"> * These are
used to set the corresponding item if it has not already been</span>
-<span class="source-line-no">081</span><span id="line-81"> * set by the
command arguments. <b>However, note that args and stop.args are</span>
-<span class="source-line-no">082</span><span id="line-82"> * appended to
any existing values.</b></span>
-<span class="source-line-no">083</span><span id="line-83"> */</span>
-<span class="source-line-no">084</span><span id="line-84"> @Override</span>
-<span class="source-line-no">085</span><span id="line-85"> public void
init(final DaemonContext context)</span>
-<span class="source-line-no">086</span><span id="line-86"> throws
Exception</span>
-<span class="source-line-no">087</span><span id="line-87"> {</span>
-<span class="source-line-no">088</span><span id="line-88"> final
String[] args = context.getArguments();</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90"> if (args !=
null) {</span>
-<span class="source-line-no">091</span><span id="line-91"> int
i;</span>
-<span class="source-line-no">092</span><span id="line-92"> // Parse
our arguments and remove them</span>
-<span class="source-line-no">093</span><span id="line-93"> // from
the final argument array we are</span>
-<span class="source-line-no">094</span><span id="line-94"> //
passing to our child.</span>
-<span class="source-line-no">095</span><span id="line-95">
arguments:</span>
-<span class="source-line-no">096</span><span id="line-96"> for (i =
0; i < args.length; i++) {</span>
-<span class="source-line-no">097</span><span id="line-97"> if
(args[i].equals("--")) {</span>
-<span class="source-line-no">098</span><span id="line-98">
// Done with argument processing</span>
-<span class="source-line-no">099</span><span id="line-99">
break;</span>
-<span class="source-line-no">100</span><span id="line-100">
}</span>
-<span class="source-line-no">101</span><span id="line-101">
switch (args[i]) {</span>
-<span class="source-line-no">102</span><span id="line-102">
case "-daemon-properties":</span>
-<span class="source-line-no">103</span><span id="line-103">
if (++i == args.length) {</span>
-<span class="source-line-no">104</span><span id="line-104">
throw new IllegalArgumentException(args[i - 1]);</span>
-<span class="source-line-no">105</span><span id="line-105">
}</span>
-<span class="source-line-no">106</span><span id="line-106">
configFileName = args[i];</span>
-<span class="source-line-no">107</span><span id="line-107">
break;</span>
-<span class="source-line-no">108</span><span id="line-108">
case "-start":</span>
-<span class="source-line-no">109</span><span id="line-109">
if (++i == args.length) {</span>
-<span class="source-line-no">110</span><span id="line-110">
throw new IllegalArgumentException(args[i - 1]);</span>
-<span class="source-line-no">111</span><span id="line-111">
}</span>
-<span class="source-line-no">112</span><span id="line-112">
startup.setClassName(args[i]);</span>
-<span class="source-line-no">113</span><span id="line-113">
break;</span>
-<span class="source-line-no">114</span><span id="line-114">
case "-start-method":</span>
-<span class="source-line-no">115</span><span id="line-115">
if (++i == args.length) {</span>
-<span class="source-line-no">116</span><span id="line-116">
throw new IllegalArgumentException(args[i - 1]);</span>
-<span class="source-line-no">117</span><span id="line-117">
}</span>
-<span class="source-line-no">118</span><span id="line-118">
startup.setMethodName(args[i]);</span>
-<span class="source-line-no">119</span><span id="line-119">
break;</span>
-<span class="source-line-no">120</span><span id="line-120">
case "-stop":</span>
-<span class="source-line-no">121</span><span id="line-121">
if (++i == args.length) {</span>
-<span class="source-line-no">122</span><span id="line-122">
throw new IllegalArgumentException(args[i - 1]);</span>
-<span class="source-line-no">123</span><span id="line-123">
}</span>
-<span class="source-line-no">124</span><span id="line-124">
shutdown.setClassName(args[i]);</span>
-<span class="source-line-no">125</span><span id="line-125">
break;</span>
-<span class="source-line-no">126</span><span id="line-126">
case "-stop-method":</span>
-<span class="source-line-no">127</span><span id="line-127">
if (++i == args.length) {</span>
-<span class="source-line-no">128</span><span id="line-128">
throw new IllegalArgumentException(args[i - 1]);</span>
-<span class="source-line-no">129</span><span id="line-129">
}</span>
-<span class="source-line-no">130</span><span id="line-130">
shutdown.setMethodName(args[i]);</span>
-<span class="source-line-no">131</span><span id="line-131">
break;</span>
-<span class="source-line-no">132</span><span id="line-132">
case "-stop-argument":</span>
-<span class="source-line-no">133</span><span id="line-133">
if (++i == args.length) {</span>
-<span class="source-line-no">134</span><span id="line-134">
throw new IllegalArgumentException(args[i - 1]);</span>
-<span class="source-line-no">135</span><span id="line-135">
}</span>
-<span class="source-line-no">136</span><span id="line-136">
final String[] aa = new String[1];</span>
-<span class="source-line-no">137</span><span id="line-137">
aa[0] = args[i];</span>
-<span class="source-line-no">138</span><span id="line-138">
shutdown.addArguments(aa);</span>
-<span class="source-line-no">139</span><span id="line-139">
break;</span>
-<span class="source-line-no">140</span><span id="line-140">
default:</span>
-<span class="source-line-no">141</span><span id="line-141">
// This is not our option.</span>
-<span class="source-line-no">142</span><span id="line-142">
// Everything else will be forwarded to the main</span>
-<span class="source-line-no">143</span><span id="line-143">
break arguments;</span>
-<span class="source-line-no">144</span><span id="line-144">
}</span>
-<span class="source-line-no">145</span><span id="line-145"> }</span>
-<span class="source-line-no">146</span><span id="line-146"> if
(args.length > i) {</span>
-<span class="source-line-no">147</span><span id="line-147">
final String[] copy = new String[args.length - i];</span>
-<span class="source-line-no">148</span><span id="line-148">
System.arraycopy(args, i, copy, 0, copy.length);</span>
-<span class="source-line-no">149</span><span id="line-149">
startup.addArguments(copy);</span>
-<span class="source-line-no">150</span><span id="line-150"> }</span>
-<span class="source-line-no">151</span><span id="line-151"> }</span>
-<span class="source-line-no">152</span><span id="line-152"> if
(config.load(configFileName)) {</span>
-<span class="source-line-no">153</span><span id="line-153"> //
Setup params if not set via cmdline.</span>
-<span class="source-line-no">154</span><span id="line-154">
startup.setClassName(config.getProperty(START_CLASS));</span>
-<span class="source-line-no">155</span><span id="line-155">
startup.setMethodName(config.getProperty(START_METHOD));</span>
-<span class="source-line-no">156</span><span id="line-156"> //
Merge the config with command line arguments</span>
-<span class="source-line-no">157</span><span id="line-157">
startup.addArguments(config.getPropertyArray(ARGS));</span>
-<span class="source-line-no">158</span><span id="line-158"></span>
-<span class="source-line-no">159</span><span id="line-159">
shutdown.setClassName(config.getProperty(STOP_CLASS));</span>
-<span class="source-line-no">160</span><span id="line-160">
shutdown.setMethodName(config.getProperty(STOP_METHOD));</span>
-<span class="source-line-no">161</span><span id="line-161">
shutdown.addArguments(config.getPropertyArray(STOP_ARGS));</span>
-<span class="source-line-no">162</span><span id="line-162"> }</span>
-<span class="source-line-no">163</span><span id="line-163">
startup.validate();</span>
-<span class="source-line-no">164</span><span id="line-164">
shutdown.validate();</span>
-<span class="source-line-no">165</span><span id="line-165"> }</span>
-<span class="source-line-no">166</span><span id="line-166"></span>
-<span class="source-line-no">167</span><span id="line-167"> /**</span>
-<span class="source-line-no">168</span><span id="line-168"> */</span>
-<span class="source-line-no">169</span><span id="line-169"> @Override</span>
-<span class="source-line-no">170</span><span id="line-170"> public void
start()</span>
-<span class="source-line-no">171</span><span id="line-171"> throws
Exception</span>
-<span class="source-line-no">172</span><span id="line-172"> {</span>
-<span class="source-line-no">173</span><span id="line-173">
startup.invoke();</span>
-<span class="source-line-no">174</span><span id="line-174"> }</span>
-<span class="source-line-no">175</span><span id="line-175"></span>
-<span class="source-line-no">176</span><span id="line-176"> /**</span>
-<span class="source-line-no">177</span><span id="line-177"> */</span>
-<span class="source-line-no">178</span><span id="line-178"> @Override</span>
-<span class="source-line-no">179</span><span id="line-179"> public void
stop()</span>
-<span class="source-line-no">180</span><span id="line-180"> throws
Exception</span>
-<span class="source-line-no">181</span><span id="line-181"> {</span>
-<span class="source-line-no">182</span><span id="line-182">
shutdown.invoke();</span>
-<span class="source-line-no">183</span><span id="line-183"> }</span>
-<span class="source-line-no">184</span><span id="line-184"></span>
-<span class="source-line-no">185</span><span id="line-185"> /**</span>
-<span class="source-line-no">186</span><span id="line-186"> */</span>
-<span class="source-line-no">187</span><span id="line-187"> @Override</span>
-<span class="source-line-no">188</span><span id="line-188"> public void
destroy()</span>
-<span class="source-line-no">189</span><span id="line-189"> {</span>
-<span class="source-line-no">190</span><span id="line-190"> // Nothing
for the moment</span>
-<span class="source-line-no">191</span><span id="line-191">
System.err.println("DaemonWrapper: instance " + this.hashCode() + "
destroy");</span>
-<span class="source-line-no">192</span><span id="line-192"> }</span>
-<span class="source-line-no">193</span><span id="line-193"></span>
-<span class="source-line-no">194</span><span id="line-194"> // Internal
class for wrapping the start/stop methods</span>
-<span class="source-line-no">195</span><span id="line-195"> static class
Invoker</span>
-<span class="source-line-no">196</span><span id="line-196"> {</span>
-<span class="source-line-no">197</span><span id="line-197"> private
String name;</span>
-<span class="source-line-no">198</span><span id="line-198"> private
String call;</span>
-<span class="source-line-no">199</span><span id="line-199"> private
String[] args;</span>
-<span class="source-line-no">200</span><span id="line-200"> private
Method inst;</span>
-<span class="source-line-no">201</span><span id="line-201"> private
Class<?> main;</span>
-<span class="source-line-no">202</span><span id="line-202"></span>
-<span class="source-line-no">203</span><span id="line-203"> protected
Invoker()</span>
-<span class="source-line-no">204</span><span id="line-204"> {</span>
-<span class="source-line-no">205</span><span id="line-205"> }</span>
-<span class="source-line-no">206</span><span id="line-206"></span>
-<span class="source-line-no">207</span><span id="line-207"> protected
void setClassName(final String name)</span>
-<span class="source-line-no">208</span><span id="line-208"> {</span>
-<span class="source-line-no">209</span><span id="line-209"> if
(this.name == null) {</span>
-<span class="source-line-no">210</span><span id="line-210">
this.name = name;</span>
-<span class="source-line-no">211</span><span id="line-211"> }</span>
-<span class="source-line-no">212</span><span id="line-212"> }</span>
-<span class="source-line-no">213</span><span id="line-213"> protected
void setMethodName(final String name)</span>
-<span class="source-line-no">214</span><span id="line-214"> {</span>
-<span class="source-line-no">215</span><span id="line-215"> if
(this.call == null) {</span>
-<span class="source-line-no">216</span><span id="line-216">
this.call = name;</span>
-<span class="source-line-no">217</span><span id="line-217"> }</span>
-<span class="source-line-no">218</span><span id="line-218"> }</span>
-<span class="source-line-no">219</span><span id="line-219"> protected
void addArguments(final String[] args)</span>
-<span class="source-line-no">220</span><span id="line-220"> {</span>
-<span class="source-line-no">221</span><span id="line-221"> if
(args != null) {</span>
-<span class="source-line-no">222</span><span id="line-222">
final ArrayList<String> aa = new ArrayList<>();</span>
-<span class="source-line-no">223</span><span id="line-223"> if
(this.args != null) {</span>
-<span class="source-line-no">224</span><span id="line-224">
aa.addAll(Arrays.asList(this.args));</span>
-<span class="source-line-no">225</span><span id="line-225">
}</span>
-<span class="source-line-no">226</span><span id="line-226">
aa.addAll(Arrays.asList(args));</span>
-<span class="source-line-no">227</span><span id="line-227">
this.args = aa.toArray(DaemonConfiguration.EMPTY_STRING_ARRAY);</span>
-<span class="source-line-no">228</span><span id="line-228"> }</span>
-<span class="source-line-no">229</span><span id="line-229"> }</span>
-<span class="source-line-no">230</span><span id="line-230"></span>
-<span class="source-line-no">231</span><span id="line-231"> protected
void invoke()</span>
-<span class="source-line-no">232</span><span id="line-232"> throws
Exception</span>
-<span class="source-line-no">233</span><span id="line-233"> {</span>
-<span class="source-line-no">234</span><span id="line-234"> if
(name.equals("System") && call.equals("exit")) {</span>
-<span class="source-line-no">235</span><span id="line-235"> //
Just call a System.exit()</span>
-<span class="source-line-no">236</span><span id="line-236"> //
The start method was probably installed</span>
-<span class="source-line-no">237</span><span id="line-237"> //
a shutdown hook.</span>
-<span class="source-line-no">238</span><span id="line-238">
System.exit(0);</span>
-<span class="source-line-no">239</span><span id="line-239"> }</span>
-<span class="source-line-no">240</span><span id="line-240"> else
{</span>
-<span class="source-line-no">241</span><span id="line-241">
Object obj = null;</span>
-<span class="source-line-no">242</span><span id="line-242"> if
((inst.getModifiers() & Modifier.STATIC) == 0) {</span>
-<span class="source-line-no">243</span><span id="line-243">
// We only need object instance for non-static methods.</span>
-<span class="source-line-no">244</span><span id="line-244">
obj = main.getConstructor().newInstance();</span>
-<span class="source-line-no">245</span><span id="line-245">
}</span>
-<span class="source-line-no">246</span><span id="line-246">
final Object[] arg = new Object[1];</span>
-<span class="source-line-no">247</span><span id="line-247"></span>
-<span class="source-line-no">248</span><span id="line-248">
arg[0] = args;</span>
-<span class="source-line-no">249</span><span id="line-249">
inst.invoke(obj, arg);</span>
-<span class="source-line-no">250</span><span id="line-250"> }</span>
-<span class="source-line-no">251</span><span id="line-251"> }</span>
-<span class="source-line-no">252</span><span id="line-252"> // Load the
class using reflection</span>
-<span class="source-line-no">253</span><span id="line-253"> protected
void validate()</span>
-<span class="source-line-no">254</span><span id="line-254"> throws
Exception</span>
-<span class="source-line-no">255</span><span id="line-255"> {</span>
-<span class="source-line-no">256</span><span id="line-256"> /*
Check the class name */</span>
-<span class="source-line-no">257</span><span id="line-257"> if
(name == null) {</span>
-<span class="source-line-no">258</span><span id="line-258">
name = "System";</span>
-<span class="source-line-no">259</span><span id="line-259">
call = "exit";</span>
-<span class="source-line-no">260</span><span id="line-260">
return;</span>
-<span class="source-line-no">261</span><span id="line-261"> }</span>
-<span class="source-line-no">262</span><span id="line-262"> if
(args == null) {</span>
-<span class="source-line-no">263</span><span id="line-263">
args = new String[0];</span>
+<span class="source-line-no">050</span><span id="line-50"> /**</span>
+<span class="source-line-no">051</span><span id="line-51"> * Constructs a
new initialized instance.</span>
+<span class="source-line-no">052</span><span id="line-52"> */</span>
+<span class="source-line-no">053</span><span id="line-53"> public
DaemonWrapper()</span>
+<span class="source-line-no">054</span><span id="line-54"> {</span>
+<span class="source-line-no">055</span><span id="line-55"> config =
new DaemonConfiguration();</span>
+<span class="source-line-no">056</span><span id="line-56"> startup =
new Invoker();</span>
+<span class="source-line-no">057</span><span id="line-57"> shutdown =
new Invoker();</span>
+<span class="source-line-no">058</span><span id="line-58"> }</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60"> /**</span>
+<span class="source-line-no">061</span><span id="line-61"> * Called from
DaemonLoader on init stage.</span>
+<span class="source-line-no">062</span><span id="line-62"> *
<p></span>
+<span class="source-line-no">063</span><span id="line-63"> * Accepts the
following configuration arguments:</span>
+<span class="source-line-no">064</span><span id="line-64"> *
<ul></span>
+<span class="source-line-no">065</span><span id="line-65"> *
<li>-daemon-properties: - load DaemonConfiguration properties from the
specified file to act as defaults</li></span>
+<span class="source-line-no">066</span><span id="line-66"> *
<li>-start: set start class name</li></span>
+<span class="source-line-no">067</span><span id="line-67"> *
<li>-start-method: set start method name</li></span>
+<span class="source-line-no">068</span><span id="line-68"> *
<li>-stop: set stop class name</li></span>
+<span class="source-line-no">069</span><span id="line-69"> *
<li>-stop-method: set stop method name</li></span>
+<span class="source-line-no">070</span><span id="line-70"> *
<li>-stop-argument: set optional argument to stop method</li></span>
+<span class="source-line-no">071</span><span id="line-71"> *
<li>Anything else is treated as a startup argument</li></span>
+<span class="source-line-no">072</span><span id="line-72"> *
</ul></span>
+<span class="source-line-no">073</span><span id="line-73"> *
<p></span>
+<span class="source-line-no">074</span><span id="line-74"> * The following
"-daemon-properties" are recognized:</span>
+<span class="source-line-no">075</span><span id="line-75"> *
<ul></span>
+<span class="source-line-no">076</span><span id="line-76"> *
<li>args (startup argument)</li></span>
+<span class="source-line-no">077</span><span id="line-77"> *
<li>start</li></span>
+<span class="source-line-no">078</span><span id="line-78"> *
<li>start.method</li></span>
+<span class="source-line-no">079</span><span id="line-79"> *
<li>stop</li></span>
+<span class="source-line-no">080</span><span id="line-80"> *
<li>stop.method</li></span>
+<span class="source-line-no">081</span><span id="line-81"> *
<li>stop.args</li></span>
+<span class="source-line-no">082</span><span id="line-82"> *
</ul></span>
+<span class="source-line-no">083</span><span id="line-83"> * These are
used to set the corresponding item if it has not already been</span>
+<span class="source-line-no">084</span><span id="line-84"> * set by the
command arguments. <b>However, note that args and stop.args are</span>
+<span class="source-line-no">085</span><span id="line-85"> * appended to
any existing values.</b></span>
+<span class="source-line-no">086</span><span id="line-86"> */</span>
+<span class="source-line-no">087</span><span id="line-87"> @Override</span>
+<span class="source-line-no">088</span><span id="line-88"> public void
init(final DaemonContext context)</span>
+<span class="source-line-no">089</span><span id="line-89"> throws
Exception</span>
+<span class="source-line-no">090</span><span id="line-90"> {</span>
+<span class="source-line-no">091</span><span id="line-91"> final
String[] args = context.getArguments();</span>
+<span class="source-line-no">092</span><span id="line-92"></span>
+<span class="source-line-no">093</span><span id="line-93"> if (args !=
null) {</span>
+<span class="source-line-no">094</span><span id="line-94"> int
i;</span>
+<span class="source-line-no">095</span><span id="line-95"> // Parse
our arguments and remove them</span>
+<span class="source-line-no">096</span><span id="line-96"> // from
the final argument array we are</span>
+<span class="source-line-no">097</span><span id="line-97"> //
passing to our child.</span>
+<span class="source-line-no">098</span><span id="line-98">
arguments:</span>
+<span class="source-line-no">099</span><span id="line-99"> for (i =
0; i < args.length; i++) {</span>
+<span class="source-line-no">100</span><span id="line-100"> if
(args[i].equals("--")) {</span>
+<span class="source-line-no">101</span><span id="line-101">
// Done with argument processing</span>
+<span class="source-line-no">102</span><span id="line-102">
break;</span>
+<span class="source-line-no">103</span><span id="line-103">
}</span>
+<span class="source-line-no">104</span><span id="line-104">
switch (args[i]) {</span>
+<span class="source-line-no">105</span><span id="line-105">
case "-daemon-properties":</span>
+<span class="source-line-no">106</span><span id="line-106">
if (++i == args.length) {</span>
+<span class="source-line-no">107</span><span id="line-107">
throw new IllegalArgumentException(args[i - 1]);</span>
+<span class="source-line-no">108</span><span id="line-108">
}</span>
+<span class="source-line-no">109</span><span id="line-109">
configFileName = args[i];</span>
+<span class="source-line-no">110</span><span id="line-110">
break;</span>
+<span class="source-line-no">111</span><span id="line-111">
case "-start":</span>
+<span class="source-line-no">112</span><span id="line-112">
if (++i == args.length) {</span>
+<span class="source-line-no">113</span><span id="line-113">
throw new IllegalArgumentException(args[i - 1]);</span>
+<span class="source-line-no">114</span><span id="line-114">
}</span>
+<span class="source-line-no">115</span><span id="line-115">
startup.setClassName(args[i]);</span>
+<span class="source-line-no">116</span><span id="line-116">
break;</span>
+<span class="source-line-no">117</span><span id="line-117">
case "-start-method":</span>
+<span class="source-line-no">118</span><span id="line-118">
if (++i == args.length) {</span>
+<span class="source-line-no">119</span><span id="line-119">
throw new IllegalArgumentException(args[i - 1]);</span>
+<span class="source-line-no">120</span><span id="line-120">
}</span>
+<span class="source-line-no">121</span><span id="line-121">
startup.setMethodName(args[i]);</span>
+<span class="source-line-no">122</span><span id="line-122">
break;</span>
+<span class="source-line-no">123</span><span id="line-123">
case "-stop":</span>
+<span class="source-line-no">124</span><span id="line-124">
if (++i == args.length) {</span>
+<span class="source-line-no">125</span><span id="line-125">
throw new IllegalArgumentException(args[i - 1]);</span>
+<span class="source-line-no">126</span><span id="line-126">
}</span>
+<span class="source-line-no">127</span><span id="line-127">
shutdown.setClassName(args[i]);</span>
+<span class="source-line-no">128</span><span id="line-128">
break;</span>
+<span class="source-line-no">129</span><span id="line-129">
case "-stop-method":</span>
+<span class="source-line-no">130</span><span id="line-130">
if (++i == args.length) {</span>
+<span class="source-line-no">131</span><span id="line-131">
throw new IllegalArgumentException(args[i - 1]);</span>
+<span class="source-line-no">132</span><span id="line-132">
}</span>
+<span class="source-line-no">133</span><span id="line-133">
shutdown.setMethodName(args[i]);</span>
+<span class="source-line-no">134</span><span id="line-134">
break;</span>
+<span class="source-line-no">135</span><span id="line-135">
case "-stop-argument":</span>
+<span class="source-line-no">136</span><span id="line-136">
if (++i == args.length) {</span>
+<span class="source-line-no">137</span><span id="line-137">
throw new IllegalArgumentException(args[i - 1]);</span>
+<span class="source-line-no">138</span><span id="line-138">
}</span>
+<span class="source-line-no">139</span><span id="line-139">
final String[] aa = new String[1];</span>
+<span class="source-line-no">140</span><span id="line-140">
aa[0] = args[i];</span>
+<span class="source-line-no">141</span><span id="line-141">
shutdown.addArguments(aa);</span>
+<span class="source-line-no">142</span><span id="line-142">
break;</span>
+<span class="source-line-no">143</span><span id="line-143">
default:</span>
+<span class="source-line-no">144</span><span id="line-144">
// This is not our option.</span>
+<span class="source-line-no">145</span><span id="line-145">
// Everything else will be forwarded to the main</span>
+<span class="source-line-no">146</span><span id="line-146">
break arguments;</span>
+<span class="source-line-no">147</span><span id="line-147">
}</span>
+<span class="source-line-no">148</span><span id="line-148"> }</span>
+<span class="source-line-no">149</span><span id="line-149"> if
(args.length > i) {</span>
+<span class="source-line-no">150</span><span id="line-150">
final String[] copy = new String[args.length - i];</span>
+<span class="source-line-no">151</span><span id="line-151">
System.arraycopy(args, i, copy, 0, copy.length);</span>
+<span class="source-line-no">152</span><span id="line-152">
startup.addArguments(copy);</span>
+<span class="source-line-no">153</span><span id="line-153"> }</span>
+<span class="source-line-no">154</span><span id="line-154"> }</span>
+<span class="source-line-no">155</span><span id="line-155"> if
(config.load(configFileName)) {</span>
+<span class="source-line-no">156</span><span id="line-156"> //
Setup params if not set via cmdline.</span>
+<span class="source-line-no">157</span><span id="line-157">
startup.setClassName(config.getProperty(START_CLASS));</span>
+<span class="source-line-no">158</span><span id="line-158">
startup.setMethodName(config.getProperty(START_METHOD));</span>
+<span class="source-line-no">159</span><span id="line-159"> //
Merge the config with command line arguments</span>
+<span class="source-line-no">160</span><span id="line-160">
startup.addArguments(config.getPropertyArray(ARGS));</span>
+<span class="source-line-no">161</span><span id="line-161"></span>
+<span class="source-line-no">162</span><span id="line-162">
shutdown.setClassName(config.getProperty(STOP_CLASS));</span>
+<span class="source-line-no">163</span><span id="line-163">
shutdown.setMethodName(config.getProperty(STOP_METHOD));</span>
+<span class="source-line-no">164</span><span id="line-164">
shutdown.addArguments(config.getPropertyArray(STOP_ARGS));</span>
+<span class="source-line-no">165</span><span id="line-165"> }</span>
+<span class="source-line-no">166</span><span id="line-166">
startup.validate();</span>
+<span class="source-line-no">167</span><span id="line-167">
shutdown.validate();</span>
+<span class="source-line-no">168</span><span id="line-168"> }</span>
+<span class="source-line-no">169</span><span id="line-169"></span>
+<span class="source-line-no">170</span><span id="line-170"> /**</span>
+<span class="source-line-no">171</span><span id="line-171"> */</span>
+<span class="source-line-no">172</span><span id="line-172"> @Override</span>
+<span class="source-line-no">173</span><span id="line-173"> public void
start()</span>
+<span class="source-line-no">174</span><span id="line-174"> throws
Exception</span>
+<span class="source-line-no">175</span><span id="line-175"> {</span>
+<span class="source-line-no">176</span><span id="line-176">
startup.invoke();</span>
+<span class="source-line-no">177</span><span id="line-177"> }</span>
+<span class="source-line-no">178</span><span id="line-178"></span>
+<span class="source-line-no">179</span><span id="line-179"> /**</span>
+<span class="source-line-no">180</span><span id="line-180"> */</span>
+<span class="source-line-no">181</span><span id="line-181"> @Override</span>
+<span class="source-line-no">182</span><span id="line-182"> public void
stop()</span>
+<span class="source-line-no">183</span><span id="line-183"> throws
Exception</span>
+<span class="source-line-no">184</span><span id="line-184"> {</span>
+<span class="source-line-no">185</span><span id="line-185">
shutdown.invoke();</span>
+<span class="source-line-no">186</span><span id="line-186"> }</span>
+<span class="source-line-no">187</span><span id="line-187"></span>
+<span class="source-line-no">188</span><span id="line-188"> /**</span>
+<span class="source-line-no">189</span><span id="line-189"> */</span>
+<span class="source-line-no">190</span><span id="line-190"> @Override</span>
+<span class="source-line-no">191</span><span id="line-191"> public void
destroy()</span>
+<span class="source-line-no">192</span><span id="line-192"> {</span>
+<span class="source-line-no">193</span><span id="line-193"> // Nothing
for the moment</span>
+<span class="source-line-no">194</span><span id="line-194">
System.err.println("DaemonWrapper: instance " + hashCode() + " destroy");</span>
+<span class="source-line-no">195</span><span id="line-195"> }</span>
+<span class="source-line-no">196</span><span id="line-196"></span>
+<span class="source-line-no">197</span><span id="line-197"> // Internal
class for wrapping the start/stop methods</span>
+<span class="source-line-no">198</span><span id="line-198"> static class
Invoker</span>
+<span class="source-line-no">199</span><span id="line-199"> {</span>
+<span class="source-line-no">200</span><span id="line-200"> private
String name;</span>
+<span class="source-line-no">201</span><span id="line-201"> private
String call;</span>
+<span class="source-line-no">202</span><span id="line-202"> private
String[] args;</span>
+<span class="source-line-no">203</span><span id="line-203"> private
Method inst;</span>
+<span class="source-line-no">204</span><span id="line-204"> private
Class<?> main;</span>
+<span class="source-line-no">205</span><span id="line-205"></span>
+<span class="source-line-no">206</span><span id="line-206"> protected
Invoker()</span>
+<span class="source-line-no">207</span><span id="line-207"> {</span>
+<span class="source-line-no">208</span><span id="line-208"> }</span>
+<span class="source-line-no">209</span><span id="line-209"></span>
+<span class="source-line-no">210</span><span id="line-210"> protected
void setClassName(final String name)</span>
+<span class="source-line-no">211</span><span id="line-211"> {</span>
+<span class="source-line-no">212</span><span id="line-212"> if
(this.name == null) {</span>
+<span class="source-line-no">213</span><span id="line-213">
this.name = name;</span>
+<span class="source-line-no">214</span><span id="line-214"> }</span>
+<span class="source-line-no">215</span><span id="line-215"> }</span>
+<span class="source-line-no">216</span><span id="line-216"> protected
void setMethodName(final String name)</span>
+<span class="source-line-no">217</span><span id="line-217"> {</span>
+<span class="source-line-no">218</span><span id="line-218"> if
(this.call == null) {</span>
+<span class="source-line-no">219</span><span id="line-219">
this.call = name;</span>
+<span class="source-line-no">220</span><span id="line-220"> }</span>
+<span class="source-line-no">221</span><span id="line-221"> }</span>
+<span class="source-line-no">222</span><span id="line-222"> protected
void addArguments(final String[] args)</span>
+<span class="source-line-no">223</span><span id="line-223"> {</span>
+<span class="source-line-no">224</span><span id="line-224"> if
(args != null) {</span>
+<span class="source-line-no">225</span><span id="line-225">
final ArrayList<String> aa = new ArrayList<>();</span>
+<span class="source-line-no">226</span><span id="line-226"> if
(this.args != null) {</span>
+<span class="source-line-no">227</span><span id="line-227">
aa.addAll(Arrays.asList(this.args));</span>
+<span class="source-line-no">228</span><span id="line-228">
}</span>
+<span class="source-line-no">229</span><span id="line-229">
aa.addAll(Arrays.asList(args));</span>
+<span class="source-line-no">230</span><span id="line-230">
this.args = aa.toArray(DaemonConfiguration.EMPTY_STRING_ARRAY);</span>
+<span class="source-line-no">231</span><span id="line-231"> }</span>
+<span class="source-line-no">232</span><span id="line-232"> }</span>
+<span class="source-line-no">233</span><span id="line-233"></span>
+<span class="source-line-no">234</span><span id="line-234"> protected
void invoke()</span>
+<span class="source-line-no">235</span><span id="line-235"> throws
Exception</span>
+<span class="source-line-no">236</span><span id="line-236"> {</span>
+<span class="source-line-no">237</span><span id="line-237"> if
(name.equals("System") && call.equals("exit")) {</span>
+<span class="source-line-no">238</span><span id="line-238"> //
Just call a System.exit()</span>
+<span class="source-line-no">239</span><span id="line-239"> //
The start method was probably installed</span>
+<span class="source-line-no">240</span><span id="line-240"> //
a shutdown hook.</span>
+<span class="source-line-no">241</span><span id="line-241">
System.exit(0);</span>
+<span class="source-line-no">242</span><span id="line-242"> }</span>
+<span class="source-line-no">243</span><span id="line-243"> else
{</span>
+<span class="source-line-no">244</span><span id="line-244">
Object obj = null;</span>
+<span class="source-line-no">245</span><span id="line-245"> if
((inst.getModifiers() & Modifier.STATIC) == 0) {</span>
+<span class="source-line-no">246</span><span id="line-246">
// We only need object instance for non-static methods.</span>
+<span class="source-line-no">247</span><span id="line-247">
obj = main.getConstructor().newInstance();</span>
+<span class="source-line-no">248</span><span id="line-248">
}</span>
+<span class="source-line-no">249</span><span id="line-249">
final Object[] arg = new Object[1];</span>
+<span class="source-line-no">250</span><span id="line-250"></span>
+<span class="source-line-no">251</span><span id="line-251">
arg[0] = args;</span>
+<span class="source-line-no">252</span><span id="line-252">
inst.invoke(obj, arg);</span>
+<span class="source-line-no">253</span><span id="line-253"> }</span>
+<span class="source-line-no">254</span><span id="line-254"> }</span>
+<span class="source-line-no">255</span><span id="line-255"> // Load the
class using reflection</span>
+<span class="source-line-no">256</span><span id="line-256"> protected
void validate()</span>
+<span class="source-line-no">257</span><span id="line-257"> throws
Exception</span>
+<span class="source-line-no">258</span><span id="line-258"> {</span>
+<span class="source-line-no">259</span><span id="line-259"> /*
Check the class name */</span>
+<span class="source-line-no">260</span><span id="line-260"> if
(name == null) {</span>
+<span class="source-line-no">261</span><span id="line-261">
name = "System";</span>
+<span class="source-line-no">262</span><span id="line-262">
call = "exit";</span>
+<span class="source-line-no">263</span><span id="line-263">
return;</span>
<span class="source-line-no">264</span><span id="line-264"> }</span>
-<span class="source-line-no">265</span><span id="line-265"> if
(call == null) {</span>
-<span class="source-line-no">266</span><span id="line-266">
call = "main";</span>
+<span class="source-line-no">265</span><span id="line-265"> if
(args == null) {</span>
+<span class="source-line-no">266</span><span id="line-266">
args = new String[0];</span>
<span class="source-line-no">267</span><span id="line-267"> }</span>
-<span class="source-line-no">268</span><span id="line-268"></span>
-<span class="source-line-no">269</span><span id="line-269"> // Get
the ClassLoader loading this class</span>
-<span class="source-line-no">270</span><span id="line-270"> final
ClassLoader classLoader = DaemonWrapper.class.getClassLoader();</span>
-<span class="source-line-no">271</span><span id="line-271">
Objects.requireNonNull(classLoader, "classLoader");</span>
-<span class="source-line-no">272</span><span id="line-272"> final
Class<?>[] ca = new Class[1];</span>
-<span class="source-line-no">273</span><span id="line-273"> ca[0] =
args.getClass();</span>
-<span class="source-line-no">274</span><span id="line-274"> // Find
the required class</span>
-<span class="source-line-no">275</span><span id="line-275"> main =
classLoader.loadClass(name);</span>
-<span class="source-line-no">276</span><span id="line-276"> if
(main == null) {</span>
-<span class="source-line-no">277</span><span id="line-277">
throw new ClassNotFoundException(name);</span>
-<span class="source-line-no">278</span><span id="line-278"> }</span>
-<span class="source-line-no">279</span><span id="line-279"> // Find
the required method.</span>
-<span class="source-line-no">280</span><span id="line-280"> //
NoSuchMethodException will be thrown if matching method</span>
-<span class="source-line-no">281</span><span id="line-281"> // is
not found.</span>
-<span class="source-line-no">282</span><span id="line-282"> inst =
main.getMethod(call, ca);</span>
-<span class="source-line-no">283</span><span id="line-283"> }</span>
-<span class="source-line-no">284</span><span id="line-284"> }</span>
-<span class="source-line-no">285</span><span id="line-285">}</span>
+<span class="source-line-no">268</span><span id="line-268"> if
(call == null) {</span>
+<span class="source-line-no">269</span><span id="line-269">
call = "main";</span>
+<span class="source-line-no">270</span><span id="line-270"> }</span>
+<span class="source-line-no">271</span><span id="line-271"></span>
+<span class="source-line-no">272</span><span id="line-272"> // Get
the ClassLoader loading this class</span>
+<span class="source-line-no">273</span><span id="line-273"> final
ClassLoader classLoader = DaemonWrapper.class.getClassLoader();</span>
+<span class="source-line-no">274</span><span id="line-274">
Objects.requireNonNull(classLoader, "classLoader");</span>
+<span class="source-line-no">275</span><span id="line-275"> final
Class<?>[] ca = new Class[1];</span>
+<span class="source-line-no">276</span><span id="line-276"> ca[0] =
args.getClass();</span>
+<span class="source-line-no">277</span><span id="line-277"> // Find
the required class</span>
+<span class="source-line-no">278</span><span id="line-278"> main =
classLoader.loadClass(name);</span>
+<span class="source-line-no">279</span><span id="line-279"> if
(main == null) {</span>
+<span class="source-line-no">280</span><span id="line-280">
throw new ClassNotFoundException(name);</span>
+<span class="source-line-no">281</span><span id="line-281"> }</span>
+<span class="source-line-no">282</span><span id="line-282"> // Find
the required method.</span>
+<span class="source-line-no">283</span><span id="line-283"> //
NoSuchMethodException will be thrown if matching method</span>
+<span class="source-line-no">284</span><span id="line-284"> // is
not found.</span>
+<span class="source-line-no">285</span><span id="line-285"> inst =
main.getMethod(call, ca);</span>
+<span class="source-line-no">286</span><span id="line-286"> }</span>
+<span class="source-line-no">287</span><span id="line-287"> }</span>
+<span class="source-line-no">288</span><span id="line-288">}</span>
Modified:
websites/production/commons/content/proper/commons-daemon/binaries.html
==============================================================================
--- websites/production/commons/content/proper/commons-daemon/binaries.html
(original)
+++ websites/production/commons/content/proper/commons-daemon/binaries.html Tue
Jan 14 12:30:25 2025
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--
- | Generated by Apache Maven Doxia at 24 May 2024
+ | Generated by Apache Maven Doxia at 14 January 2025
| Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
@@ -8,7 +8,7 @@
<meta charset="iso-8859-1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="author" content="Jean-Frederic Clere" />
- <meta name="Date-Revision-yyyymmdd" content="20240524" />
+ <meta name="Date-Revision-yyyymmdd" content="20250114" />
<meta http-equiv="Content-Language" content="en" />
<title>Daemon – Daemon : binaries</title>
@@ -41,8 +41,8 @@
<a class="brand"
href="https://commons.apache.org/proper/commons-daemon/">Apache Commons Daemon
™</a>
<ul class="nav">
- <li id="publishDate">Last Published: 24 May 2024</li>
- <li class="divider">|</li> <li id="projectVersion">Version: 1.4.0</li>
+ <li id="publishDate">Last Published: 14 January 2025</li>
+ <li class="divider">|</li> <li id="projectVersion">Version: 1.4.1</li>
</ul>
<div class="pull-right"> <ul class="nav">
<li>
@@ -257,7 +257,7 @@ corresponding to your operating system.
<h3><a name="procrun"></a>procrun</h3>
<p>
-The Windows archive (e.g. commons-daemon-1.4.0-bin-windows.zip) contains 2
different executables:
+The Windows archive (e.g. commons-daemon-1.4.1-bin-windows.zip) contains 2
different executables:
</p>
<ul>
@@ -289,7 +289,7 @@ The Windows binary zip archive should be
</div>
<div class="footer">
- <p>Copyright © 2002-2024
+ <p>Copyright © 2002-2025
<a href="https://www.apache.org/">The Apache Software
Foundation</a>.
All Rights Reserved.</p>