Wiki source code of Wonder JavaMonitor and wotaskd

Version 179.1 by Maik Musall on 2013/04/23 11:54

Hide last authors
Maik Musall 176.1 1 [[image:attach:WonderJavaMonitor.png]]
simon 149.1 2
Maik Musall 176.1 3 {{toc/}}
simon 149.1 4
Pascal Robert 57.1 5 === Introduction ===
6
simon 149.1 7 JavaMonitor is a web-based tool used to configure and maintain deployed WebObjects applications. It is capable of handling multiple WebObjects applications, multiple instances of each application, and multiple WebObjects Applications Servers. In most cases you'll have one instance of JavaMonitor controlling all instances of your applications, even if they are spread across multiple Application Servers.
Pascal Robert 57.1 8
simon 149.1 9 wotaskd (WebObjects task daemon) is the WebObjects Deployment tool that manages the instances on an Application Server. It's used by Monitor to propagate site configuration changes throughout the site's application hosts.
David Avendasora 77.1 10
Maik Musall 176.1 11 Apple released the original wotaskd and JavaMonitor to the community as open source in WebObjects 5.4. The source was then quickly modified and included in Project Wonder. Substantial improvements in both functionality and look-and-feel have been made over the years.Ā These improved versions of **wotaskd.woa** and **JavaMonitor.woa** are available as standard Wonder applications.
David Avendasora 77.1 12
simon 149.1 13 === Where To Get Them ===
14
Maik Musall 179.1 15 You can either download them pre-built from [[Wonder's Jenkins build server>>url:http://jenkins.wocommunity.org/job/Wonder/lastSuccessfulBuild/||shape="rect"]]Ā or build them from the source code.
simon 149.1 16
Maik Musall 176.1 17 To build them from the [[Wonder source code>>doc:WEB.Getting the Wonder Source Code]], simply run the following command from the Wonder directory at the root of the Wonder source.
simon 149.1 18
Maik Musall 179.1 19 {{code}}ant frameworks deployment.tools -Ddeployment.standalone=true{{/code}}
David Avendasora 77.1 20
simon 149.1 21 {{info title="What this command does:"}}
Maik Musall 176.1 22 * **ant**: calls Apache Ant. It is assumed that you have this already installed.
23 * **frameworks**: tells Ant to build the "frameworks" target. This may not be needed if you already have Wonder built and installed in a location Ant can find automatically.
24 * **deployment.tools**: tells Ant to build the "deployment.tools" target. This is the target that builds both wotaskd.woa and JavaMonitor.woa. You absolutely need this one.
25 * **-Ddeployment.standalone=true**: argument will embed the required Wonder and WebObjects frameworks in built applications. You need this to ensure that the required frameworks are embedded in the built applications.
simon 149.1 26 {{/info}}
27
28 === Bug Fixes to Apple's Versions ===
29
30 ==== JavaMonitor ====
31
32 * Fixes an issue with the Application Delete page
33 * Selection in Application Detail page is now Ajax and is maintained
34
35 === Improvements to Apple's versions ===
36
37 ==== Automatic archive of SiteConfig.xml ====
38
39 On every change you make to an application's configuration, a backup of SiteConfig.xml will be created in, by default, /Library/WebObjects/Configuration.
40
41 ==== Simplified/Automated Bouncing ====
42
John Huss 165.1 43 In the "list instances" page, you get a "Bounce" action link. This action only work if you have at least one active instance and one inactive instance (only one inactive instance takes part in the bounce). What it does is :
simon 149.1 44
John Huss 165.1 45 * Find one inactive (i.e., not started) instance and start it
simon 149.1 46 * Find the active instances (minus the one started in the previous step) and enable "Refuse New Session"
John Huss 165.1 47 * Stop the active instances that are refusing new sessions when the minimum session count is reached
48 * Restart all but one of the instances that were just stopped and turn on "Auto-Recover"
simon 149.1 49
Maik Musall 176.1 50 This feature, from Pascal's understanding, allows you to upload new versions of your application, start up the new version and refuse sessions for the instances running on the older version. This is designed to work so that you always have justĀ **one** inactive instance that is only used while the bounce is performed. While waiting for the existing sessions to end you will have only one instance of your app accepting new sessions; you need to determine if this is acceptable for your app or not.
simon 149.1 51
52 {{warning title="Database Changes"}}
Maik Musall 176.1 53 It is uncertain what will happen if the new version of your application makesĀ changes to your database schema (e.g., uses [[ERXMigrations>>doc:WO.Project WONDER-Frameworks-ERXMigration]]). The old instances may raise exceptions before they can gracefully shut down because the schema no longer matches what the old application's EOF expects. **Try it out on a test server first and then update this page so everyone knows!**
simon 149.1 54 {{/warning}}
55
56 ==== Statistics ====
57
Maik Musall 179.1 58 If you call [[http:~~/~~/monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/wa/statistics>>url:http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/wa/statistics||shape="rect"]]{{code language="none"}}{{/code}}, JavaMonitor will send you back statistics, in serialized Property List format, about instances, per application.
simon 149.1 59
Maik Musall 179.1 60 {{code 0="none" title="Statistics Example Results"}}
simon 149.1 61
Pascal Robert 57.1 62 (
63 {
64 "configuredInstances" = "2";
65 "maxSessions" = "0";
66 "maxAvgIdleTime" = "2.078";
67 "avgTransactions" = "44.0000";
68 "sumSessions" = "0";
69 "avgAvgTransactionTime" = "0.0985000";
70 "refusingInstances" = "0";
71 "avgSessions" = "0.0000";
72 "maxTransactions" = "88";
73 "applicationName" = "AjaxExample";
74 "avgAvgIdleTime" = "1.0390000";
75 "maxAvgTransactionTime" = "0.197";
76 "runningInstances" = "2";
77 "sumTransactions" = "88";
78 },
79 {
80 "configuredInstances" = "2";
81 "maxSessions" = "0";
82 "maxAvgIdleTime" = "325.443";
83 "avgTransactions" = "0.5000";
84 "sumSessions" = "0";
85 "avgAvgTransactionTime" = "0.00000";
86 "refusingInstances" = "0";
87 "avgSessions" = "0.0000";
88 "maxTransactions" = "1";
89 "applicationName" = "AjaxExample2";
90 "avgAvgIdleTime" = "162.7215000";
91 "maxAvgTransactionTime" = "0.0";
92 "runningInstances" = "2";
93 "sumTransactions" = "1";
94 }
95 )
96
David Avendasora 113.1 97 {{/code}}
Pascal Robert 57.1 98
Pascal Robert 171.1 99 {{info}}
Maik Musall 176.1 100 If JavaMonitor is configured with a password, and I hope you do, pass //pw=monitorpassword// as a argument to the query :
Pascal Robert 57.1 101
Maik Musall 176.1 102 {{code}}
Pascal Robert 57.1 103
Pascal Robert 171.1 104 http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/wa/statistics?pw=monitorpassword
pyu 169.1 105
Pascal Robert 171.1 106 wget http://monitorhost:56789/cgi-bin/WebObjects/JavaMonitor.woa/admin/stop?type=app&name=InstanceName&pw=yourPassword
pyu 169.1 107
Maik Musall 176.1 108 {{/code}}
Pascal Robert 171.1 109 {{/info}}
pyu 169.1 110
David Avendasora 173.1 111 ==== Direct Actions in JavaMonitor for Management Tasks ====
Pascal Robert 57.1 112
Maik Musall 176.1 113 You can do most of the standard management tasks you'd normally do in JavaMonitor's web UI by calling standard WebObjects Direct Actions. Instead of using the {{code language="none"}}/wa/{{/code}} request handler though, these management tasks use a new {{code language="none"}}/admin/{{/code}} request handler. These Direct Actions can be very useful, especially if you need to restart instances or other do tasks from the command line, from within Ant or other build or deployment systems.
Pascal Robert 57.1 114
simon 149.1 115 List of available direct actions :
David Avendasora 113.1 116
Maik Musall 176.1 117 * **info**{{code language="none"}}{{/code}} : Returns details (number of deaths, state, etc.), in JavaScript Object Notation (JSON) as specified
Maik Musall 179.1 118 {{code language="none"}}info?{{/code}}**type=all**{{code language="none"}}{{/code}}
119 {{code language="none"}}info?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
120 {{code language="none"}}info?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
Pascal Robert 57.1 121
Maik Musall 176.1 122 * **running**{{code language="none"}}{{/code}} : Returns **YES**{{code language="none"}}{{/code}} if **all** of the specified are running, {{code language="none"}}NO{{/code}} if not
Maik Musall 179.1 123 {{code language="none"}}running?{{/code}}**type=all**{{code language="none"}}{{/code}}
124 {{code language="none"}}running?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
125 {{code language="none"}}running?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
Pascal Robert 57.1 126
Maik Musall 176.1 127 * **stopped**{{code language="none"}}{{/code}} : Returns **YES**{{code language="none"}}{{/code}} if **all** the specified is running, **NO**{{code language="none"}}{{/code}} if not.
Maik Musall 179.1 128 {{code language="none"}}stopped?{{/code}}**type=all**{{code language="none"}}{{/code}}
129 {{code language="none"}}stopped?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
130 {{code language="none"}}stopped?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
Pascal Robert 57.1 131
Maik Musall 176.1 132 * **bounce**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after Bouncing (see description above) as specified
Maik Musall 179.1 133 {{code language="none"}}bounce?{{/code}}**type=all**{{code language="none"}}{{/code}}
134 {{code language="none"}}bounce?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}
Pascal Robert 57.1 135
Maik Musall 176.1 136 * **clearDeaths**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after clearing deaths as specified
Maik Musall 179.1 137 {{code language="none"}}clearDeaths?{{/code}}**type=all**{{code language="none"}}{{/code}}
138 {{code language="none"}}clearDeaths?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}
Pascal Robert 57.1 139
Maik Musall 176.1 140 * **turnScheduledOn**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after turning on scheduling as specified. Call ///turnScheduledOff// to do the opposite.
Maik Musall 179.1 141 {{code language="none"}}turnScheduledOn?{{/code}}**type=all**{{code language="none"}}{{/code}}
142 {{code language="none"}}turnScheduledOn?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
143 {{code language="none"}}turnScheduledOn?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
Pascal Robert 57.1 144
Maik Musall 176.1 145 * **turnRefuseNewSessionsOn**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after turning on "Refuse new sessions" as specified
Maik Musall 179.1 146 {{code language="none"}}turnRefuseNewSessionsOn?{{/code}}**type=all**{{code language="none"}}{{/code}}
147 {{code language="none"}}turnRefuseNewSessionsOn?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
148 {{code language="none"}}turnRefuseNewSessionsOn?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
David Avendasora 105.1 149
Maik Musall 176.1 150 * **turnRefuseNewSessionsOff**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after turning off "Refuse new sessions" as specified
Maik Musall 179.1 151 {{code language="none"}}turnRefuseNewSessionsOff?{{/code}}**type=all**{{code language="none"}}{{/code}}
152 {{code language="none"}}turnRefuseNewSessionsOff?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
153 {{code language="none"}}turnRefuseNewSessionsOff?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
David Avendasora 113.1 154
Maik Musall 176.1 155 * **turnAutoRecoverOn**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after turning on "Auto Recover" as specified
Maik Musall 179.1 156 {{code language="none"}}turnAutoRecoverOn?{{/code}}**type=all**{{code language="none"}}{{/code}}
157 {{code language="none"}}turnAutoRecoverOn?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
158 {{code language="none"}}turnAutoRecoverOn?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
David Avendasora 105.1 159
Maik Musall 176.1 160 * **turnAutoRecoverOff**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after turning off "Auto Recover" as specified
Maik Musall 179.1 161 {{code language="none"}}turnAutoRecoverOn?{{/code}}**type=all**{{code language="none"}}{{/code}}
162 {{code language="none"}}turnAutoRecoverOn?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
163 {{code language="none"}}turnAutoRecoverOn?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
simon 149.1 164
Maik Musall 176.1 165 * **forceQuit**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after force quitting as specified. This could be useful to call from a monitoring system.
Maik Musall 179.1 166 {{code language="none"}}forceQuit?{{/code}}**type=all**{{code language="none"}}{{/code}}
167 {{code language="none"}}forceQuit?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
168 {{code language="none"}}forceQuit?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
simon 149.1 169
Maik Musall 176.1 170 * **stop**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after calling "Stop" as specified
Maik Musall 179.1 171 {{code language="none"}}stop?{{/code}}**type=all**{{code language="none"}}{{/code}}
172 {{code language="none"}}stop?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
173 {{code language="none"}}stop?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
simon 149.1 174
Maik Musall 176.1 175 * **start**{{code language="none"}}{{/code}} : Returns **OK**{{code language="none"}}{{/code}} after calling "Start" as specified
Maik Musall 179.1 176 {{code language="none"}}start?{{/code}}**type=all**{{code language="none"}}{{/code}}
177 {{code language="none"}}start?{{/code}}**type=app&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)
178 {{code language="none"}}start?{{/code}}**type=ins&name=**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**AppName**{{code language="none"}}{{/code}}(%%)**-**{{code language="none"}}{{/code}}(% style="color: maroon;" %)**InstanceNumber**{{code language="none"}}{{/code}}
simon 149.1 179
180 To get details about all instances of all applications:
Maik Musall 179.1 181 [[http:~~/~~/monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/admin/info?type=all>>url:http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/admin/info?type=all||shape="rect"]]{{code language="none"}}{{/code}}
simon 149.1 182
183 To get details about the **AjaxExample** application:
Maik Musall 179.1 184 [[http:~~/~~/monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/admin/info?type=app&name=AjaxExample>>url:http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/admin/info?type=app&name=AjaxExample||shape="rect"]]{{code language="none"}}{{/code}}
simon 149.1 185
186 To get details about instance **1** of the **AjaxExample** application:
Maik Musall 179.1 187 [[http:~~/~~/monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/admin/info?type=ins&name=AjaxExample-1>>url:http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/admin/info?type=ins&name=AjaxExample-1||shape="rect"]]{{code language="none"}}{{/code}}
simon 149.1 188
David Avendasora 173.1 189 ==== Remote Control via REST Routes (for JavaMonitor) ====
simon 149.1 190
Maik Musall 176.1 191 If the control offered by the Direct Actions isn't enough, JavaMonitor allows additional control via [[REST>>doc:ERRest Framework]] calls. Between the two methods (Direct Actions, REST) you have almost full remote-control of JavaMonitor. Just make sure that your JavaMonitor installation is secure! Just like with Direct Actions, you need to append {{code language="none"}}?pw=XXXX{{/code}} to the URLs if your JavaMonitor is password protected.
simon 149.1 192
193 Examples of REST calls :
194
Maik Musall 179.1 195 {{code 0="none" title="Adding a New Host"}}
simon 149.1 196 curl -X POST -d "{id: 'otherserver.com',type: 'MHost', osType: 'MACOSX',address: '192.168.20.5', name: 'otherserver.com'}" http://monitorhost:port/apps/WebObjects/JavaMonitor.woa/ra/mHosts.json
Maik Musall 179.1 197 {{/code}}
simon 149.1 198
Maik Musall 179.1 199 {{code 0="none" title="Fetching Details for All Applications"}}
simon 149.1 200 curl -X GET http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications.json
Maik Musall 179.1 201 {{/code}}
David Avendasora 105.1 202
Maik Musall 179.1 203 {{code 0="none" title="Adding a New Application"}}
simon 149.1 204 curl -X POST -d "{id: 'AjaxExample',type: 'MApplication', name: 'AjaxExample',unixOutputPath: '/opt/Local/Library/WebObjects/Logs', unixPath: '/opt/Local/Library/WebObjects/Applications/AjaxExample.woa/AjaxExample'}" http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications.json
Maik Musall 179.1 205 {{/code}}
David Avendasora 121.1 206
Maik Musall 179.1 207 {{code 0="none" title="Delete an Application"}}
simon 149.1 208 curl -X DELETE http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample.json
Maik Musall 179.1 209 {{/code}}
David Avendasora 121.1 210
Maik Musall 179.1 211 {{code 0="none" title="Adding a New Instance"}}
212 curl -X GET http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/addInstance&host=localhost
213 {{/code}}
Marc Guenther 177.1 214
Maik Musall 179.1 215 {{code 0="none" title="Delete an Instance"}}
simon 149.1 216 curl -X GET http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/deleteInstance?id=1
Maik Musall 179.1 217 {{/code}}
simon 149.1 218
Maik Musall 179.1 219 {{code 0="none" title="Configuring the Site"}}
Marc Guenther 177.1 220
simon 155.1 221 curl -X PUT -d "{woAdaptor:'www.mydomain.com'}" http://monitorhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mSiteConfig.json
simon 153.1 222
223 {{/code}}
John Huss 165.1 224
225 Note that before configuring the site you must first add a host. If you attempt to configure the site prior to adding a host you will get an InvalidStateException.
226
David Avendasora 173.1 227 ==== Remote Control via REST Routes (for wotaskd) ====
Pascal Robert 172.1 228
Maik Musall 176.1 229 Starting on August 10th 2012, wotaskd also have REST routes. By using them, you can do most of the tasks using REST and you might not even need JavaMonitor. Just like the JavaMonitor REST and Direct Actions, you need to append {{code language="none"}}?pw=XXXX{{/code}} to the URLs if wotaskd is password protected.
David Avendasora 173.1 230
Maik Musall 179.1 231 {{code 0="none" title="Fetching Details for All Applications"}}
David Avendasora 173.1 232 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications.json
Maik Musall 179.1 233 {{/code}}
David Avendasora 173.1 234
Maik Musall 179.1 235 {{code 0="none" title="Adding a New Application"}}
David Avendasora 173.1 236 curl -X POST -d "{id: 'AjaxExample',type: 'MApplication', name: 'AjaxExample',unixOutputPath: '/opt/Local/Library/WebObjects/Logs', unixPath: '/opt/Local/Library/WebObjects/Applications/AjaxExample.woa/AjaxExample'}" http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications.json
Maik Musall 179.1 237 {{/code}}
David Avendasora 173.1 238
Maik Musall 179.1 239 {{code 0="none" title="Delete an Application"}}
David Avendasora 173.1 240 curl -X DELETE http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample.json
Maik Musall 179.1 241 {{/code}}
David Avendasora 173.1 242
Maik Musall 179.1 243 {{code 0="none" title="Adding a New Instance"}}
David Avendasora 173.1 244 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/addInstance&host=localhost
Maik Musall 179.1 245 {{/code}}
David Avendasora 173.1 246
Maik Musall 179.1 247 {{code 0="none" title="Delete an Instance"}}
David Avendasora 173.1 248 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/deleteInstance?id=1
Maik Musall 179.1 249 {{/code}}
David Avendasora 173.1 250
Maik Musall 179.1 251 {{code 0="none" title="Configuring the Site"}}
David Avendasora 173.1 252 curl -X PUT -d "{woAdaptor:'www.mydomain.com'}" http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mSiteConfig.json
Maik Musall 179.1 253 {{/code}}
David Avendasora 173.1 254
Maik Musall 179.1 255 {{code 0="none" title="Starting all applications"}}
David Avendasora 173.1 256 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/start
Maik Musall 179.1 257 {{/code}}
David Avendasora 173.1 258
Maik Musall 179.1 259 {{code 0="none" title="Starting a specific application (AjaxExample in this example)"}}
David Avendasora 173.1 260 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/start
Maik Musall 179.1 261 {{/code}}
David Avendasora 173.1 262
Maik Musall 179.1 263 {{code 0="none" title="Starting a specific instance of an application (instance 1 of AjaxExample in this example)"}}
David Avendasora 173.1 264 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/start?id=1
Maik Musall 179.1 265 {{/code}}
David Avendasora 173.1 266
Maik Musall 179.1 267 {{code 0="none" title="Stopping all applications"}}
David Avendasora 173.1 268 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/stop
Maik Musall 179.1 269 {{/code}}
David Avendasora 173.1 270
Maik Musall 179.1 271 {{code 0="none" title="Stopping a specific application (AjaxExample in this example)"}}
David Avendasora 173.1 272 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/stop
Maik Musall 179.1 273 {{/code}}
David Avendasora 173.1 274
Maik Musall 179.1 275 {{code 0="none" title="Stopping a specific instance of an application (instance 1 of AjaxExample in this example)"}}
David Avendasora 173.1 276 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/stop?id=1
Maik Musall 179.1 277 {{/code}}
David Avendasora 173.1 278
Maik Musall 179.1 279 {{code 0="none" title="Force quit all applications"}}
David Avendasora 173.1 280 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/forceQuit
Maik Musall 179.1 281 {{/code}}
David Avendasora 173.1 282
Maik Musall 179.1 283 {{code 0="none" title="Force quit a specific application (AjaxExample in this example)"}}
David Avendasora 173.1 284 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/forceQuit
Maik Musall 179.1 285 {{/code}}
David Avendasora 173.1 286
Maik Musall 179.1 287 {{code 0="none" title="Force quit a specific instance of an application (instance 1 of AjaxExample in this example)"}}
David Avendasora 173.1 288 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/forceQuit?id=1
Maik Musall 179.1 289 {{/code}}
David Avendasora 173.1 290
Maik Musall 179.1 291 {{code 0="none" title="Information about all applications"}}
David Avendasora 173.1 292 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/info
Maik Musall 179.1 293 {{/code}}
David Avendasora 173.1 294
Maik Musall 179.1 295 {{code 0="none" title="Information about a specific application (AjaxExample in this example)"}}
David Avendasora 173.1 296 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/info
Maik Musall 179.1 297 {{/code}}
David Avendasora 173.1 298
Maik Musall 179.1 299 {{code 0="none" title="Information about a specific instance of an application (instance 1 of AjaxExample in this example)"}}
David Avendasora 173.1 300 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/info?id=1
Maik Musall 179.1 301 {{/code}}
David Avendasora 173.1 302
Maik Musall 179.1 303 {{code 0="none" title="Check if all applications are running"}}
David Avendasora 173.1 304 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/isRunning
Maik Musall 179.1 305 {{/code}}
David Avendasora 173.1 306
Maik Musall 179.1 307 {{code 0="none" title="Check if a specific application is running (AjaxExample in this example)"}}
David Avendasora 173.1 308 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/isRunning
Maik Musall 179.1 309 {{/code}}
David Avendasora 173.1 310
Maik Musall 179.1 311 {{code 0="none" title="Check if a specific instance of an application is running (instance 1 of AjaxExample in this example)"}}
David Avendasora 173.1 312 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/isRunning?id=1
Maik Musall 179.1 313 {{/code}}
David Avendasora 173.1 314
Maik Musall 179.1 315 {{code 0="none" title="Check if all applications are stopped"}}
David Avendasora 173.1 316 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/isStopped
Maik Musall 179.1 317 {{/code}}
David Avendasora 173.1 318
Maik Musall 179.1 319 {{code 0="none" title="Check if a specific application is stopped (AjaxExample in this example)"}}
David Avendasora 173.1 320 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/isStopped
Maik Musall 179.1 321 {{/code}}
David Avendasora 173.1 322
Maik Musall 179.1 323 {{code 0="none" title="Check if a specific instance of an application is stopped (instance 1 of AjaxExample in this example)"}}
Marc Guenther 177.1 324
David Avendasora 173.1 325 curl -X GET http://wotaskdhost:port/cgi-bin/WebObjects/JavaMonitor.woa/ra/mApplications/AjaxExample/isStopped?id=1
326
327 {{/code}}
328
John Huss 165.1 329 === Troubleshooting ===
330
Maik Musall 176.1 331 If JavaMonitor won't start up check theĀ [[troubleshooting deployment>>doc:Troubleshooting Deployment]] section. In particular pay attention to theĀ [[WOTaskd Didn't Start>>doc:Troubleshooting Deployment]] Q&A.