Developing custom services

 

Developing custom services

To define a hook point to be run when a server or node agent starts and shuts down, you develop a custom service class and then configure a custom service instance. When the application server or node agent starts, the custom service starts and initializes. The following restrictions apply to the WebSphere Application Server custom services implementation:

Note that these restrictions apply to the shutdown and init methods equally. Some JNDI operations are available.

  1. Develop a custom service class that implements the com.ibm.websphere.runtime.CustomService interface. The properties passed by the application server runtime to the initialize method can include one for an external file containing configuration information for the service (retrieved with externalConfigURLKey). In addition, the properties can contain any name-value pairs that are stored for the service, along with the other system administration configuration data for the service. The properties are passed to the initialize method of the service as a Properties object.

    There is a shutdown method for the interface as well. Both methods of the interface declare that they may create an exception, although no specific exception subclass is defined. If an exception is created, the runtime logs it, disables the custom service, and proceeds with starting the server.

  2. On the Custom Service page of the administrative console, click New . Then, on the settings page for a custom service instance, create a custom service configuration for an existing application server or node agent, supplying the name of the class implemented. If your custom service class requires a configuration file, specify the fully-qualified path name to that configuration file in the externalConfigURL field. This file name is passed into your custom service class.

    To invoke a native library from the custom service, provide the path name in the Classpath field in addition to the path names that are used to locate the classes and JAR files for the custom service. Doing this adds the path name to the WebSphere Application Server extension classloader, which allows the custom service to locate and correctly load the native library.

  3. If you are developing a custom service for an application server, stop the application server and then restart the server. See Start and stop the application server for more information.

  4. If you are developing a custom service for a node agent, stop and then restart the processing of the node agent. On the Node Agents page of the administrative console (System Administration > Node Agents), place a checkmark in the check box beside the node agent you want to stop, then click Stop. To restart the node agent, place a checkmark in the check box beside the node agent, then click Restart.

  5. Check the application server or
    node agent to ensure that the initialize method of the custom service ran as intended. Also ensure that the shutdown method performs as intended when the server or node agent stops.

ExampleServerInit

public class ServerInit implements CustomService {
/**
* The initialize method is called by the application server run-time when the * server starts. The Properties object passed to this method must contain all * configuration information necessary for this service to initialize properly.
*
* @param configProperties java.util.Properties */
    static final java.lang.String externalConfigURLKey =
       "com.ibm.websphere.runtime.CustomService.externalConfigURLKey";
          
    static String ConfigFileName="";

    public void initialize(java.util.Properties configProperties) throws Exception     {
        if (configProperties.getProperty(externalConfigURLKey) != null)
        {
           ConfigFileName = configProperties.getProperty(externalConfigURLKey);
        }

       // Implement rest of initialize method     }
/**
* The shutdown method is called by the application server run-time when the * server begins its shutdown processing.
*
* @param configProperties java.util.Properties */
    public void shutdown() throws Exception     {
        // Implement shutdown method     }



Sub-topics

Custom service collection

Related concepts
Custom services