从 wsadmin 脚本使用诊断提供程序

除了从管理控制台启用诊断提供程序 (DP) 之外,还可以通过 wsadmin 工具中的脚本来使用。

有关此任务

您可能想要从管理控制台启用、禁用或配置诊断提供程序,但在某些情况下借助 wsadmin 工具使用脚本进行会更有效。

阅读 wsadmin 工具信息以了解将该工具与脚本配合使用的信息。

过程

  1. 列示实现诊断提供程序 (DP) 接口的 MBean。
    输入
    $AdminControl queryNames diagnosticProvider=true,* 
    
    然后,您将看到以如下格式显示所有诊断提供程序的输出:
    "WebSphere:name=Default Datasource,process=server1,platform=dynamicproxy,node=
      camelhair,JDBCProvider=Derby JDBC Provider,
    diagnosticProvider=true,j2eeType=JDBCDataSource,J2EEServer=server1,Server=server1,
      version=6.1.0.0,type=DataSource,
    mbeanIdentifier=cells/camelhairCell/nodes/camelhair/servers/server1/resources.xml#
      DataSource_1131113688564,
    JDBCResource=Derby JDBC Provider,cell=camelhairCell"
    "WebSphere:name=DefaultEJBTimerDataSource,process=server1,platform=dynamicproxy,
      node=camelhair,
    JDBCProvider=Derby JDBC Provider (XA),diagnosticProvider=true,j2eeType=
      JDBCDataSource,J2EEServer=server1,Server=server1,version=6.1.0.0,type=DataSource,
      mbeanIdentifier=cells/camelhairCell/nodes/camelhair/servers/server1/
      resources.xml#DataSource_1000001,
    JDBCResource=Derby JDBC Provider (XA),cell=camelhairCell"
    WebSphere:name=WebcontainerDiagnosticProvider,process=server1,platform=
      dynamicproxy,node=camelhair,diagnosticProvider=true,
    version=6.1.0.0,type=WebcontainerEventProvider,mbeanIdentifier=null,
      cell=camelhairCell
  2. 在变量中捕获诊断提供程序的对象名。
    这允许您更容易引用诊断提供程序,尤其在脚本中。 例如,如果要使用 WebContainer 诊断提供程序,可不用输入所有那些行,而是执行以下操作:
    • set DP [lindex [$AdminControl queryNames name=WebcontainerDiagnosticProvider,diagnosticProvider=true,*] 0]

      DP 变量中存储的此对象名可以在方法上使用,或者您可以使用该诊断提供程序名称作为文本或变量。

    • 在变量中具有对象名后,您可以使用下列命令获取变量中的诊断提供程序名称:
      set DPNm [$AdminControl invoke $DS getDiagnosticProviderNameById $DP]
      这提供了以下结果:
      WebContainerDP 

      现在 DiagnosticProvider (WebContainer) 可以通过它在变量 DP 中的对象名或者通过它在变量 DPNm 中的 DiagnosticProvider 名称寻址。 由于 DPName WebContainerDP,因此,如果您愿意,那么可以对其硬编码。

  3. 将 DiagnosticService MBean 的对象名保存至变量。
    对于 wsadmin , WebSphere® Application Server 提供了此 MBean ,以便诊断提供程序的输出更易于使用。 输入
    set DS [lindex [$AdminControl queryNames name=DiagnosticService,*] 0] 
    
  4. 运行 configDump。
    可以运行 configDump 并使用下列命令捕获所有属性:
    $AdminControl invoke $DS configDumpFormattedById [list $DP .* true null] 
    这将列出诊断提供程序在启动时使用的值 (以及可能的当前值)。
    表 1. configDump 输出的摘录。 下表列示了诊断提供程序在启动时使用的值以及可能的当前值。
    项并置名称
    customProperties = Null
    defaultVirtualHostName = default_host
    jvmProps = Null
    localeProps = Null
    servletCachingEnabled =
    aliases = *:9080;*:80;*:9443;
  5. 过滤 configDump 的输出。
    可以使用 configDumpFormatted (停止 ById)并为 $DPNm 或字符串 WebContainerDP 转换 $DP。 本示例使用此稍许修改过的版本上的 $DPNm,由此它仅获得处理自动操作的属性:
    $AdminControl invoke $DS configDumpFormatted [list $DPNm .*auto.* true null] 
    这导致仅使用那些在它们中包含 auto 的属性。 允许完全(但严格)的正则表达式语法。
    表 2. 结果下表列示了合并名称和值。
    项并置名称
    autoLoadFiltersEnabled =
    autoRequestEncoding =
    autoResponseEncoding =
    autoLoadFiltersEnabled =
    autoRequestEncoding =
    autoResponseEncoding =
    对于 stateDumps 和 selfDiagnostics,语法相同。