Previous Topic

Book Contents

Book Index

Next Topic

Example

Customer has a cluster of two nodes t1, t2.

Node t1

runs tomcat svx-valuet01:8080 with vmweb app ... Valuemation for end users
runs tomcat svx-valuet01:8081 with vmprocess app ... Valuemation with WatchDog and process engine(s) running, not for end users
copy of ProcessEngineConfiguration.json is in a shared directory accessible from both vmweb and vmprocess

Node t2

runs tomcat svx-valuet02:8080 with vmweb app ... Valuemation for end users
runs tomcat svx-valuet02:8081 with vmprocess app ... Valuemation with WatchDog and process engine(s) running, not for end users
copy of ProcessEngineConfiguration.json is in a shared directory accessible from both vmweb and vmprocess

Process Engines is composed of

PROCESSINTERPRETER ... which should run preferably on t1, substitute is t2
TASKEXECUTOR01 .... which should run preferably on t2, substitute is t1

Configuration

vmconfig.properties

  • is used both by vmweb and vmprocess and it is the same on both nodes t1, t2.
    defines location of the ProcessEngineConfiguration.json.

dbconfig=//opt//tomcat-vmprocess//conf//dbconfig.properties
java.security.auth.login.config=//opt//tomcat-vmprocess//conf//AuthenticationManager_jaas.config
processEngineConfigurationLocation=//opt//tomcat-vmshared//conf//ProcessEngineConfiguration.json
vmweb.dumpconfig=true
allow_applets=true

ProcessEngineConfiguration.json

File is duplicated on t1 and t2 in //opt//tomcat-vmshared//conf//.

###rob 2012-05-30 files muessen auf beiden servern svx-valuet01 und t02 identisch bleiben

{
  "nodes": [
    {
      "name": "svx-valuet01:8081",
      "url": "http://svx-valuet01.companyx.com:8081/vmprocess/services/",
      "processInterpreterEndpoint": {
        "relativeEndpointAddress": "ProcessInterpreterControllerPort"
       },
      "taskExecutorEnpoints": [
        {
          "name": "A",
          "relativeEndpointAddress": "TaskExecutorControllerPort/A"
        },
        {
          "name": "B",
          "relativeEndpointAddress": "TaskExecutorControllerPort/B"
        }
      ]
     },
     {
      "name": "svx-valuet02:8081",
      "url": "http://svx-valuet02.companyx.com:8081/vmprocess/services/",
      "processInterpreterEndpoint": {
        "relativeEndpointAddress": "ProcessInterpreterControllerPort"
      },
       "taskExecutorEnpoints": [
        {
          "name": "A",
          "relativeEndpointAddress": "TaskExecutorControllerPort/A"
        },
        {
          "name": "B",
          "relativeEndpointAddress": "TaskExecutorControllerPort/B"
        }
      ]
    }
  ],
  "processInterpreter": {
    "userName": "PROCESSINTERPRETER",
    "cryptedPassword": "9A1E8801BD3B8B1AFF764F3709D0DF19",
    "startOnLoad": true,
    "sessionTimeoutInMinutes": 120,
    "canRunAt": [
      {
        "nodeName": "svx-valuet01:8081",
        "endpointName": ""
      },
      {
        "nodeName": "svx-valuet02:8081",
        "endpointName": ""
      }
    ]
  },
  "taskExecutors": [
    {
      "userName": "TASKEXECUTOR01",
      "cryptedPassword": "9A1E8801BD3B8B1AFF764F3709D0DF19",
      "startOnLoad": true,
      "sessionTimeoutInMinutes": 120,
      "canRunAt": [
        {
          "nodeName": "svx-valuet02:8081",
          "endpointName": "A"
        },
        {
          "nodeName": "svx-valuet01:8081",
          "endpointName": "A"
        }
      ]
    }
  ],
  "mailProblemTo": "g000474@companyx.com",
  "mailProblemCc": "robert.s@companyx.com"
}

Deploying a new hotfix

  1. shutdown
    • t1 vmprocess
    • t1 vmweb
    • t2 vmprocess
    • t2 vmweb
  2. apply hotfix XML and SQL on database
  3. deploy new war on
    • t1 vmprocess
    • t1 vmweb
    • t2 vmprocess
    • t2 vmweb
  4. modify WEB-INF/web.xml: uncomment load-on-startup on
    • t1 vmprocess
    • t1 vmweb
    • t2 vmprocess
    • t2 vmweb

    <servlet-name>cxf</servlet-name>
    <load-on-startup>3</load-on-startup>

    cxf servlet will be loaded when web app starts

  5. modify WEB-INF/cxf-servlet.xml: set stepInMillis = -1 on
    • t1 vmweb
    • t2 vmweb

    <bean id="theWatchDog" class=...
    <!-- ...stepInMillis = -1 means WatchDog NEITHER starts engines on load, NOR it periodically checks that engines are still running -->
    <property name="stepInMillis" value="-1">

    for theWatchDog bean, so that the WatchDog is switched OFF and does not start engines on tomcats with app for end-users

  6. modify WEB-INF/cxf-servlet.xml: set logSteps = true on
    • t1 vmprocess
    • t2 vmprocess

    <bean id="theProcessInterpreterController" class=...
    ...
    <property name="logSteps" value="true">

    ...
    <bean id="taskExecutorControllerA" class=...
    ...
    <property name="logSteps" value="true">

    for theProcessInterpreterController, taskExecutorControllerA beans, so engines log steps of their execution

  7. start
    • t1 vmprocess
    • t2 vmprocess
    • t1 vmweb
    • t2 vmweb

See Also

Process Engine Settings

How to start Process Engine on the Rich client

How to set-up and start Process Engine on Tomcat

How to Upgrade Existing Installation of Web-App with Process Engine

Process Engine Configuration File

Process Engine Console

WatchDog

Closing session in the catalog Sessions of Process Engine

Test

Parameters for Process Engine Caching

Multilingual Support

Process Engine and Security Certificates