Table of Contents Previous Section
Starting Up Applications From the Command Line
The syntax for starting a WebObjects application from a command shell window is:
AppExecutable [-debug ON|OFF] [-browser ON|OFF] [-m ON|OFF [-mhost hostname|subnet]] [-c] [-d DocumentRoot] [[-a AdaptorClass] [-n InstanceNumber] [-p PortNumber] [-q ListenQueueDepth]] [ApplicationName]
- AppExecutable
- The name of the WebObjects application executable to run. You should enter the command from the directory containing the executable. Compiled applications should either be located in NeXT_ROOT/NextLibrary/WOApps (recommended) or under <DocRoot>/WebObjects. For scripted applications, go to the application's .woa directory and execute WODefaultApp, which is located in NeXT_ROOT/NextLibrary/Executables.
- -debug ON|OFF
- Sets whether the application prints messages to standard output during startup. By default, this option is ON. If this option is ON, the application prints messages such as the following:
- -browser ON|OFF
- Sets whether the application automatically starts up the web browser. The default is ON. If this option is ON, the browser automatically opens a new browser window (starting up the browser if necessary) with the WebObjects application's URL.
- -m ON|OFF
- Enables or disables monitoring. The default is ON. If this option is ON and you manually start up an application, the application tries to find a running Monitor. If it finds one, Monitor can automatically locate the application and display information about it, provided an instance number is given with the adaptor's -n option as described below.
- -mhost hostname | subnet
- The application tries to find a running Monitor on the machine named hostname instead of on the local machine. If subnet is used, the application looks for a running Monitor in its network subnet.
- -c
- Requests that the application cache component definitions (templates) instead of reparsing HTML and declaration files upon each new HTTP request. By default, applications do not cache component definitions. This setting ensures that during development of scripted applications programmers can modify a component's logic and see the result without having to relaunch the application. If you are deploying applications, however, you should turn on component-definition caching by specifying this flag when you launch the application.
- -d DocumentRoot
- The document root of the server, which can be different from the document root specified for a given web server. If you use this option, you must also specify the ApplicationName option. If you don't specify a document root, it is taken from the configuration file NeXT_ROOT/NextLibrary/WOAdaptors/Configuration/WebServerConfig.plist.
- -a AdaptorClass
- The class of an adaptor that the application will use to communicate with the server. You can specify multiple adaptors, as long as they are of different types. (For example, you could have a separate adaptor with its own port for communicating directly with Java applets on the browser.) If you specify multiple HTTP adaptors, only the last one specified will be made the active one.
Aug 22 18:08:46 WODefaultApp[423] Application Path: /NextDeveloper/Examples/WebObjects/HelloWorld Aug 22 18:08:50 WODefaultApp[423] Application Base URL: /WebObjects/Examples/HelloWorld Aug 22 18:08:50 WODefaultApp[423] Application Name: Examples/HelloWorld Aug 22 18:08:51 WODefaultApp[423] Reading WebServer configuration from /NextLibrary/WOAdaptors/Configuration/WebServerConfig.plist. Aug 22 18:08:51 WODefaultApp[423] Opening application's URL in Browser: http://localhost/cgi-bin/WebObjects/Examples/HelloWorld Aug 22 18:08:54 WODefaultApp[423] waiting for requests...
The subsequent three arguments belong to the adaptor specified in AdaptorClass; the first two of these are used in load balancing: You cannot specify adaptor arguments unless you specify an adaptor class.
- -n InstanceNumber
- A positive integer that uniquely identifies an application instance with which the adaptor will communicate. If you do not specify an instance number, the adaptor specified in AdaptorClass creates one using random number generation. If a URL does not specify the instance number, the application is presumed to run on the server machine as a single instance application, as if it had been autostarted. If you specify AdaptorClass for the purpose of load balancing, you must specify an instance number.
- Note that if you intend to use Monitor to administer the application, you must use the -n option. Monitor always assigns instances to the applications it knows about. If you start up an application without the -n option, its instance number is nil, and Monitor is not able to connect to it.
- -p PortNumber
- Specifies the socket port used to communicate with an application instance. Port numbers must be over 1024 since numbers between 0 and 1024 are reserved. If you specify AdaptorClass for the purpose of load balancing, you must specify a port number.
- -q ListenQueueDepth
- Specifies the queue depth on a TCP/IP socket at the entrance of the application. The default listen queue depth is 4, meaning that while the application process is handling a request, up to four other requests can be in the socket buffer before the socket starts refusing them. If the application is expected to experience "spikes" in its processing load, it might be a good idea to increase the listen queue depth. Increasing this default does not necessarily improve performance or allow the application to serve more requests at sustained high loads. For more information, see "Increasing the Listen Queue Depth" in this guide.
- ApplicationName
- Specifies the application name, which is the directory path relative to <DocRoot>/WebObjects. This argument is required when you use the -d option to specify the document root.
Examples
The following example starts the scripted application TimeOff on Windows NT:
> cd <DocRoot>\Examples\WebScript\TimeOff.woa > WODefaultApp.exe Examples/WebScript/TimeOff
The following example starts a compiled WebObjects example application on Mach, assigning it the default HTTP (CGI) adaptor and specifying port and instance numbers for that adaptor. Because an instance number is specified, if a Monitor is running on that machine, it can display application activity and shut down the application.
> HelloWorldCompiled -d /NextLibrary/WebServer/htdocs -a WODefaultAdaptor -n 1 -p 3000 -q 50 Examples/ObjC/HelloWorldCompiled
Notes
The web server uses the <DocRoot> and ApplicationName arguments to build URLs, so you should use forward slashes as opposed to a backslashes when specifying these arguments.
As a convenience, you might create a shell script that starts WebObjects applications when the server machine is booted. You also might create another shell script that you can run at the command line to start applications.