Forum Stats

  • 3,874,765 Users
  • 2,266,771 Discussions
  • 7,911,962 Comments

Discussions

How to connect Java client to Remote Oracle Coherence Cluster

User_A3J2W
User_A3J2W Member Posts: 1 Green Ribbon
edited Mar 11, 2022 7:26AM in QA/Testing

I'm using coherence cluster as remote cache servers (run with Weblogic 12.2.1.3.0) and trying connect from Java application as clients. But I faced error exception while try to connect to Coherence Cluster with cause : 

Caused by: com.tangosol.net.messaging.ConnectionException: could not establish a connection to one of the following addresses: [10.165.17.23:7574]

Here is my code :

  1. Server side
  • Custom cache config custom-cache-config.xml:
<?xml version="1.0"?>
<cache-config>
    <caching-scheme-mapping>
        <cache-mapping>
            <cache-name>mycache</cache-name>
            <scheme-name>mycache</scheme-name>
        </cache-mapping>
    </caching-scheme-mapping>
    <caching-schemes>
        <distributed-scheme>
            <scheme-name>mycache</scheme-name>
            <service-name>mycacheService</service-name>
            <autostart>true</autostart>
            <backing-map-scheme>
                <read-write-backing-map-scheme>
                    <internal-cache-scheme>
                        <local-scheme>
                <expiry-delay>10d</expiry-delay>
                <flush-delay>1d</flush-delay>
            </local-scheme>
                    </internal-cache-scheme>
                    <read-only>false</read-only>
                </read-write-backing-map-scheme>
                <autostart>true</autostart>
            </backing-map-scheme>
        </distributed-scheme>
    <proxy-scheme>
        <service-name>ExtendTcpCacheService</service-name>
        <autostart>true</autostart>
    </proxy-scheme>
    </caching-schemes>
    <tcp-acceptor>
       <local-address>
          <address>10.165.17.23</address>
          <port>7574</port>
       </local-address>
    </tcp-acceptor>
</cache-config>
  • Run Servers Cache by :
java -Dtangosol.coherence.cacheconfig=custom-cache-config.xml -Dtangosol.coherence.cluster=mycache -Dtangosol.coherence.clusteraddress=10.165.17.23 -Dtangosol.coherence.clusterport=7574  -Dtangosol.coherence.extend.enabled=true -jar ../lib/coherence.jar
  • Server logs :
2022-03-11 13:50:01.110/0.325 Oracle Coherence 12.2.1.3.17 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/data01/install/fmw/coherence/lib/coherence.jar!/tangosol-coherence.xml"
2022-03-11 13:50:01.141/0.355 Oracle Coherence 12.2.1.3.17 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/data01/install/fmw/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
2022-03-11 13:50:01.141/0.356 Oracle Coherence 12.2.1.3.17 <Info> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
2022-03-11 13:50:01.143/0.358 Oracle Coherence 12.2.1.3.17 <Info> (thread=main, member=n/a): Optional configuration override "cache-factory-config.xml" is not specified
2022-03-11 13:50:01.143/0.358 Oracle Coherence 12.2.1.3.17 <Info> (thread=main, member=n/a): Optional configuration override "cache-factory-builder-config.xml" is not specified
2022-03-11 13:50:01.144/0.358 Oracle Coherence 12.2.1.3.17 <Info> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified

Oracle Coherence Version 12.2.1.3.17 Build 89350
 Grid Edition: Development mode
Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.

