Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "SMILA/Documentation/JMXClient"

m
Line 181: Line 181:
 
<source lang="xml">
 
<source lang="xml">
 
<jmxclient xmlns="http://www.eclipse.org/smila/management/jmx/client" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
<jmxclient xmlns="http://www.eclipse.org/smila/management/jmx/client" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="schemas/jmx.xsd"
+
   xsi:noNamespaceSchemaLocation="schemas/jmxclient.xsd"
 
>
 
>
 
   <connection id="local" host="localhost" port="9004"/>
 
   <connection id="local" host="localhost" port="9004"/>

Revision as of 09:55, 10 February 2009

What is JMXClient

The main goal of generic JMX Client is to execute management operations from console; For example, its able to invoke JMX operation, to read JMX attribute, to process result by regular expression, to wait while some term becomes equal to other term and many more.

Configuration

Source

 Schema: "org.eclipse.smila.management.jmx.client/schemas/jmxclient.xsd"
 Location: "org.eclipse.smila.management.jmx.client/config.xml"

Application

 Schema: "jmxclient/schemas/jmxclient.xsd"
 Location: "jmxclient/config.xml"


Schema

<xs:schema
  targetNamespace="http://www.eclipse.org/smila/management/jmx/client"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns="http://www.eclipse.org/smila/management/jmx/client"
>
 
  <xs:complexType name="ConnectionConfigType">
    <xs:attribute name="id" type="xs:string" use="required"/>
    <xs:attribute name="host" type="xs:string" use="optional" default="localhost"/>
    <xs:attribute name="port" type="xs:int" use="optional" default="9004"/>
  </xs:complexType>
 
  <xs:complexType name="ItemType">
    <xs:attribute name="echo" type="xs:string" use="required"/>
  </xs:complexType>
 
  <xs:complexType name="PropertyType">
    <xs:complexContent>
      <xs:extension base="ItemType">
        <xs:attribute name="domain" type="xs:string" use="required"/>
        <xs:attribute name="key" type="xs:string" use="required"/>
        <xs:attribute name="name" type="xs:string" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="AttributeType">
    <xs:complexContent>
      <xs:extension base="PropertyType"/>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="ParameterType">
    <xs:complexContent>
      <xs:extension base="ItemType">
        <xs:attribute name="class" type="xs:string" use="optional" default="java.lang.String"/>
        <xs:attribute name="value" type="xs:string" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="ConstantType">
    <xs:complexContent>
      <xs:extension base="ParameterType"/>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="OperationType">
    <xs:complexContent>
      <xs:extension base="PropertyType">
        <xs:sequence>
          <xs:element name="parameter" type="ParameterType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="printResult" type="xs:boolean" use="optional" default="true"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="RegexpType">
    <xs:complexContent>
      <xs:extension base="ItemType">
        <xs:attribute name="pattern" type="xs:string" use="required"/>
        <xs:attribute name="group" type="xs:int" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="BooleanOpType" abstract="true">
  </xs:complexType>
 
  <xs:complexType name="UnaryOpType" abstract="true">
    <xs:complexContent>
      <xs:extension base="BooleanOpType">
        <xs:sequence>
          <xs:element name="cmd" type="CmdConfigType"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="BinaryOpType" abstract="true">
    <xs:complexContent>
      <xs:extension base="BooleanOpType">
        <xs:sequence minOccurs="2" maxOccurs="2">
          <xs:choice>
            <xs:element name="cmd" type="CmdConfigType"/>
            <xs:element name="const" type="ConstantType"/>
          </xs:choice>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="EqualsOpType">
    <xs:complexContent>
      <xs:extension base="BinaryOpType"/>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="WaitType">
    <xs:complexContent>
      <xs:extension base="ItemType">
        <xs:sequence>
        <!-- TODO: extend with other opeartions required-->
          <xs:element name="equals" type="EqualsOpType"/>
          <xs:element name="cmd" type="CmdConfigType" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="pause" type="xs:int" use="optional" default="5000"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="CustomType">
    <!-- TODO -->
    <xs:complexContent>
      <xs:extension base="ItemType">
        <xs:attribute name="class" type="xs:string" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="CmdConfigType">
    <xs:complexContent>
      <xs:extension base="ItemType">
        <xs:sequence>
          <xs:choice  minOccurs="1" maxOccurs="unbounded">
            <xs:element name="attribute"  type="AttributeType"/>
            <xs:element name="operation"  type="OperationType"/>
            <xs:element name="regexp"  type="RegexpType"/>
            <xs:element name="wait"  type="WaitType"/>
            <xs:element name="custom"  type="CustomType"/>
          </xs:choice>
        </xs:sequence>
        <xs:attribute name="id" type="xs:string" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="SampleConfigType">
    <xs:complexContent>
      <xs:extension base="ItemType">
        <xs:attribute name="value" type="xs:string" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
 
  <xs:complexType name="JmxClientConfigType">
    <xs:sequence>
      <xs:element name="connection"  type="ConnectionConfigType" minOccurs="1" maxOccurs="unbounded"/>
      <xs:element name="cmd"  type="CmdConfigType" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="sample"  type="SampleConfigType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
 
  <xs:element name="jmxclient" type="JmxClientConfigType"/>
 
