Sometimes you do not know how many managed services you will have, due to application scaling or other use cases. Since you do specify resources like clusters and datasources in a more ‘static’ way, there should be a way to qualify a managed server as a target for such resources.

We use the notes field in WebLogic Server to accomplish this. Currently implemented for the following resource types:

  • wls_cluster
  • wls_datasouce
  • wls_mail_session

The way you use this, is by entering the resource name in the server_parameter field on the wls_server type, and put the servers field to ‘inherited’ on the resource to be targeted.

Example:


wls_server { 'wlsServer1':
  ensure                            => 'present',
  arguments                         => '-XX:PermSize=256m -XX:MaxPermSize=256m -Xms752m -Xmx752m -Dweblogic.Stdout=/var/log/weblogic/wlsServer1.out -Dweblogic.Stderr=/var/log/weblogic/wlsServer1_err.out',
  jsseenabled                       => '0',
  listenaddress                     => '10.10.10.100',
  listenport                        => '8001',
  listenportenabled                 => '1',
  machine                           => 'Node1',
  sslenabled                        => '0',
  tunnelingenabled                  => '0',
  max_message_size                  => '10000000',
  server_parameter                  => 'WebCluster, hrDs',
}

wls_cluster { 'WebCluster':
  ensure           => 'present',
  messagingmode    => 'unicast',
  migrationbasis   => 'consensus',
  servers          => ['inherited'],
  multicastaddress => '239.192.0.0',
  multicastport    => '7001',
}

wls_datasource { 'hrDS':
  ensure                           => 'present',
  connectioncreationretryfrequency => '0',
  drivername                       => 'oracle.jdbc.xa.client.OracleXADataSource',
  extraproperties                  => ['SendStreamAsBlob=true', 'oracle.net.CONNECT_TIMEOUT=10001'],
  fanenabled                       => '0',
  globaltransactionsprotocol       => 'TwoPhaseCommit',
  initialcapacity                  => '2',
  initsql                          => 'None',
  jndinames                        => ['jdbc/hrDS', 'jdbc/hrDS2'],
  maxcapacity                      => '15',
  mincapacity                      => '1',
  rowprefetchenabled               => '0',
  rowprefetchsize                  => '48',
  secondstotrustidlepoolconnection => '10',
  statementcachesize               => '10',
  target                           => ['inherited'],
  targettype                       => ['inherited'],
  testconnectionsonreserve         => '0',
  testfrequency                    => '120',
  testtablename                    => 'SQL SELECT 1 FROM DUAL',
  url                              => 'jdbc:oracle:thin:@dbagent2.alfa.local:1521/test.oracle.com',
  user                             => 'hr',
  usexa                            => '0',
}

In the case of the wls_datasource type, the jdbc connection will be targetted on the cluster if the managed server is in a cluster.