Missing LongBasedIdentifier in coherence-common-pof-config
Hi all,
com.oracle.coherence.common.identifiers.LongBasedIdentifier is missing from the coherence-common-pof-config.xml
Just wanted to report this oversight (if it's not an oversight please let me know why).
Cheers,
Alberto
Hi Alberto,
Thanks for letting us know. I've fixed this in Incubator 10 and will back patch into Incubator 9.
Regards
-- Brian
Brian Oliver | Architect | Oracle Coherence
Similar Messages
-
I'm running Coherence 3.7.1.0.0 with REST enabled as per the instruction. I have included coherence-rest-pof-config.xml in my pof config like so:
<include>coherence-pof-config.xml</include>
<include>coherence-rest-pof-config.xml</include>
When I start Coherence, I get the following error:
Caused by: (Wrapped: error creating class "com.tangosol.io.pof.ConfigurablePofContext") java.lang.IllegalStateException: Missing PofSerializer configuration (Config=custom-types-pof-config.xml, Type-Id=801, Class-Name=com.tangosol.coherence.rest.internal.Get)
The config in coherence-rest-pof-config.xml for com.tangosol.coherence.rest.internal.Get is as follows:
<user-type>
<type-id>801</type-id>
<class-name>com.tangosol.coherence.rest.internal.Get</class-name>
</user-type>
I had a quick look in the coherence-rest.jar, where com.tangosol.coherence.rest.internal.Get is defined. com.tangosol.coherence.rest.internal.Get implements InvocableMap.EntryProcessor, but not PortableObject.
Am I missing something? As far as I can see, InvocableMap.EntryProcessor does not implement PortableObject either.
Is there any way to fix this?
ThanksThe jar file coherence-common-1.7.0.16988.jar would have been part of the Coherence Incubator product, and isn't part of the core Coherence product itself.
You'd probably need to refer to the Coherence Incubator site as there are probably significant changes between the version you are using in 3.5.3 and with what is meant for 12.1.2. -
Can't setup PofAnnotationSerializer in pof-config.xml
Hi,
i have class annotated with @Portable and @PortableProperty, and pof-config.xml for setup serializer:
<user-type>
<type-id>1001</type-id>
<class-name>entity.dto.base.EmployeeBaseDTO</class-name>
<serializer>
<class-name>com.tangosol.io.pof.PofAnnotationSerializer</class-name>
<init-params>
<init-param>
<param-type>int</param-type>
<param-value>1001</param-value>
</init-param>
<init-param>
<param-type>java.lang.Class</param-type>
<param-value>entity.dto.base.EmployeeBaseDTO</param-value>
</init-param>
</init-params>
</serializer>
</user-type>
While starting Coherence 3.7.1 cluster, I get error:
Unable to instantiate PofSerializer class: com.tangosol.io.pof.PofAnnotationSerializer (Config=...\pof-config.xml, Type-Id=1001,
Class-Name=entity.dto.base.EmployeeBaseDTO))
java.lang.InstantiationException: Could not find a constructor for com.tangosol.io.pof.PofAnnotationSerializer(java.lang.Integer, com.tangosol.run.xml.SimpleElement)
Why second PofAnnotationSerializer contructor parameter is com.tangosol.run.xml.SimpleElement and not java.lang.Class ?
BTW setup PofAnnotationSerializer programatically works fine:
SimplePofContext pofCtx = new SimplePofContext();
int typeId = 1001;
pofCtx.registerUserType(typeId, EmployeeBaseDTO.class , new PofAnnotationSerializer<EmployeeBaseDTO>(typeId++, EmployeeBaseDTO.class, true));
Thanks,
L.V.OK, so to enable auto indexing then yes, you need to specify the serializer in the POF configuration, as it says in the documentation 19.3.3 Enabling Automatic Indexing.
So in your case the configuration should look like this
<user-type>
<type-id>1001</type-id>
<class-name>entity.dto.base.EmployeeBaseDTO</class-name>
<serializer>
<class-name>com.tangosol.io.pof.PofAnnotationSerializer</class-name>
<init-params>
<init-param>
<param-type>int</param-type>
<param-value>{type-id}</param-value>
</init-param>
<init-param>
<param-type>class</param-type>
<param-value>{class}</param-value>
</init-param>
<init-param>
<param-type>boolean</param-type>
<param-value>true</param-value>
</init-param>
</init-params>
</serializer>
</user-type>
You do not replace the param-values that are inside { } or change the param-type values as these are macros that Coherence will automatically replace with the correct values.
Regarding your error, I'm not sure if that is related to your original question/issue.
JK -
How to modify POF config dynamically?
we have a application framework developed in C# .NET which includes 5 applications renning under that.
my application is running under this framework. I am rading my POF Config entry from app.config of main applicacation(framework)
I can not add seperate app.config my my application. Also i can not modify the main coherence-pof-config.xml.
Now the problem is, for my application i want to add new user type in my pof-config file dynamically. how to add that?
Please help...Hi Nick,
you can specify the <serializer> in the distributed-scheme or other similar scheme elements in the cache configuration file, and it can take an init param specifying the locator of the file name.
<distributed-scheme>
<scheme-name>loader-scheme</scheme-name>
<backing-map-scheme>
<local-scheme />
</backing-map-scheme>
<autostart>true</autostart>
<serializer>
<class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name>
<init-params>
<init-param>
<param-type>string</param-type>
<param-value>pof-config-other.xml</param-value>
</init-param>
</init-params>
</serializer>
</distributed-scheme>Output:
... (thread=main, member=n/a): Loaded cache configuration from resource "file:.../coherence-cache-config-poftest.xml"
...(thread=DistributedCache, member=1): Loading POF configuration from resource "file:.../pof-config-other.xml"Best regards,
Robert -
Maven gar plugin, not generating pof config
Hello,
I'm trying to generate the pof-config.xml file using the maven-gar-plugin as described in this documentation -
Building Coherence Projects with Maven - 12c (12.1.2)
The plugin does not seem to generate the pof config file as documented. I've POJO's annotated with @Portable and @PortableProperty.
Thanks-Hi,
It was problem with my pom.xml. Finally I have created OSGI bundle with maven-scr plugin J Now I have the correct folder structure (OSGI-INF folder). Actually I need to have a reference via sling.getService only. I have installed my osgi bundle in Felix console successfully. The status of the bundle is Active. But the component status is “registered” When I check it in component console. And there is no entry in my service console.
Here is my java class
package com.adobe.support.examples.com.adobe.support.examples.osgi.service;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Service;
import org.apache.felix.scr.annotations.Property;
@Component(immediate = true, metatype = true)
@Service
public class SampleServiceImpl implements SampleService {
public String sayHello() {
return "Hello World!";
Why component statis is 'registerd' instead of having 'active' Could you please tell me how to fix it?
Thanks in advance
Regards,
Anderson -
Dear all,
Is there a way to declare "tangosol.pof.enabled=true" and "tangosol.pof.config=my-pof-config.xml" in coherence xml config (e.g. tangosol-coherence-override.xml) ratherthan using the "-Dtangosol.pof.config=" and "-Dtangosol.pof.config=".
We are looking for this because deploying the same config file on both our application servers and our pure coherence nodes is the easiest way we have to be sure that the configurations are in sync.
We have lost several hours last week figuring that we forgot to declare these "-Dtangosol.pof..xxx" environment variables in our J2EE servers and we would like to prevent this to reoccur.
CyrilleFor versions earlier than 3.6, if you don't want to set POF to be the default with the tangosol.pof.enabled switch, you have to add the full serializer definition to your cache config:
<serializer>
<class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name>
<!-- Optionally override the default value ("pof-config.xml", or the setting of -Dtangosol.pof.config) -->
<init-params>
<init-param>
<param-type>String</param-type>
<param-value>pof-config.xml</param-value>
</init-param>
</init-params>
</serializer>
From Coherence 3.6, you can add a <serializer/> element to the scheme in
the cache config file:
<distributed-scheme>
<scheme-name>example-distributed</scheme-name>
<service-name>DistributedCache</service-name>
<serializer>pof</serializer>
You can also define the default serialisation method in the cache
config file:
<cache-config>
<defaults>
<serializer>pof</serializer>
</defaults>
Both of these refer to a set of serializers defined in the operational config file that you can override using an
operational overrides file. E.g.
<!-- tangosol-coherence-override.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<coherence>
<cluster-config>
<serializers>
<serializer id="pof">
<class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name>
<init-params>
<init-param>
<param-type>String</param-type>
<param-value>my-pof-config.xml</param-value>
</init-param>
</init-params>
</serializer>
</serializers>
</cluster-config>
</coherence> -
Hi All,
I'm a System Engineer. My application code in Java and using JDK 1.3.1.
My Application deploy in IBM iSeries V5R2 and not error. But after I upgrade to iSeries V5R3, my application encounter missing message error such as "javax.servlet.jsp.JspException: Missing message for key common.business.BankAddress".
I already downgrade for iSeries V5R3 to JDk 1.3.1.
Did Weblogic 6.1 support IBM iSeries V5R3?
Do you have any ideas?
Thank you.hi siewmun ,
weblogic 6.1 does't support IBM iSeries V5R3 .
IBM iSeries V5R3 is supported by IBM products mostly.
go through the link, you can find the documention on IBM iSeries v5r3
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/ic2924/index.htm
Anilkumar kari -
The messages on my Iphone and Mac don't match, My Mac is lacking messages. Do they only show if the sender has an iPhone, trying to figure out if thats what the missing names have in common, or if it a different problem?
Messages on the mac will only show iMessages sent from an iPhone, another mac, iPad etc etc...
It won't show SMS / Text messages.
If the messages are green on your iphone then they are text messages... Blue are iMessages -
i want to Create Weblogic Domain for Identity Management
I start /app/fusion/fmw/wlserver_10.3/common/bin/config.sh, but it shows that "...... config.sh: line 29: /common/bin/config.sh: permission denied"
then I open config.sh, Line 29 as follow
"${WL_HOME}/common/bin/config.sh" "$@"
Edited by: 941252 on Dec 11, 2012 5:21 AMlogin using admin user or the user which is used to install OIM.
or provide execute permission to the file like below
chmod 777 /app/fusion/fmw/wlserver_10.3/common/bin/config.sh -
Unable to run Cache Factory JVM instance throws Missing POF config xml file
I have configured three JVM instances in Eclipse using Run Configurations Menu
- JUnit JVM
-Default Cache Server JVM
-Cache Factory JVM
The configurations of Default Cache Server are
Main Class : com.tangosol.net.DefaultCacheServer
Arguments:
-Dtangosol.coherence.cacheconfig=C:\..\resources\coherence-cache-config.xml
-Dtangosol.coherence.distributed.localstorage=true
-Dtangosol.coherence.management=all
-Dtangosol.coherence.management.remote=true
The Configurations for CacheFactory are
Main Class: com.tangosol.net.CacheFactory
Arguments:
-Dtangosol.coherence.cacheconfig=C:\..\resources\coherence-cache-config.xml
-Dtangosol.coherence.distributed.localstorage=false
First i run Default Cache Server which runs successfully. Then i ran CacheFactory the console messages doesnt say that its refering to coherence-cache-config.xml
Here is the snippet from console messages
Oracle Coherence Version 3.5.1/461
Grid Edition: Development mode
Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
2009-10-29 09:57:07.028/5.266 Oracle Coherence GE 3.5.1/461 <D5> (thread=Cluster, member=n/a): Service Cluster joined the cluster with senior service member n/a
2009-10-29 09:57:07.105/5.343 Oracle Coherence GE 3.5.1/461 <Info> (thread=Cluster, member=n/a): Failed to satisfy the variance: allowed=16, actual=47
2009-10-29 09:57:07.105/5.343 Oracle Coherence GE 3.5.1/461 <Info> (thread=Cluster, member=n/a): Increasing allowable variance to 19
2009-10-29 09:57:07.495/5.733 Oracle Coherence GE 3.5.1/461 <Info> (thread=Cluster, member=n/a): This Member(Id=2, Timestamp=2009-10-29 09:57:07.23, Address=165.137.250.122:8089, MachineId=54906, Location=site:cable.comcast.com,machine:PACDCL-CJWWND1b,process:5296, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1) joined cluster "cluster:0xD1CB" with senior Member(Id=1, Timestamp=2009-10-29 09:54:18.406, Address=165.137.250.122:8088, MachineId=54906, Location=site:cable.comcast.com,machine:PACDCL-CJWWND1b,process:3236, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1)
2009-10-29 09:57:07.744/5.982 Oracle Coherence GE 3.5.1/461 <D5> (thread=Cluster, member=n/a): Member 1 joined Service Management with senior member 1
2009-10-29 09:57:07.744/5.982 Oracle Coherence GE 3.5.1/461 <D5> (thread=Cluster, member=n/a): Member 1 joined Service DistributedCache with senior member 1
2009-10-29 09:57:08.414/6.652 Oracle Coherence GE 3.5.1/461 <D5> (thread=Invocation:Management, member=2): Service Management joined the cluster with senior service member 1
2009-10-29 09:57:09.582/7.820 Oracle Coherence GE 3.5.1/461 <D5> (thread=TcpRingListener, member=2): TcpRing: connecting to member 1 using TcpSocket{State=STATE_OPEN, Socket=Socket[addr=/165.137.250.122,port=1383,localport=8089]}
SafeCluster: Name=cluster:0xD1CBPlease note the following messages are missing from the above console messages which are present in Cache Server but not Cache Factory
Oracle Coherence Version 3.5.1/461
Grid Edition: Development mode
Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
2009-10-29 09:54:17.062/13.141 Oracle Coherence GE 3.5.1/461 <Info> (thread=Main Thread, member=n/a): Loaded cache configuration from "jar:file:/C:/Software/coherence-v3.5.1b461/coherence/lib/coherence.jar!/reports/report-group.xml"
2009-10-29 09:54:17.234/13.313 Oracle Coherence GE 3.5.1/461 <Info> (thread=Main Thread, member=n/a): Loaded cache configuration from "file:/C:/MyWorkspaces/EnterpriseServicesPlatform/ContractService/ServiceImpl/src/main/resources/coherence-cache-config.xml"The CacheFactory will not load the cache configuration until you use a cache related command the first time. For example:
Map (?): cache test
2009-10-30 09:18:47.847/8.164 Oracle Coherence GE 3.5/459 <Info> (thread=main, member=1): Loaded cache configuration from file "/Users/rob.misek/temp/new-cache-config.xml"
<class-scheme>
<scheme-name>default-backing-map</scheme-name>
<class-name>com.tangosol.util.SafeHashMap</class-name>
</class-scheme>
Rob
:Coherence Team: -
C++ primitive versus Coherence Primitive POF encoding
I was wondering if anyone can shed some light on the differences b/w POF encoding of C++ primitives vs encoding of Coherence Primitive.
I've noticed using Coherence Primitives retain both type & value allowing readObject() to work as expected, whereas there are nuances where only the value is retained when using primitives.
* Is there an inherent difference as to how primitive types are POF encoded versus Coherence Primitives ? ie. Do they both use packed optimizations? Are Coherence Primitives encoded as a Type which contains the primitive type, or are they both encoded the same.
* Is it possible for readObject() to infer the correct types from the stream, or must the type definition always be implicit. ie. The deserializer and serializer must always agree on read/write methods. How is readObject() affected by the optimizations?
* The return type and name of the function readObject() implies it only deals with objects, but its documentation states it reads a property of ANY type including a user type from the stream. How does it internally handle primitive types? ie. If it encounters a primitive in the stream, does readObject() wrap it in a (correct) Coherence Primitive?
* Is there any cross-language implications when using Coherence Primitives?Hi Mark,
For those who may be confused by what a "Coherence Primitive" is I'll clarify. The coherence::lang::Primitive<T> template class is a common template base class used for building up wrapper classes for C++ primitive types such as bool, int32_t, int64_t. For instance the coherence::lang::Integer32 class extends Primitive<int32_t>, and works similar to the relationship between int and java.lang.Integer in Java. Primitive<> extends from coherence::lang::Object class which is the root of our manage object class hierarchy. As with Coherence for Java these primitive wrappers are POF serializable. In fact the description I give here applies equally to our Java and C++ extend clients.
Language primitives and primitive wrappers are bit for bit identical when serialized in POF format. There is however a subtle but important difference. For some values PofWriter may choose to entirely optimize out the value from the byte stream, and this does differ between the primitives and wrappers. The basic rule is that primitives can be optimized out of the POF stream entirely when writing the types default 'zero' value, and this is not true for the wrapper types. For instance:
hWriter->writeInt32(PROP_ID_BLAH, 0); // this will be a noop
This will be a noop, and the corresponding readInt32() call will treat the lack of a property in the POF stream as a zero value.
int32_t nVal = hReader->readInt32(PROP_ID_BLAH); // will return 0
However if you were to write out the corresponding wrapper object a zero would be written to the stream.
hWriter->writeObject(PROP_ID_BLAH, Integer32::create(0)); // writes a zero to the stream
Integer32::View vnVal = cast<Integer32::View>(hReader->readObject(PROP_ID_BLAH)); // will return an Integer32 representing zero
This optimization works beautifully so long as the reader and writer are symmetric, using either the same type of methods for a given property. If you mix and for instance use writeInt32, and then readObject, you can see some surprising results. For instance zero's come out as NULLs, and all other numeric types (such as Integer64 or Float32/64) will come out as Integer32 for certain small numeric values. This has caused us some issues with the initial release of PofExtractor which always returns Objects, and as such will show behavior similar to the above when the primitive based writer methods were used during serialization. This fix for this specific issue will be made available soon in an upcoming 3.5 service pack.
So this leaves the question what method should you use for writing primitives. I would say that in the vast majority of cases it would be preferable to use the primitive variants, rather then writing the wrapper object via writeObject(). The biggest advantage of this is that it avoids the unneeded object creation. The primary benefit of using writeObject() for the wrappers is that it gives you one additional value, i.e. NULL. So for instance which writeBoolean() can only communicate one of two values (true, false), writeObject() passing a Boolean, can communicate one of three values (true, false, NULL). Outside of that writeObject() on a primitive wrapper is also beneficial for generic code which doesn't know the type of the object being serialized.
I suppose the docs for writeObject need some cleanup. This method supports the serialization of any type which extends from coherence::lang::Object, and has a registered POF serializer.
To answer your final question the two variants produce language neutral POF streams, and can be read from Java and .NET just fine.
hope that helps,
Mark
Oracle Coherence -
has anyone seen this on their dot1x configurations where the vlan info is missing on the show running-config? see port fast 2/0/3 below. the 3750 POE switch is running 12.2.55-SE7.
interface FastEthernet2/0/1
switchport access vlan 18
switchport mode access
switchport nonegotiate
switchport voice vlan 101
srr-queue bandwidth share 10 10 60 20
srr-queue bandwidth shape 10 0 0 0
priority-queue out
authentication event fail action authorize vlan 34
authentication event server dead action authorize
authentication event server dead action authorize voice
authentication event no-response action authorize vlan 34
authentication host-mode multi-domain
authentication order dot1x mab
authentication port-control auto
authentication violation restrict
mab
mls qos trust dscp
auto qos voip trust
dot1x pae authenticator
dot1x timeout quiet-period 3
dot1x timeout tx-period 3
dot1x timeout supp-timeout 3
storm-control broadcast level 1.00
spanning-tree portfast
spanning-tree bpduguard enable
interface FastEthernet2/0/2
switchport access vlan 18
switchport mode access
switchport nonegotiate
switchport voice vlan 101
srr-queue bandwidth share 10 10 60 20
srr-queue bandwidth shape 10 0 0 0
priority-queue out
authentication event fail action authorize vlan 34
authentication event server dead action authorize
authentication event server dead action authorize voice
authentication event no-response action authorize vlan 34
authentication host-mode multi-domain
authentication order dot1x mab
authentication port-control auto
authentication violation restrict
mab
mls qos trust dscp
auto qos voip trust
dot1x pae authenticator
dot1x timeout quiet-period 3
dot1x timeout tx-period 3
dot1x timeout supp-timeout 3
storm-control broadcast level 1.00
spanning-tree portfast
spanning-tree bpduguard enable
interface FastEthernet2/0/3
switchport access vlan 18
switchport mode access
switchport nonegotiate
switchport voice vlan 101
srr-queue bandwidth share 10 10 60 20
srr-queue bandwidth shape 10 0 0 0
priority-queue out
authentication event fail action authorize
authentication event server dead action authorize
authentication event server dead action authorize voice
authentication event no-response action authorize vlan 34
authentication host-mode multi-domain
authentication order dot1x mab
authentication port-control auto
authentication violation restrict
mab
mls qos trust dscp
auto qos voip trust
dot1x pae authenticator
dot1x timeout quiet-period 3
dot1x timeout tx-period 3
dot1x timeout supp-timeout 3
storm-control broadcast level 1.00
spanning-tree portfast
spanning-tree bpduguard enable
interface FastEthernet2/0/4
switchport access vlan 18
switchport mode access
switchport nonegotiate
switchport voice vlan 101
srr-queue bandwidth share 10 10 60 20
srr-queue bandwidth shape 10 0 0 0
priority-queue out
authentication event fail action authorize
authentication event server dead action authorize
authentication event server dead action authorize voice
authentication event no-response action authorize vlan 34
authentication host-mode multi-domain
authentication order dot1x mab
authentication port-control auto
authentication violation restrict
mab
mls qos trust dscp
auto qos voip trust
dot1x pae authenticator
dot1x timeout quiet-period 3
dot1x timeout tx-period 3
dot1x timeout supp-timeout 3
storm-control broadcast level 1.00
spanning-tree portfast
spanning-tree bpduguard enable
interface FastEthernet2/0/5
switchport access vlan 18
switchport mode access
switchport nonegotiate
switchport voice vlan 101
srr-queue bandwidth share 10 10 60 20
srr-queue bandwidth shape 10 0 0 0
priority-queue out
authentication event fail action authorize
authentication event server dead action authorize
authentication event server dead action authorize voice
authentication event no-response action authorize vlan 34
authentication host-mode multi-domain
authentication order dot1x mab
authentication port-control auto
authentication violation restrict
mab
mls qos trust dscp
auto qos voip trust
dot1x pae authenticator
dot1x timeout quiet-period 3
dot1x timeout tx-period 3
dot1x timeout supp-timeout 3
storm-control broadcast level 1.00
spanning-tree portfast
spanning-tree bpduguard enable
interface FastEthernet2/0/6
switchport access vlan 18
switchport mode access
switchport nonegotiate
switchport voice vlan 101
srr-queue bandwidth share 10 10 60 20
srr-queue bandwidth shape 10 0 0 0
priority-queue out
authentication event fail action authorize vlan 34
authentication event server dead action authorize
authentication event server dead action authorize voice
authentication event no-response action authorize vlan 34
authentication host-mode multi-domain
authentication order dot1x mab
authentication port-control auto
authentication violation restrict
mab
mls qos trust dscp
auto qos voip trust
dot1x pae authenticator
dot1x timeout quiet-period 3
dot1x timeout tx-period 3
dot1x timeout supp-timeout 3
storm-control broadcast level 1.00
spanning-tree portfast
spanning-tree bpduguard enableThe vlan info isn't missing, you have the option of either specifying which VLAN you want it dropped in to, or you can just say authorize the vlan that is configured with the 'switchport access vlan' command.
-
Missing "Intel AMT" option in BIOS Config menu
I'm not sure what that setting is for, but it is missing from the time I bought this laptop. I won't bother returning it just for that, but I wonder why Lenovo chose to remove it.
Good day.
Can you tell us a little more about your system?
Model? BIOS version?
The information may help other members to offer you suggestions or advice.
Regards.
English Community Deutsche Community Comunidad en Español Русскоязычное Сообщество
Community Resources: Participation Rules • Images in posts • Search (Advanced) • Private Messaging
PM requests for individual support are not answered. If a post solves your issue, please mark it so.
X1C3 Helix X220 X301 X200T T61p T60p Y3P • T520 T420 T510 T400 R400 T61 Y2P Y13
I am not a Lenovo employee. -
Example of a Coherence near cache config.
Looking at the wiki, it states that the near cache is
Listener-based Near caches are coherent; expiry-based near caches are partially coherent for non-transactional reads and coherent for transactional access.
Is there a configuration file example for a listener-based near cache?Hi George,
Near cache example: Local cache of a partitioned cache (Near cache).
invalidation-strategy element of a near-scheme specifies the strategy used keep the front-tier in-sync with the back-tier:
* none - instructs the cache not to listen for invalidation events at all. This is the best choice for raw performance and scalability when business requirements permit the use of data which might not be absolutely current. Freshness of data can be guaranteed by use of a sufficiently brief eviction policy. The worst case performance is identical to a standard Distributed cache.
* present - instructs the near cache to listen to the back map events related only to the items currently present in the front map.
This strategy works best when cluster nodes have sticky data access patterns (for example, HTTP session management with a sticky load balancer).
* all - instructs the near cache to listen to all back map events.
This strategy is optimal for read-heavy access patterns where there is significant overlap between the front caches on each cluster member.
* auto - instructs the near cache to switch between present and all strategies automatically based on the cache statistics.
Regards,
Dimitri -
Coherence Client without POF classes problem
I have a special Coherence client node that will be performing cache invalidation tasks only. namedCache.keySet().remove( removeKey ); I will never actually send or deserialize the objects to this node.
This node has no need to have to have the classes related to POF on it, and I really never want to have to update/perform maintenance on this node when updates are made to the classes on the actual cache nodes.
Is there any way I can setup/configure this node so that in its coherence-cache-config, I am not required to provide the serializer config or not have to provide the classes behind the serializer?
When I attempt to do this, Coherence complains that this node's is configured to use serializer com.tangosol.io.pof.ConfigurablePofContext which appears to be different from the serializer used by other members.
If I set the serializer, it then complains that the ClassNotFound if I dont place all the classes on this special invalidator node.
Please help!!! I dont want this special client to have to have all the POF details and classes!!!! He will never need it.
Thanks,
J
Edited by: user12017793 on Sep 11, 2011 9:27 PMI'm not sure it is that messy.
1. The custom client side serializer
package com.gridman.test;
import com.tangosol.io.ReadBuffer;
import com.tangosol.io.WriteBuffer;
import com.tangosol.io.pof.ConfigurablePofContext;
import com.tangosol.io.pof.PofBufferReader;
import com.tangosol.io.pof.PofBufferWriter;
import com.tangosol.io.pof.PofContext;
import java.io.IOException;
public class PassThroughPofContext extends ConfigurablePofContext {
public PassThroughPofContext(String sLocator) {
super(sLocator);
@Override
public void serialize(WriteBuffer.BufferOutput out, Object o) throws IOException {
try {
if (o instanceof PassThrough) {
PassThrough passThrough = (PassThrough)o;
out.writePackedInt(passThrough.getType());
out.writeBuffer(passThrough.getValue());
} else {
PofBufferWriter writer = new PofBufferWriter(out, this);
writer.writeObject(-1, o);
} catch (RuntimeException e) {
throw new IOException(e.getMessage(), e);
@Override
public Object deserialize(ReadBuffer.BufferInput in) throws IOException {
try {
Reader reader = new Reader(in, this);
return reader.readObject(-1);
} catch (RuntimeException e) {
throw new IOException(e.getMessage(), e);
@Override
public int getUserTypeIdentifier(Object o) {
int id;
if (o instanceof PassThrough) {
id = ((PassThrough)o).getType();
} else {
id = super.getUserTypeIdentifier(o);
return id;
private boolean isUserType(int type) {
ensureInitialized();
Class[] types = this.getPofConfig().m_aClzByTypeId;
return types.length > type && types[type] != null;
private class Reader extends PofBufferReader {
private Reader(ReadBuffer.BufferInput in, PofContext ctx) {
super(in, ctx);
@Override
protected Object readAsObject(int nType) throws IOException {
Object value;
if (((PassThroughPofContext)this.m_ctx).isUserType(nType)) {
value = super.readAsObject(nType);
} else {
value = new PassThrough(nType, this.m_in);
return value;
}2. The class that will be used to hold anything that the serializer does not know how to handle
package com.gridman.test;
import com.tangosol.io.ReadBuffer;
import java.io.IOException;
public class PassThrough {
private int type;
private ReadBuffer value;
public PassThrough(int type, ReadBuffer.BufferInput in) throws IOException {
this.type = type;
this.value = in.readBuffer(in.available());
public int getType() {
return type;
public ReadBuffer getValue() {
return value;
}3. The client cache config
<cache-config>
<caching-scheme-mapping>
<cache-mapping>
<cache-name>*</cache-name>
<scheme-name>proxy</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
<remote-cache-scheme>
<scheme-name>proxy</scheme-name>
<service-name>extend-service</service-name>
<initiator-config>
<tcp-initiator>
<remote-addresses>
<socket-address>
<address>... put host name here ...</address>
<port>10000</port>
</socket-address>
</remote-addresses>
</tcp-initiator>
<serializer>
<instance>
<class-name>com.gridman.test.PassThroughPofContext</class-name>
<init-params>
<init-param>
<param-type>String</param-type>
<param-value system-property="tangosol.pof.config">coherence-pof-config.xml</param-value>
</init-param>
</init-params>
</instance>
</serializer>
</initiator-config>
</remote-cache-scheme>
</caching-schemes>
</cache-config>The above code and config is all you need. Everything below here is to test it.
To test it we just convert a class to Binary and back again using the server and client serializers E.G.
A simple POF class to test with - this would only be on the server side
package com.gridman.test;
import com.tangosol.io.pof.PofReader;
import com.tangosol.io.pof.PofWriter;
import com.tangosol.io.pof.PortableObject;
import java.io.IOException;
public class TestPortableObject implements PortableObject {
private String field1;
private int field2;
public TestPortableObject() {
public TestPortableObject(String field1, int field2) {
this.field1 = field1;
this.field2 = field2;
@Override
public void readExternal(PofReader pofReader) throws IOException {
field1 = pofReader.readString(1);
field2 = pofReader.readInt(2);
@Override
public void writeExternal(PofWriter pofWriter) throws IOException {
pofWriter.writeString(1, field1);
pofWriter.writeInt(2, field2);
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
if (o == null || getClass() != o.getClass()) {
return false;
TestPortableObject that = (TestPortableObject) o;
if (field2 != that.field2) {
return false;
if (field1 != null ? !field1.equals(that.field1) : that.field1 != null) {
return false;
return true;
@Override
public int hashCode() {
int result = field1 != null ? field1.hashCode() : 0;
result = 31 * result + field2;
return result;
}The test server side server-pof-config.xml file
<pof-config>
<user-type-list>
<include>coherence-common-pof-config.xml</include>
<user-type>
<type-id>1000</type-id>
<class-name>com.gridman.test.TestPortableObject</class-name>
</user-type>
</user-type-list>
</pof-config>Now our test code...
package com.gridman.test;
import com.tangosol.io.pof.ConfigurablePofContext;
import com.tangosol.util.Binary;
import com.tangosol.util.ExternalizableHelper;
public class Main {
public static void main(String[] args) {
// Create an instance of our test PortableObject
TestPortableObject testPortableObject = new TestPortableObject("testing...", 1234);
// This is the server side serializer that uses the server side POF config
ConfigurablePofContext pofContext = new ConfigurablePofContext("server-pof-config.xml");
// This is the custom client side serializer that just uses the Coherence pof config
PassThroughPofContext passThroughPofContext = new PassThroughPofContext("coherence-common-pof-config.xml");
// Serialize our test instance using the server side serializer
// This would be equivalent to a Binary that would have been sent from the server to the client
Binary binaryFromServer = ExternalizableHelper.toBinary(testPortableObject, pofContext);
// Deserialize the binaryFromServer using the client side serializer
// Just as if the client had recieved this over the wire from the server
PassThrough passThrough = (PassThrough) ExternalizableHelper.fromBinary(binaryFromServer, passThroughPofContext);
// Serialise the PassThrough to Binary using the client side serializer
// as though we are sending the value back over the wire to the server
Binary serializedPassThrough = ExternalizableHelper.toBinary(passThrough, passThroughPofContext);
// Deserialize back to an Object using the server side serializer
TestPortableObject result = (TestPortableObject) ExternalizableHelper.fromBinary(serializedPassThrough, pofContext);
// The result should be equal to the original testPortableObject
System.out.println("Result: " + testPortableObject.equals(result));
}running the above code should print out: Result: true
This was put together pretty quickly so I'm sure people will comment if I have missed anything.
JK
Maybe you are looking for
-
Iphone 5s ios 7.01 - touchscreen typing
After the ios 7.01/7.02 update on my new iPhone 5s I am seeing typing issues. If the phone is in portrait mode and I hit any of the keys on the 2nd row from the bottom ("up arrow', z, x, c, v, b, n, m, "backspace") the keys under them will be pressed
-
IMac internal hard drive won't mount/can't be repaired
hi there, my 11yo son has been using my older imac. it's a 24" 2.4ghz imac with a 500gb drive from around 2007, i think. anyway, yesterday he said it was acting funny, he restarted it and it hung on the grey screen with the logo. i looked at it more
-
Why does my laptop computer automatically write "ccc" and "bbb"?
I have Toshiba Sattelite L300 laptop which automatically writes these letters "cccc" and "bbbb" (ONLY these two letters). I bought this laptop 11 months ago and it is still under 1-year basic guarantee that will expire within few weeks. Few months ag
-
This is a jpeg file but i also have it in illustrator. I friend of mine made this for me as i am not very proficient. I want to crop/copy and paste the individual features of the panda and place it on top of a visual clip as a title, just like as if
-
80GB iPod Classic stuck in recovery mode, tried EVERYTHING
Hello, i'm Michael, and i need some help right now :c i just got an iPod Classic with 80GB of HDD, just a gift, but it had some "issues" (the screen showed a dock connector and it reads "Use iTunes to Restore"), i had an iPod Touch 4G, and i had that