</xs:schema>

Sample configuration file

<jmxclient xmlns="http://www.eclipse.org/smila/management/jmx/client" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="schemas/jmxclient.xsd"
>
  <connection id="local" host="localhost" port="9004"/>
  <connection id="test" host="10.0.0.1" port="23123"/>
  <cmd id="crawl" echo="Starting crawler by datasource id">
    <operation
      domain="SMILA"
      key="org.eclipse.smila.connectivity.framework.CrawlerController"
      name="startCrawl"
      echo="Starting crawl [%1]..."
    >
      <parameter echo="data source id"/>
    </operation>
  </cmd>
  <cmd id="crawlStop" echo="Stop crawler by datasource id">
    <operation
      domain="SMILA"
      key="org.eclipse.smila.connectivity.framework.CrawlerController"
      name="stopCrawl"
      echo="Stopping crawl [%1]..."
    >
      <parameter echo="data source id"/>
    </operation>
  </cmd>
  <cmd id="crawlW" echo="Starting crawler by datasource id and wait for finished">
    <operation
      domain="SMILA"
      key="org.eclipse.smila.connectivity.framework.CrawlerController"
      name="startCrawl"
      echo="Starting crawl [%1]..."
    >
      <parameter echo="data source id"/>
    </operation>
    <!-- result will be similar to "Crawl with the dataSourceId = file and hashcode [595826] successfully started!"
         we have to extract hashcode from string -->
    <regexp pattern="^.*\[(\d+)\].*$" group="1" echo="Extracting crawler hash code..."/>
    <wait echo="Waiting while crawl ends..." pause="1000">
      <equals>
        <cmd id="fakeCmdId" echo="Getting crawler status by datasource id">
          <operation
            domain="SMILA"
            key="org.eclipse.smila.connectivity.framework.CrawlerController"
            name="getStatus"
            echo="Getting crawl [%1] status..."
          >
            <!--  value="%1" -->
            <parameter echo="data source id"/>
          </operation>
        </cmd>
        <const value="Finished" echo="Crawling finished status"/>
      </equals>
      <cmd id="fakeCmdId2" echo="Reading craler performance counters">
        <attribute
          domain="SMILA Crawlers"
          key="Crawlers,crawler=%2,name=Total,counter=records"
          name="Value"
          echo="Detecting total records crawled..."
        />
        <attribute
          domain="SMILA Crawlers"
          key="Crawlers,crawler=%2,name=Instances,hash=%0,counter=records"
          name="Value"
          echo="Detecting records crawled for that instance..."
        />
        <attribute
          domain="SMILA Crawlers"
          key="Crawlers,crawler=%2,name=Instances,hash=%0,buffer=Errors"
          name="Errors"
          echo="Detecting errors..."
        />
      </cmd>
    </wait>
  </cmd>
  <cmd id="activeCrawls" echo="Reading active crawls">
    <attribute
      domain="SMILA"
      key="org.eclipse.smila.connectivity.framework.CrawlerController"
      name="ActiveCrawls"
      echo="Detecting active crawls..."
    />
  </cmd>  
  <cmd id="createIndex" echo="Create index by name">
    <operation
      domain="SMILA"
      key="org.eclipse.smila.lucene"
      name="createIndex"
      echo="Creating index [%1]..."
    >
      <parameter echo="index name"/>
    </operation>
  </cmd>
  <cmd id="reorganizeIndex" echo="Optimize index by name">
    <operation
      domain="SMILA"
      key="org.eclipse.smila.lucene"
      name="reorganizeIndex"
      echo="Optimizing index [%1]..."
      printResult="false"
    >
      <parameter echo="index name"/>
    </operation>
  </cmd>
  <cmd id="deleteIndex" echo="Delete index by name">
    <operation
      domain="SMILA"
      key="org.eclipse.smila.lucene"
      name="deleteIndex"
      echo="Deleting index [%1]..."
      printResult="false"
    >
      <parameter echo="index name"/>
    </operation>
  </cmd>
  <cmd id="isIndexExists" echo="Check is index exists by name">
    <operation
      domain="SMILA"
      key="org.eclipse.smila.lucene"
      name="isIndexExists"
      echo="Checking index [%1]..."
    >
      <parameter echo="index name"/>
    </operation>
  </cmd>
  <cmd id="renameIndex" echo="Rename index">
    <operation
      domain="SMILA"
      key="org.eclipse.smila.lucene"
      name="renameIndex"
      echo="Renaming index [%1] to [%2]..."
      printResult="false"
    >
      <parameter echo="index name"/>
      <parameter echo="new index name"/>
    </operation>
  </cmd>
  <sample value="run crawl file" echo="starts filesystem crawler"/>
  <sample value="run crawlW file FilesystemCrawlerDS" echo="starts filesystem crawler and waits crawling end"/>
</jmxclient>

Back to the top