2022-03-11 13:50:01.237/0.451 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=main, member=n/a): Loaded cache configuration from "file:/data01/install/fmw/coherence/bin/custom-cache-config.xml"; this document does not refer to any schema definition and has not been validated.
2022-03-11 13:50:01.452/0.667 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=main, member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigurableCacheFactory
2022-03-11 13:50:01.712/0.927 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=main, member=n/a): TCMP bound to /10.165.17.23:33457 using SystemDatagramSocketProvider
2022-03-11 13:50:02.792/2.007 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=NameServiceBridge:TcpInitiator, member=n/a): Loaded POF configuration from "jar:file:/data01/install/fmw/coherence/lib/coherence.jar!/coherence-pof-config.xml"
2022-03-11 13:50:05.965/5.179 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=NameService:TcpAcceptor, member=n/a): TcpAcceptor now listening for connections on testingCoherence101652523:33457.3
2022-03-11 13:50:05.968/5.182 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=Cluster, member=n/a): Created a new cluster "mycache" with Member(Id=1, Timestamp=2022-03-11 13:50:01.733, Address=10.165.17.23:33457, MachineId=39228, Location=process:3784, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=12, SocketCount=3)
2022-03-11 13:50:05.988/5.202 Oracle Coherence GE 12.2.1.3.17 <D5> (thread=Transport:TransportService, member=n/a): Service TransportService is bound to tmb://10.165.17.23:33457.58346
2022-03-11 13:50:05.995/5.210 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=Transport:TransportService, member=n/a): Service TransportService joined the cluster with senior service member 1
2022-03-11 13:50:05.997/5.211 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=main, member=n/a): Started cluster Name=mycache, ClusterPort=7574

Group{Address=10.165.17.23, TTL=4}

MasterMemberSet(
  ThisMember=Member(Id=1, Timestamp=2022-03-11 13:50:01.733, Address=10.165.17.23:33457, MachineId=39228, Location=process:3784, Role=CoherenceServer)
  OldestMember=Member(Id=1, Timestamp=2022-03-11 13:50:01.733, Address=10.165.17.23:33457, MachineId=39228, Location=process:3784, Role=CoherenceServer)
  ActualMemberSet=MemberSet(Size=1
    Member(Id=1, Timestamp=2022-03-11 13:50:01.733, Address=10.165.17.23:33457, MachineId=39228, Location=process:3784, Role=CoherenceServer)
    )
  MemberId|ServiceJoined|MemberState|Version
    1|2022-03-11 13:50:01.733|JOINED|12.2.1.3.17
  RecycleMillis=1200000
  RecycleSet=MemberSet(Size=0
    )
  )

TcpRing{Connections=[]}
IpMonitor{Addresses=0, Timeout=15s}

2022-03-11 13:50:06.007/5.221 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 1
2022-03-11 13:50:06.043/5.257 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=main, member=1): Loaded Reporter configuration from "jar:file:/data01/install/fmw/coherence/lib/coherence.jar!/reports/report-group.xml"
2022-03-11 13:50:06.066/5.280 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=main, member=1): JMXConnectorServer now listening for connections on testingCoherence101652523:35163
2022-03-11 13:50:06.074/5.288 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=main, member=1): Loaded Reporter configuration from "jar:file:/data01/install/fmw/coherence/lib/coherence.jar!/reports/report-group.xml"
2022-03-11 13:50:06.228/5.443 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=DistributedCache:mycacheService, member=1): Service mycacheService joined the cluster with senior service member 1
2022-03-11 13:50:06.240/5.455 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=DistributedCache:mycacheService, member=1): Service mycacheService: sending PartitionConfig ConfigSync to all
2022-03-11 13:50:06.255/5.469 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=DistributedCache:mycacheService, member=1): This member has become the distribution coordinator for MemberSet(Size=1
  Member(Id=1, Timestamp=2022-03-11 13:50:01.733, Address=10.165.17.23:33457, MachineId=39228, Location=process:3784, Role=CoherenceServer)
  )
