26 Installing Oracle Coherence

This chapter provides instructions for installing Oracle Coherence.

Downloading and Extracting Coherence

Coherence is distributed as a zip file for Windows and any other operating system supporting the zip format. If prompted by your browser, choose to save the downloaded file. When it has completed downloading, expand the zip file (using WinZip or the unzip command-line utility) to the location of your choice. On Windows, you can expand it to your c:\ directory; on UNIX, it is suggested that you expand it to the /opt directory. Expanding the zip will create a coherence directory with several sub-directories.

Installing Coherence

If you are adding Coherence to an application server, you will need to make sure that the coherence.jar library (found in coherence/lib/) is in the CLASSPATH (or the equivalent mechanism that your application server uses).

Alternatively, if your application server supports it, you can package the coherence.jar libraries into your application's .ear, .jar or .war file.

For purposes of compilation, you will need to make sure that the coherence.jar library is on the CLASSPATH (or the equivalent mechanism that your compiler or IDE uses).

Verifying that Multiple Nodes and Servers are Able to Form a Cluster

Coherence includes a self-contained console application that can be used to verify that installation is successful and that all the servers that are meant to participate in the cluster are indeed capable of joining the cluster. We recommend that you perform this quick test when you first start using Coherence in a particular network and server environment, to verify that the nodes do indeed connect as expected. You can do that by repeating the following set of steps to start Coherence on each server (you can start multiple instances of Coherence on the same server as well):

  • Change the current directory to the Coherence library directory (%COHERENCE_HOME%\lib on Windows and $COHERENCE_HOME/lib on UNIX).

  • Make sure that the paths are configured so that the Java command will run.

  • Run the following command to start Coherence command line:

    java -jar coherence.jar
    

You should see something like this after you start the first member:

Example 26-1 Sample Output after Starting the First Member

D:\coherence\lib>java -jar coherence.jar
2008-09-15 19:37:16.164 Oracle Coherence 3.4/405 <Info> (thread=main, member=n/a): Loaded operational configuration from 
resource "jar:file:/D:/coherence/lib/coherence.jar!/tangosol-coherence.xml"
2008-09-15 19:37:16.164 Oracle Coherence 3.4/405  <Info> (thread=main, member=n/a): Loaded operational overrides from 
resource "jar:file:/D:/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
2008-09-15 19:37:16.164 Oracle Coherence 3.4/405  <D5> (thread=main, member=n/a): Optional configuration override 
"/tangosol-coherence-override.xml" is not specified
2008-09-15 19:37:16.174 Oracle Coherence 3.4/405 <D5> (thread=main, member=n/a): Optional configuration override 
"/custom-mbeans.xml" is not specified

Oracle Coherence Version 3.4/405
 Grid Edition: Development mode
Copyright (c) 2000-2008 Oracle. All rights reserved.

2008-09-15 19:37:17.106 Oracle Coherence GE 3.4/405  <D5> (thread=Cluster, member=n/a): Service Cluster joined the
cluster with senior service member n/a
2008-09-15 19:37:20.320 Oracle Coherence GE 3.4/405  <Info> (thread=Cluster, member=n/a): Created a new cluster 
"cluster:0x19DB" with Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
Location=site:mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole, Edition=Grid Edition, Mode=Development, 
CpuCount=1, SocketCount=1) UID=0x0A8F9C7A0000011BE7A10EBF197A1F98
SafeCluster: Name=cluster:0x19DB

Group{Address=224.3.4.0, Port=34405, TTL=4}

MasterMemberSet
  (
  ThisMember=Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
  Location=site:mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole)
  OldestMember=Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
  Location=site:mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole)
  ActualMemberSet=MemberSet(Size=1, BitSetCount=2
    Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
    Location=site:mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole)
    )
  RecycleMillis=120000
  RecycleSet=MemberSet(Size=0, BitSetCount=0
    )
  )

Services
  (
  TcpRing{TcpSocketAccepter{State=STATE_OPEN, ServerSocket=xxx.xxx.xxx.xxx:8088}, Connections=[]}
  ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, Version=3.4, OldestMemberId=1}
  )

Map (?):

As you can see there is only one member listed in the ActualMemberSet. When the second member is started, you should see something similar to the following at its start up:

Example 26-2 Sample Output after Starting the Second Member

