This chapter provides instructions for installing Oracle 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.
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).
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 23-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 23-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 23-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..