2022-03-11 13:50:06.268/5.482 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=Proxy:ExtendTcpCacheService:TcpAcceptor, member=1): TcpAcceptor now listening for connections on testingCoherence101652523:33457.52436
2022-03-11 13:50:06.274/5.488 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=Proxy:ExtendTcpCacheService, member=1): Service ExtendTcpCacheService joined the cluster with senior service member 1
2022-03-11 13:50:06.276/5.490 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=main, member=1): 
Services
  (
  ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, OldestMemberId=1}
  TransportService{Name=TransportService, State=(SERVICE_STARTED), Id=1, OldestMemberId=1}
  InvocationService{Name=Management, State=(SERVICE_STARTED), Id=2, OldestMemberId=1}
  PartitionedCache{Name=mycacheService, State=(SERVICE_STARTED), Id=3, OldestMemberId=1, LocalStorage=enabled, PartitionCount=257, BackupCount=1, AssignedPartitions=257, BackupPartitions=0, CoordinatorId=1}
  ProxyService{Name=ExtendTcpCacheService, State=(SERVICE_STARTED), Id=4, OldestMemberId=1}
  )

Started DefaultCacheServer...

2022-03-11 13:50:06.282/5.497 Oracle Coherence GE 12.2.1.3.17 <Info> (thread=DistributedCache:myCacheService, member=1): Partition ownership has stabilized with 1 nodes

2 . Client Side

  • cache config coherence-cache-config.xml
<?xml version="1.0"?>

<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
    <caching-scheme-mapping>
        <cache-mapping>
            <cache-name>*</cache-name>
            <scheme-name>mycache</scheme-name>
        </cache-mapping>
    </caching-scheme-mapping>
    <caching-schemes>
        <!--
        Default-Replicated caching scheme.
        -->
        <remote-cache-scheme>
            <scheme-name>mycache</scheme-name>
            <service-name>mycacheService</service-name>
            <initiator-config>
                <tcp-initiator>
                    <remote-addresses>
                        <socket-address>
                            <address>10.165.17.23</address>
                            <port>7574</port>
                            <reusable>true</reusable>
                        </socket-address>
                    </remote-addresses>
                    <connect-timeout>10s</connect-timeout>
                </tcp-initiator>
                <outgoing-message-handler>
                    <request-timeout>20s</request-timeout>
                </outgoing-message-handler>
            </initiator-config>
        </remote-cache-scheme>
        <remote-invocation-scheme>
            <scheme-name>extend-invocation</scheme-name>
            <service-name>ExtendTcpInvocationService</service-name>
            <initiator-config>
                <tcp-initiator>
                    <remote-addresses>
                        <socket-address>
                            <address>10.165.17.23</address>
                            <port>7574</port>
                        </socket-address>
                    </remote-addresses>
                    <connect-timeout>10s</connect-timeout>
                </tcp-initiator>
                <outgoing-message-handler>
                    <request-timeout>5s</request-timeout>
                </outgoing-message-handler>
            </initiator-config>
        </remote-invocation-scheme>
        <class-scheme>
            <scheme-name>default-backing-map</scheme-name>
            <class-name>com.tangosol.util.SafeHashMap</class-name>
        </class-scheme>
    </caching-schemes>
</cache-config>
  • tangosol-coherence-override.xml
<?xml version='1.0'?>
<coherence>
    <cluster-config>
        <member-identity>
            <cluster-name>mycache</cluster-name>
        </member-identity>
        <multicast-listener>
            <address>10.165.17.23</address>
            <port>7574</port>
        </multicast-listener>
    </cluster-config>
    <configurable-cache-factory-config>
        <class-name>com.tangosol.net.DefaultConfigurableCacheFactory
        </class-name>
        <init-params>
            <init-param>
                <param-type>java.lang.String</param-type>
                <param-value>coherence-cache-config.xml</param-value>
            </init-param>
        </init-params>
    </configurable-cache-factory-config>
</coherence>
  • Arguments when run client:
<arguments>
    <argument>-Dtangosol.coherence.override=${project.basedir}/src/main/resources/tangosol-coherence-override.xml</argument>
    <argument>-Djava.net.preferIPv4Stack=true</argument>
</arguments>

And here is full client error logs :

