Showing posts with label coherence. Show all posts
Showing posts with label coherence. Show all posts

Friday, May 31, 2013

No scheme for cache: "binaryContentTypeCache.ucm" when using coherence for content presenter in webcenter spaces 11.1.1.6.x



This is because of missing cache mapping in the document
Solution:
Add this entry in the content-coherence-cache-config.xml and place it in the appropriate directory
<cache-mapping>
<cache-name>binaryContentTypeCache.*</cache-name>
<scheme-name>ContentBinaryCaches</scheme-name>
</cache-mapping>

Thursday, August 23, 2012

Coherence Management Extensions (Managing Coherence at runtime)


To Enable Coherence to be managed at runtime Add the below to JVM startup when starting coherence.
-Dcom.sun.management.jmxremote -Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true -Dcom.sun.management.jmxremote.port=7772 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

You can use any JMX browsers like Jrockit mission control or JConsole to actually look at cluster details, caches etc
image

Coherence Client using TCP Extend


There are multiple ways a client can connect to a coherence cluster. TCP Extend is one of them.

Server side Setup:

It is recommended to have a separate coherence instance for a TCP Proxy that doesn’t hold data. We can have a separate Coherence instance by setting this parameter tangosol.coherence.distributed.localstorage=false.
You can make a copy of the existing coherence-cache-config.xml and add the lines marked in Red 
 
proxy-coherence-cache-config.xml
<?xml version="1.0" ?>
<cache-config xmlns:xsi=
http://www.w3.org/2001/XMLSchema-instance             xmlns=http://xmlns.oracle.com/coherence/coherence-cache-config”             xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd">  <scope-name>TestCacheScope</scope-name>
  <defaults>
    <serializer>pof</serializer>
  </defaults>
  <caching-scheme-mapping>
    <cache-mapping>
      <cache-name>distributed-test</cache-name>
      <scheme-name>distributed-default</scheme-name>
      <init-params>
        <init-param>
          <param-name>size-limit</param-name>
          <param-value>50000</param-value>
        </init-param>
      </init-params>
    </cache-mapping>
  </caching-scheme-mapping>
  <caching-schemes>
    <distributed-scheme>
      <scheme-name>distributed-default</scheme-name>
      <service-name>DistributedCache</service-name>
      <thread-count>5</thread-count>
      <backup-count>1</backup-count>
      <backup-storage>
        <type>file-mapped</type>
        <initial-size>1M</initial-size>
        <maximum-size>5G</maximum-size>
        <directory>/coherence/backup</directory>
      </backup-storage>
      <backing-map-scheme>
        <overflow-scheme>
          <scheme-name>LocalMemoryWithDiskOverflow</scheme-name>
          <front-scheme>
            <local-scheme>
             <high-units>300000</high-units>
            </local-scheme>
          </front-scheme>
          <back-scheme>
            <external-scheme>
              <scheme-name>DiskScheme</scheme-name>
              <nio-file-manager>
                <initial-size>1MB</initial-size>
                <maximum-size>1024MB</maximum-size>
                <directory>/coherence/backup</directory>
              </nio-file-manager>
            </external-scheme>
          </back-scheme>
        </overflow-scheme>
      </backing-map-scheme>
      <autostart>true</autostart>
    </distributed-scheme>
    <proxy-scheme>
      <service-name>ExtendTcpProxyService</service-name>
      <thread-count>5</thread-count>
      <acceptor-config>
        <tcp-acceptor>
          <local-address>
            <address>localhost</address>
            <port>9099</port>
          </local-address>
        </tcp-acceptor>
        <!-- Add the below if you use POF -->
        <serializer>
          <instance>
            <class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name>
            <init-params>
              <init-param>
                <param-type>String</param-type>
                <param-value>pof-config.xml</param-value>
              </init-param>
            </init-params>
          </instance>
        </serializer>
      </acceptor-config>
      <autostart>true</autostart>
    </proxy-scheme>
  </caching-schemes>
