Hi Paul-

Answers/comments inline below...


On Fri, Apr 28, 2017 at 10:02 AM, Paul Perez <[email protected]> wrote:

> Hello all
> We develop a kind of aggregation features for our monitoring system.
> In our geode cache, we use the pdx serialisation for our java objets. They
> will not be used elsewhere.
> So come two questions :
> First we developed event listeners to aggregate the event of our products.
> Once the handler receives the asyncEvent, we have to deserialize it. Do we
> use pdx features here as well?
>

Is there a specific reason why you have to deserialize it?  You can work
with PdxInstance(s)
<http://geode.apache.org/releases/latest/javadoc/index.html> [1]
directly (getting/setting
fields
<http://geode.apache.org/releases/latest/javadoc/org/apache/geode/pdx/PdxInstance.html#createWriter-->
[2]
of the object's type without deserializing).  If necessary, you can always get
the deserialized, object instance
<http://geode.apache.org/releases/latest/javadoc/org/apache/geode/pdx/PdxInstance.html#getObject-->
[3]
of the data (providing the class type is on the classpath of the server
where AEQ Listener is firing).  It is even possible to query (with OQL) PDX
serialized bytes without deserializing (unlike Java serialized bytes).

However, you should be careful in that once deserialized, Geode will retain
the deserialized form of the data in the Region.  This will only cause
overhead when the data needs to be re-serialized, which is anytime the data
is persisted/overflowed to disk, replicated between peers, sent across a
WAN or sent to clients.

You can learn more here
<http://geode.apache.org/docs/guide/11/developing/data_serialization/gemfire_pdx_serialization.html>
 [4].

[1] http://geode.apache.org/releases/latest/javadoc/index.html
[2]
http://geode.apache.org/releases/latest/javadoc/org/apache/geode/pdx/PdxInstance.html#createWriter--
[3]
http://geode.apache.org/releases/latest/javadoc/org/apache/geode/pdx/PdxInstance.html#getObject--
[4]
http://geode.apache.org/docs/guide/11/developing/data_serialization/gemfire_pdx_serialization.html


> Seconds question: one of our application use a client cache for memory
> issues.  As far as we understood, pdx serialization cannot be defined in
> the cache.xml.
> So, if the client cache doesn't support pdx so are we forced to use the
> classical java serialization to send the ojects to the servers?
>

Why do you think that?  See here
<http://geode.apache.org/docs/guide/11/reference/topics/client-cache.html#cc-pdx>
 [5].

Unfortunately, the example is WRONG, as it is using the "peer" cache
element tag (<cache> instead of <client-cache>), but this reference ([5])
is from client-cache section and it is possible to configure PDX on the
client.  You must configure PDX serialization on the client to serialize
bytes to the server from the client using PDX.  Server-side PDX
configuration maybe optional if you have nothing running in the servers
directly (e.g. a Function or CacheLoader) since the server will retain the
data in the form that it receives, unless, as I mention, above, something
were to cause the data to be deserialized.  Then, you need to specify your
serialization strategy, e.g. either by your application domain objects
implementing PdxSerializable
<http://geode.apache.org/docs/guide/11/developing/data_serialization/use_pdx_serializable.html>
[6](invasive,
and not recommended) or by implementing a PdxSerializer
<http://geode.apache.org/docs/guide/11/developing/data_serialization/use_pdx_serializer.html>
[7]
(or perhaps using a OOTB impl... ReflectionBasedAutoSerializer
<http://geode.apache.org/docs/guide/11/developing/data_serialization/auto_serialization.html>
[8],
though personally, I think implementing your own PdxSerializer
implementations for your application domain objects is better... you can
even get creative using the *Composite Software Design Pattern* to create
per domain type serializers but treat it as 1 since Geode only allows you
to register 1).

Anyway, it is possible to use PDX serialization on the client.

Hope this helps!

Cheers,
John


[5]
http://geode.apache.org/docs/guide/11/reference/topics/client-cache.html#cc-pdx
[6]
http://geode.apache.org/docs/guide/11/developing/data_serialization/use_pdx_serializable.html
[7]
http://geode.apache.org/docs/guide/11/developing/data_serialization/use_pdx_serializable.html
[8]
http://geode.apache.org/docs/guide/11/developing/data_serialization/auto_serialization.html


>
> Thank you for your response
>
> Paul
>
>


-- 
-John
john.blum10101 (skype)

Reply via email to