Caused by: com.tangosol.net.messaging.ConnectionException: could not establish a connection to one of the following addresses: [10.165.17.23:7574]
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.initiator.TcpInitiator.openConnection(TcpInitiator.CDB:139) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.Initiator.ensureConnection(Initiator.CDB:11) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.net.extend.remoteService.RemoteCacheService.openChannel(RemoteCacheService.CDB:7) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.net.extend.RemoteService.ensureChannel(RemoteService.CDB:6) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.net.extend.RemoteService.doStart(RemoteService.CDB:11) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.net.extend.RemoteService.start(RemoteService.CDB:5) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.util.SafeService.startService(SafeService.CDB:66) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.util.safeService.SafeCacheService.startService(SafeCacheService.CDB:5) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.util.SafeService.ensureRunningService(SafeService.CDB:28) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.util.SafeService.startInternal(SafeService.CDB:14) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.util.SafeService$StartAction.run(SafeService.CDB:1) ~[coherence.jar:12.2.1.3.17]
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_282]
    at javax.security.auth.Subject.doAs(Subject.java:360) ~[na:1.8.0_282]
    at com.tangosol.net.security.DoAsAction.run(DoAsAction.java:42) ~[coherence.jar:12.2.1.3.17]
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_282]
    at com.tangosol.coherence.component.util.SafeService.start(SafeService.CDB:4) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.net.DefaultConfigurableCacheFactory.startService(DefaultConfigurableCacheFactory.java:1237) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.net.DefaultConfigurableCacheFactory.ensureServiceInternal(DefaultConfigurableCacheFactory.java:1223) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.net.DefaultConfigurableCacheFactory.ensureService(DefaultConfigurableCacheFactory.java:1054) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.net.DefaultConfigurableCacheFactory.ensureCache(DefaultConfigurableCacheFactory.java:1036) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.net.DefaultConfigurableCacheFactory.configureCache(DefaultConfigurableCacheFactory.java:1430) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.net.DefaultConfigurableCacheFactory.ensureCache(DefaultConfigurableCacheFactory.java:366) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.net.CacheFactory.getCache(CacheFactory.java:296) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.net.CacheFactory.getCache(CacheFactory.java:212) ~[coherence.jar:12.2.1.3.17]
    at com.vnpt.coherence.adapter.configurations.CacheConfiguration.getCache(CacheConfiguration.java:20) ~[classes/:na]
    at com.vnpt.coherence.adapter.configurations.CacheConfiguration$$EnhancerBySpringCGLIB$$84145143.CGLIB$getCache$1(<generated>) ~[classes/:na]
    at com.vnpt.coherence.adapter.configurations.CacheConfiguration$$EnhancerBySpringCGLIB$$84145143$$FastClassBySpringCGLIB$$c9ebfb0c.invoke(<generated>) ~[classes/:na]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at com.vnpt.coherence.adapter.configurations.CacheConfiguration$$EnhancerBySpringCGLIB$$84145143.getCache(<generated>) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_282]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_282]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_282]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_282]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    ... 33 common frames omitted
Caused by: com.tangosol.net.messaging.ConnectionException: TcpConnection(Id=null, Open=true, LocalAddress=::aa9:1bd:55668, RemoteAddress=10.165.17.23:7574)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.initiator.TcpInitiator$TcpConnection$TcpReader.onNotify(TcpInitiator.CDB:46) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:54) ~[coherence.jar:12.2.1.3.17]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_282]
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:210) ~[na:1.8.0_282]
    at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_282]
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_282]
    at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[na:1.8.0_282]
    at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288) ~[na:1.8.0_282]
    at com.tangosol.util.ExternalizableHelper.readInt(ExternalizableHelper.java:616) ~[coherence.jar:12.2.1.3.17]
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.initiator.TcpInitiator$TcpConnection$TcpReader.onNotify(TcpInitiator.CDB:15) ~[coherence.jar:12.2.1.3.17]

What is I missing in my code. Thanks for help !!!