创建定制服务

可以为应用程序服务器创建一个或多个定制服务。各个定制服务都定义每当服务器启动和关闭时装入并初始化的类。这些类中的每个类都必须实现 com.ibm.websphere.runtime.CustomService 接口。在创建定制服务后,应使用管理控制台来对应用程序服务器配置该定制服务。

关于此任务

[z/OS]定制服务在服务方中运行,而不是在控制器中运行。例如,因为在服务器使用中可以启动多个服务方,且这些服务方可以在服务器(控制器)启动很久后启动,所以如 WLM 所需,在每个服务方启动期间运行定制服务。

[z/OS]如果需要定义服务器启动和关闭时运行的挂钩点,请创建定制服务类,然后使用管理控制台来配置定制服务实例。当应用程序服务器启动时,定制服务启动和初始化。

[AIX Solaris HP-UX Linux Windows][IBM i]要定义每当服务器或 Node Agent 启动和关闭时运行的例程,请开发定制服务类,然后配置定制服务实例。当应用程序服务器或 Node Agent 启动时,定制服务启动和初始化。

以下是适用于该产品定制服务实现的限制列表。这些限制中的大多数仅适用于 initialize 方法:
  • initialize 和 shutdown 方法必须将控制权返回给运行时。
  • 没有工作分派给服务器实例,直到所有定制服务 initialize 方法返回。
  • 在每个服务上仅调用一次 initialize 和 shutdown 方法,而且对于组成服务器实例的每个操作系统进程也仅调用一次。
  • 支持进程级别静态数据的初始化,无须离开过程。
  • 仅支持 JDBC RMLT(资源管理器局部事务)操作。在方法返回前,每个工作单元 (UOW) 必须完成。
  • 不支持线程的创建。
  • 不支持套接字和除文件 I/O 之外的 I/O 的创建。
  • 不支持运行标准 Java™ Platform, Enterprise Edition (Java EE) 代码,例如,客户机代码、servlet 和企业 Bean。
  • Java 事务 API(JTA)接口不可用。
  • 此功能仅在 Java EE 服务器进程和分布式通用服务器进程中才可用。
  • 当运行时尝试调用 shutdown 时,不保证 shutdown 将在进程终止前被调用。
  • 不支持请求资源的 JNDI 操作。

过程

  1. 开发实现 com.ibm.websphere.runtime.CustomService 接口的定制服务类。
    com.ibm.websphere.runtime.CustomService 接口包含 initialize 和 shutdown 方法。应用程序服务器使用该 initialize 方法将属性传递给此定制服务。其中一些属性可以:
    • 提供外部文件的名称,该文件包含服务的配置信息。可使用 externalConfigURLKey 属性来检索此信息。
    • 包含为服务而存储的“名称/值”对以及服务的其他系统管理配置数据。

    initialize 方法和 shutdown 方法都声明,虽然未定义特定的异常子类,但他们都可能会创建异常。如果任一方法创建了异常,那么运行时将记录该异常并禁用定制服务,然后继续启动服务器。

  2. 配置定制服务。

    在管理控制台中,请单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name,然后在“服务器基础结构”下面,单击定制服务 > 新建。然后,在定制服务实例的设置页面上,通过提供所实现类的名称来创建现有应用程序服务器或 Node Agent 的定制服务配置。如果您的定制服务类需要配置文件,那么在 externalConfigURL 字段中指定该配置文件的标准路径名。该文件名传递至您的定制服务类中。

    要从定制服务调用本机库文件,除了用于找到定制服务的类和 JAR 文件的路径名外,在类路径字段中提供路径名。此过程会将路径名添加到扩展类装入器,从而允许定制服务找到并正确装入本机库。

  3. 停止并重新启动应用程序服务器。

    [AIX Solaris HP-UX Linux Windows][IBM i]如果您正在为应用程序服务器开发定制服务,那么停止然后重新启动应用程序服务器。

    [AIX Solaris HP-UX Linux Windows][IBM i]如果您正在为 Node Agent 开发定制服务,停止并接着重新启动 Node Agent 的处理。在管理控制台中,请单击系统管理 > Node Agent,选择想要停止的 Node Agent,然后单击停止。要重新启动 Node Agent,请选择想要重新启动的 Node Agent,然后单击重新启动

    [z/OS]停止然后重新启动应用程序服务器。

结果

各个定制服务都定义每当服务器启动和关闭时装入并初始化的类。

[AIX Solaris HP-UX Linux Windows][IBM i]每当服务器或 Node Agent 启动和停止时,定制服务都将装入并初始化。

[z/OS]每当服务器启动和关闭时,定制服务都将装入并初始化。

示例

如上所述,您的定制服务类必须实现 com.ibm.websphere.runtime.CustomService 接口。另外,您的类必须实现 initialize 和 shutdown 方法。以下示例显示了用来声明实现您的定制服务的 ServerInit 类的代码。以下代码假设您的定制服务类需要配置文件。本示例还包含用来访问外部配置文件的代码。如果您的类不需要配置文件,那么不必包含以下代码的 configProperties 部分。
public class ServerInit implements com.ibm.websphere.runtime.CustomService
{
/**
* The initialize method is called by the application server runtime when the
* server starts. The Properties object that the application server passes
* to this method must contain all of  the configuration information that this 
* service needs 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 runtime when the
* server begins its shutdown processing.
*
    public void shutdown() throws Exception
    {
        // Implement shutdown method
    }

下一步做什么

[AIX Solaris HP-UX Linux Windows][IBM i]检查应用程序服务器或 Node Agent,以验证定制服务的 initialize 和 shutdown 方法是否按预期方式运行。

[z/OS]检查应用程序服务器,以验证定制服务的 initialize 和 shutdown 方法是否按预期方式运行。


指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=trun_customservice
文件名:trun_customservice.html