</cache-config>


Optionally make a copy of your existing tangosol coherence override xml and change tangosol.coherence.role to ProxyServer as illustrated below. If you don’t change the override.xml when starting the proxy use the original tangosol coherence override .xml as defined for the data caches

proxy-tangasol-coherence-override.xml
<?xml version="1.0" ?>
<coherence xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
           xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
           xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-config coherence-operational-config.xsd">  <cluster-config>
    <member-identity>
      <cluster-name system-property="tangosol.coherence.cluster">OperDataCluster</cluster-name>
      <machine-name system-property="tangosol.coherence.machine">coherence1</machine-name>
      <process-name system-property="tangosol.coherence.process">CoherenceProxyServer</process-name>
      <role-name system-property="tangosol.coherence.role">ProxyServer</role-name>
    </member-identity>
    <unicast-listener>
      <address system-property="tangosol.coherence.localhost">localhost</address>
      <port system-property="tangosol.coherence.localport">8088</port>
      <port-auto-adjust system-property="tangosol.coherence.localport.adjust">true</port-auto-adjust>
    </unicast-listener>
    <multicast-listener>
      <address system-property="tangosol.coherence.clusteraddress">224.4.0.255</address>
      <port system-property="tangosol.coherence.clusterport">3060</port>
      <time-to-live system-property="tangosol.coherence.ttl">3</time-to-live>
      <join-timeout-milliseconds>30000</join-timeout-milliseconds>
      <multicast-threshold-percent>25</multicast-threshold-percent>
    </multicast-listener>
  </cluster-config>
  <logging-config>
    <destination system-property="tangosol.coherence.log">stdout</destination>
    <severity-level system-property="tangosol.coherence.log.level">9</severity-level>
  </logging-config>
</coherence>



Starting the proxy 

java -server -Dtangosol.coherence.override=proxy-tangasol-coherence-override.xml -Dtangosol.coherence.distributed.localstorage=false -Dtangosol.coherence.cacheconfig=proxy-coherence-cache-config.xml -cp "$COHERENCE_HOME/lib/coherence.jar com.tangosol.net.DefaultCacheServer

Client Side Setup:

On the client side you need a tangosol.coherence.cacheconfig where you define TCP Extend proxy and invocation service
client-tangasol-cache-config.xml
<?xml version="1.0"?>
<cache-config xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
              xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config          coherence-cache-config.xsd">
  <scope-name>TestCacheScope</scope-name>
  <caching-scheme-mapping>
    <cache-mapping>
      <cache-name>distributed-*</cache-name>
      <scheme-name>extend-near</scheme-name>
    </cache-mapping>
  </caching-scheme-mapping>
  <caching-schemes>
    <near-scheme>
      <scheme-name>extend-near</scheme-name>
      <front-scheme>
        <local-scheme>
          <scheme-name>localCache</scheme-name>
          <high-units>1000</high-units>
        </local-scheme>
      </front-scheme>
      <back-scheme>
        <remote-cache-scheme>
          <scheme-ref>extend-dist</scheme-ref>
        </remote-cache-scheme>
      </back-scheme>
      <invalidation-strategy>all</invalidation-strategy>
    </near-scheme>
    <remote-cache-scheme>
      <scheme-name>extend-dist</scheme-name>
      <service-name>ExtendTcpCacheService</service-name>
      <initiator-config>
        <tcp-initiator>
          <remote-addresses>
            <socket-address>
              <address>SERVERS IP</address>
              <port>9099</port>
            </socket-address>
          </remote-addresses>
          <connect-timeout>10s</connect-timeout>
        </tcp-initiator>
        <outgoing-message-handler>
          <request-timeout>60s</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>SERVERS IP</address>
              <port>9099</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>
  </caching-schemes>
</cache-config>

 
Package this in the client WAR or EAR along with coherence.jar  when you run the code