D:\coherence\lib>java -jar coherence.jar
2008-09-15 19:47:24.379 Oracle Coherence 3.4/405  <Info> (thread=main, member=n/a): Loaded operational configuration from 
resource "jar:file:/D:/coherence/lib/coherence.jar!/tangosol-coherence.xml"
2008-09-15 19:47:24.389 Oracle Coherence 3.4/405 <Info> (thread=main, member=n/a): Loaded operational overrides from 
resource "jar:file:/D:/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
2008-09-15 19:47:24.389 Oracle Coherence 3.4/405  <D5> (thread=main, member=n/a): Optional configuration override 
"/tangosol-coherence-override.xml" is not specified
2008-09-15 19:47:24.399 Oracle Coherence 3.4/405 <D5> (thread=main, member=n/a): Optional configuration override 
"/custom-mbeans.xml" is not specified

Oracle Coherence Version 3.4/405
 Grid Edition: Development mode
Copyright (c) 2000-2008 Oracle. All rights reserved.

2008-09-15 19:47:25.380 Oracle Coherence GE 3.4/405  <D5> (thread=Cluster, member=n/a): Service Cluster joined the
cluster with senior service member n/a
2008-09-15 19:47:25.591 Oracle Coherence GE 3.4/405  <Info> (thread=Cluster, member=n/a): This Member(Id=2, 
Timestamp=2008-09-15 19:47:25.39, Address=xxx.xxx.xxx.xxx:8089, MachineId=6522, Location=site:mydomain.com, 
machine:mycomputer,process:2768, Role=CoherenceConsole, Edition=Grid Edition, Mode=Development, CpuCount=1, SocketCount=1) joined 
cluster "cluster:0x19DB" with senior Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
Location=site:mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole, Edition=Grid Edition, Mode=Development, 
CpuCount=1, SocketCount=1)
SafeCluster: Name=cluster:0x19DB

Group{Address=224.3.4.0, Port=34405, TTL=4}

MasterMemberSet
  (
  ThisMember=Member(Id=2, Timestamp=2008-09-15 19:47:25.39, Address=xxx.xxx.xxx.xxx:8089, MachineId=6522, 
  Location=site:mydomain.com,machine:mycomputer,process:2768, Role=CoherenceConsole)
  OldestMember=Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
  Location=site:mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole)
  ActualMemberSet=MemberSet(Size=2, BitSetCount=2
    Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
    Location=site:mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole)
    Member(Id=2, Timestamp=2008-09-15 19:47:25.39, Address=xxx.xxx.xxx.xxx:8089, MachineId=6522, 
    Location=site:mydomain.com,machine:mycomputer,process:2768, Role=CoherenceConsole)
    )
  RecycleMillis=120000
  RecycleSet=MemberSet(Size=0, BitSetCount=0
    )
  )

Services
  (
  TcpRing{TcpSocketAccepter{State=STATE_OPEN, ServerSocket=xxx.xxx.xxx.xxx:8089}, Connections=[]}
  ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, Version=3.4, OldestMemberId=1}
  )

Map (?):
2008-09-15 19:47:27.293 Oracle Coherence GE 3.4/405 <D5> (thread=TcpRingListener, member=2): TcpRing: connecting to 
member 1 using TcpSocket{State=STATE_OPEN, Socket=Socket[addr=/xxx.xxx.xxx.xxx,port=2820,localport=8089]}

Map (?):

If you execute the who command at the prompt of the first member after the second member is started, you should see the same two members:

Example 26-3 Output from Execurint the "who" Command

Map (?): who
SafeCluster: Name=cluster:0x19DB

Group{Address=224.3.4.0, Port=34405, TTL=4}

MasterMemberSet
  (
  ThisMember=Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
  Location=mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole)
  OldestMember=Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
  Location=site:mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole)
  ActualMemberSet=MemberSet(Size=2, BitSetCount=2
    Member(Id=1, Timestamp=2008-09-15 19:37:16.735, Address=xxx.xxx.xxx.xxx:8088, MachineId=6522, 
    Location=site:mydomain.com,machine:mycomputer,process:3716, Role=CoherenceConsole)
    Member(Id=2, Timestamp=2008-09-15 19:47:25.39, Address=xxx.xxx.xxx.xxx:8089, MachineId=6522, 
    Location=site:mydomain.com,machine:mycomputer,process:2768, Role=CoherenceConsole)
    )
  RecycleMillis=120000
  RecycleSet=MemberSet(Size=0, BitSetCount=0
    )
  )

Services
  (
  TcpRing{TcpSocketAccepter{State=STATE_OPEN, ServerSocket=xxx.xxx.xxx.xxx:8088}, Connections=[2]}
  ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, Version=3.4, OldestMemberId=1}
  )

Map (?):

As more new members are started, you should see their addition reflected in the ActualMemberSet list. If you do not see new members being added, your network may not be properly configured for multicast traffic. See "Performing a Multicast Connectivity Test" to diagnose the problem..