Ok, still having issues with this... Has anyone here used memcached with
gwt? I am starting to thing the problem is because the Report object is both
IsSerializable and  java.io.Serializable?  Any kind of pointer would be
good. Thanks
-Jeremiah

On Sat, Nov 22, 2008 at 1:10 PM, Jeremiah Elliott <[EMAIL PROTECTED]>wrote:

> ok, I am not even 100% sure this is a GWT issue. The more I mess with it
> the more I am convinced that it is somehow gwt related. Anyway I am in the
> process of adding memcache to the application I am working on. In hosted
> mode it worked exactly as expected. Huge speed improvement, and the
> memcached log shows my objects going in and out as expected. The problem is
> that when i publish the application to tomcat the cache doesn't work. I can
> still add items to the cache, but when i pull items out of the cache I get a
> class not found exception.
> Initially I thought that the problem may be because the object being cached
> lives in the client package. (com.sagus.client.Report) I createdd a shared
> package as discribed here
>
> http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/51a8a9bb3f141ab4/c43fcc7dad3f7fde?lnk=gst&q=foo.bar.shared#c43fcc7dad3f7fde
> however this didnt' solve the problem. I could still set and get the Report
> object in Hosted Mode but in production on tomcat I got the same message.
> Here is the stacktrace:
> java.lang.ClassNotFoundException: com.sagus.Shared.Report
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
>     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>     at java.lang.Class.forName0(Native Method)
>     at java.lang.Class.forName(Class.java:247)
>     ......
>
>
>
> Well, clearly it can find com.sagus.Shared.Report because is putting it
> into memcache just fine. In a last act of desperation, i exported the
> contents of src into a jar file using eclipse export feature, and dumped
> that into Tomcat's lib directory. Now I am getting a ClassCastException:
>
> 2008-11-22 12:33:57,425 : ERROR :
> com.sagus.server.DataCache.getWidget(DataCache.java:27) : get widget 18:
> java.lang.ClassCastException: com.sagus.Shared.Report cannot be cast to
> com.sagus.Shared.Report
>     at com.sagus.server.DataCache.getWidget(DataCache.java:25)
>     at com.sagus.server.SagusDashImpl.getReportById(SagusDashImpl.java:244)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527)
>     at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:164)
>     at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)
>     ......
>
>
>
>
> This is the class I am using to do the memcache sets and gets:
>
> package com.sagus.server;
>
> import java.io.IOException;
> import java.net.InetSocketAddress;
> import net.spy.memcached.MemcachedClient;
> import org.apache.log4j.Logger;
> import com.sagus.Shared.Report;
>
> public class DataCache {
>     private static final Logger        logger            =
> SagusDashImpl.getLogger();
>     private static String            WIDGET_PREFIX    = "PROD_WIDGET_";
>     private static MemcachedClient    c                = null;
>
>     public DataCache() {
>         try {
>             c = new MemcachedClient(new InetSocketAddress("localhost",
> 11211));
>         } catch (IOException ioe) {
>             logger.error("init DataCache ", ioe);
>         }
>     }
>
>     public Report getWidget(int id) {
>         Report r = null;
>         try {
>             r = (Report) c.get(WIDGET_PREFIX + id);
>         } catch (Exception e) {
>             logger.error("get widget " + id + ": ", e);
>         }
>         return r;
>     }
>
>     public void cacheWidget(Report report) {
>         try {
>             c.set(WIDGET_PREFIX + report.getWidgetId(), 360000, report);
>         } catch (Exception e) {
>             logger.error("cacheWidget ", e);
>         }
>     }
>
>
> Here is the object being cached, its just a pojo:
>
> package com.sagus.Shared;
> import java.util.ArrayList;
> import java.util.Date;
> import com.google.gwt.user.client.rpc.IsSerializable;
>
> public class Report implements IsSerializable, java.io.Serializable {
> ....
> }
>
>
> On one hand I wonder if its because it is implementing two different
> serializable interfaces, but when i build this same object from the database
> it works just fine.
> At this point I am totally out of ideas. Any pointers would be helpful.
>
> -Jeremiah
>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to