No.  JSONFormatter only works between JSON and PDX.  As such, the REST API
does not support Java serialization OOTB.

On Thu, Dec 3, 2015 at 11:31 AM, Nikhil Chandrappa <[email protected]>
wrote:

> Thanks everyone for the response. Seems like enabling the PDX on the
> client cache is way to go.
>
> I had one more thought, if I enable the Rest API and query the data
> through rest endpoint. Will Gemfire successfully convert the Java
> serialized object into JSON using JSONFormatter?
>
> Regards,
> Nikhil
>
>
>
> On Thu, Dec 3, 2015 at 2:07 PM, Mark Secrist <[email protected]> wrote:
>
>> I've run into this issue myself. One important thing you need to do that
>> I don't see on the configuration is setting PDX serialization on the
>> client. I've done something like the following:
>> <gfe:client-cache id="clientCache" pool-name="gemfirePool"
>> pdx-serializer-ref="pdxAutoSerializer" />
>>     <bean id="pdxAutoSerializer"
>> class="com.gemstone.gemfire.pdx.ReflectionBasedAutoSerializer">
>>        <constructor-arg>
>>             <value>classes to serialize</value>
>>        </constructor-arg>
>> </bean>
>>
>> That way, as clients are inserting objects, they will be PDX serialized.
>> Another thing I've seen happen is that there are some rules about objects
>> (and contained objects) needing a default (no arg) constructor. If GemFire
>> detects this isn't the case, it will revert to Java Serializable. You can
>> enforce this by adding the 'check-portability' parameter to the serializer
>> constructor. This will cause serialization to fail if you don't meet the
>> requirements for PDX Serialization.
>>
>> Mark
>>
>> On Thu, Dec 3, 2015 at 11:30 AM, Jason Huynh <[email protected]> wrote:
>>
>>> Hi Nikhil,
>>>
>>> For point (a), if the objects are stored as java serializable, I believe
>>> when deserializing on the server, the class files would need to be on the
>>> server class path because at that point it is not pdx serialized.
>>>
>>> I think you would need to have the clients serialize with pdx or else
>>> you will get this behavior.  I am not sure but I don't think the server can
>>> automatically convert from java serialization to pdx serialization in this
>>> scenario, especially because the information on how to pdx serialize would
>>> be contained in the class which isn't on the server.
>>>
>>> Even if the server knew about the class file, I am not sure if that auto
>>> conversion would happen once it has been serialized from the client.
>>> Someone that knows pdx a bit better may be able to answer this.
>>>
>>> -Jason
>>>
>>> On Thu, Dec 3, 2015 at 10:12 AM, Nikhil Chandrappa <
>>> [email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> *Issue*:
>>>>
>>>> Unable to query the Gemfire region. I get the following exception
>>>>
>>>> gfsh>query --query="SELECT firstName FROM /Account WHERE id=1"
>>>>
>>>> Result     : false
>>>> startCount : 0
>>>> endCount   : 20
>>>> Message    : A ClassNotFoundException was thrown while trying to
>>>> deserialize cached value.
>>>>
>>>> NEXT_STEP_NAME : END
>>>>
>>>> *Context*:
>>>>
>>>> We are using Spring Data Gemfire caching for storing the cached objects
>>>> in
>>>> to Gemfire. We want to be able to query the Gemfire region to see the
>>>> cache
>>>> data.
>>>>
>>>> Following are the constraints we have,
>>>>
>>>> 1. we cannot enable the PDX serializer on the client
>>>> 2. Domain objects cannot be placed on the Gemfire server classpath
>>>>
>>>> *Analysis:*
>>>>
>>>> *a)*
>>>> we have configured Gemfire cluster with PDX serialization, however
>>>> Gemfire
>>>> will store the objects as Java Serialized object. is this a valid
>>>> behavior?
>>>>
>>>> *b)*
>>>> If we use the query service like below,
>>>>
>>>> // Log for debugging
>>>>
>>>> cache.getLogger().info("Executing Query: "+ queryStr);
>>>>
>>>> SelectResults results = (SelectResults) query.execute();
>>>>
>>>> // Log for debugging
>>>>
>>>> cache.getLogger().info("After Query Execution");
>>>>
>>>> I am getting "A ClassNotFoundException was thrown while trying to
>>>> deserialize cached value."
>>>>
>>>> What are the options that we have for querying the regions with
>>>> constraints
>>>> that are mentioned above? We want to able to query the Gemfire regions
>>>> without having the domain objects present on the classpath.
>>>>
>>>> *Configurations:*
>>>>
>>>>
>>>> ClientCache.xml
>>>>
>>>> <?xml version="1.0" encoding="utf-8"?>
>>>> <beans xmlns="http://www.springframework.org/schema/beans";
>>>>        xmlns:cache="http://www.springframework.org/schema/cache";
>>>>        xmlns:context="http://www.springframework.org/schema/context";
>>>>        xmlns:gfe="http://www.springframework.org/schema/gemfire";
>>>>        xmlns:gfe-data="
>>>> http://www.springframework.org/schema/data/gemfire";
>>>>        xmlns:p="http://www.springframework.org/schema/p";
>>>>        xmlns:util="http://www.springframework.org/schema/util";
>>>>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>        xsi:schemaLocation="
>>>>         http://www.springframework.org/schema/beans
>>>> http://www.springframework.org/schema/beans/spring-beans.xsd
>>>>         http://www.springframework.org/schema/cache
>>>> http://www.springframework.org/schema/cache/spring-cache.xsd
>>>>         http://www.springframework.org/schema/context
>>>> http://www.springframework.org/schema/context/spring-context.xsd
>>>>         http://www.springframework.org/schema/gemfire
>>>> http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
>>>>         http://www.springframework.org/schema/data/gemfire
>>>>
>>>> http://www.springframework.org/schema/data/gemfire/spring-data-gemfire.xsd
>>>>         http://www.springframework.org/schema/util
>>>> http://www.springframework.org/schema/util/spring-util.xsd
>>>> ">
>>>>
>>>>
>>>>   <util:properties id="clientConfigurationSettings">
>>>>     <prop key="pivotal.cache.specs.directory">specs</prop>
>>>>   </util:properties>
>>>>
>>>>   <context:property-placeholder location="classpath:server.properties"
>>>> properties-ref="clientConfigurationSettings"/>
>>>>
>>>>   <util:properties id="gemfireCacheConfigurationSettings">
>>>>     <prop key="log-level">config</prop>
>>>>     <prop key="cluster-ssl-enabled">true</prop>
>>>>     <prop
>>>>
>>>> key="cluster-ssl-truststore">/Users/nchandrappa/Documents/grid/security/cacerts.keystore</prop>
>>>>     <prop key="cluster-ssl-truststore-password">password</prop>
>>>>   </util:properties>
>>>>
>>>>   <gfe:pool id="serverConnectionPool">
>>>>     <gfe:locator host="localhost" port="10334"/>
>>>>   </gfe:pool>
>>>>
>>>>   <gfe:client-cache properties-ref="gemfireCacheConfigurationSettings"
>>>> id="gemfireCache" pool-name="serverConnectionPool"/>
>>>>
>>>>   <cache:annotation-driven/>
>>>>
>>>>   <bean id="cacheManager"
>>>>
>>>> class="pivotal.gemfire.core.cache.manager.RegionCreationGemFireCacheManager"
>>>>         p:cache-ref="gemfireCache"/>
>>>>    <bean class="pivotal.gemfire.core.cache.manager.RegionCreator" />
>>>>
>>>>   <context:component-scan base-package="pivotal.client"/>
>>>>
>>>> </beans>
>>>>
>>>>
>>>> ServerCache.xml
>>>>
>>>> <?xml version="1.0"?>
>>>> <!DOCTYPE cache PUBLIC
>>>>   "-//GemStone Systems, Inc.//GemFire Declarative Caching 8.0//EN"
>>>>   "http://www.gemstone.com/dtd/cache8_0.dtd";>
>>>>
>>>> <cache>
>>>>   <pdx read-serialized="true" />
>>>> </cache>
>>>>
>>>> Thanks,
>>>> Nikhil
>>>>
>>>
>>>
>>
>>
>> --
>>
>> *Mark Secrist | Sr Manager, **Global Education Delivery*
>>
>> [email protected]
>>
>> 970.214.4567 Mobile
>>
>>   *pivotal.io <http://www.pivotal.io/>*
>>
>> Follow Us: Twitter <http://www.twitter.com/pivotal> | LinkedIn
>> <http://www.linkedin.com/company/pivotalsoftware> | Facebook
>> <http://www.facebook.com/pivotalsoftware> | YouTube
>> <http://www.youtube.com/gopivotal> | Google+
>> <https://plus.google.com/105320112436428794490>
>>
>
>


-- 
-John
503-504-8657
john.blum10101 (skype)

Reply via email to