Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Adding SGWT Power support to Grails

    I am trying to add SGWT datasources to my existing Grails domain classes (~beans).
    Since the SGWT-Grails plugin is broken at the moment, I reverted to the hibernate DS integration strategy as this seems to be able to leverage the existing bean definition. This is the DS description file for one of the domain classes:
    Code:
     <DataSource
        ID="task"
    	serverType="hibernate"
    	autoDeriveSchema="true"  
        schemaBean="com.aCompany.Task"
    >
        <fields>  
            <field name="id" hidden="true"/>  
        </fields> 
    </DataSource>
    The corresponding domain class (~bean) reads (stripped to the bone):
    Code:
    class Task {
    	
    	String name
    }
    Alas, there is a
    Code:
    ERROR DataSourceLoader - Exception while attempting to load a DataSource
    java.lang.ClassNotFoundException: com.aCompany.Task
    at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:156)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    	at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:128)
    	at org.codehaus.groovy.grails.cli.support.GrailsRootLoader.loadClass(GrailsRootLoader.java:48)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Class.java:186)
    	at com.isomorphic.hibernate.HibernateDataSource.getDataSourceConfigFromJavaClass(HibernateDataSource.java:4897)
    	at com.isomorphic.hibernate.HibernateDataSource.init(HibernateDataSource.java:241)
    	at com.isomorphic.datasource.DataSource.initialize(DataSource.java:400)
    	at com.isomorphic.datasource.BasicDataSource.fromConfig(BasicDataSource.java:163)
    	at com.isomorphic.datasource.DataSource.fromConfig(DataSource.java:385)
    	at com.isomorphic.datasource.FileSystemDSRepo.loadDS(FileSystemDSRepo.java:110)
    	at com.isomorphic.datasource.DataSource.forName(DataSource.java:204)
    	at com.isomorphic.datasource.DataSource.forName(DataSource.java:195)
    	at com.isomorphic.datasource.DataSource.forName(DataSource.java:184)
    	at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:119)
    	at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:127)
    	at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:94)
    	at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:89)
    	at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:83)
    	at com.isomorphic.servlet.DataSourceLoader.processRequest(DataSourceLoader.java:126)
    	at com.isomorphic.servlet.DataSourceLoader.doGet(DataSourceLoader.java:94)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:364)
    	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:231)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:200)
    	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:151)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:69)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.codehaus.groovy.grails.plugins.gwt.GwtCacheControlFilter.doFilter(GwtCacheControlFilter.java:50)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
    	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    	at java.lang.Thread.run(Thread.java:722)
    on startup.

    This post might describe the problem and suggests a fix:
    http://binarybuffer.com/2012/03/grails-class-forname-classnotfoundexception
    So is there a way to influence, how the Beans are loaded from the SGWT (server-) side?
    Or is there an even better strategy to add SGWT Power features to an existing Grails application using existing domain classes as a base (SQL datasource is no option due to existing business logic)

    Thanks
    fazopilot

    Grails 2.11, SGWT Power 3.1 SNAPSHOT_v8.3d_2012-09-21/PowerEdition Deployment (built 2012-09-21), GWT 2.4, Java build 1.7.0-b147

    #2
    We already use the Thread's contextClassLoader, so most likely the problem is that the class really isn't on the classpath.

    Comment


      #3
      Code:
          public static Class<?> forName(String className) 
                      throws ClassNotFoundException {
              return forName0(className, true, ClassLoader.getCallerClassLoader());
          }
      in java.lang.Class line: 169 is the code that gets called by HibernateDataSource.getDataSourceConfigFromJavaClass(String, String, boolean, Map) line: 4897

      So, I do not see that the contextClassLoader is called in this situation but instead the callerClassLoader.

      The classloader that is returned by ClassLoader.getCallerClassLoader() is a org.codehaus.groovy.grails.cli.support.GrailsRootLoader, the one that would be returned by Thread.currentThread().contextClassLoader here is a org.grails.plugins.tomcat.ParentDelegatingClassLoader

      These are obviously not the same. Am I missing something?

      Just confirmed that the same happens on Java 6 as well.
      Last edited by fatzopilot; 6 Oct 2012, 01:10. Reason: Adding missing information about java versions

      Comment


        #4
        I digged a bit deeper and compared the environment to that of the SGWTEE-Showcase.
        A stacktrace if the bean cannot be found looked like this there:
        Code:
        java.lang.ClassNotFoundException: com.smartgwt.sample.showcase.server.SupplyItemHB
        	at java.lang.ClassLoader.findClass(ClassLoader.java:522)
        	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        	at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:352)
        	at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337)
        	at java.lang.Class.forName0(Native Method)
        	at java.lang.Class.forName(Class.java:186)
        	at com.isomorphic.base.Reflection.classForName(Reflection.java:140)
        	at com.isomorphic.hibernate.HibernateDataSource.getConfigFromMappedClass(HibernateDataSource.java:5048)
        	at com.isomorphic.hibernate.HibernateDataSource.fromMappedClass(HibernateDataSource.java:5023)
        	at com.isomorphic.hibernate.HibernateDataSource.init(HibernateDataSource.java:217)
        	at com.isomorphic.datasource.DataSource.initialize(DataSource.java:400)
        	at com.isomorphic.datasource.BasicDataSource.fromConfig(BasicDataSource.java:163)
        	at com.isomorphic.datasource.DataSource.fromConfig(DataSource.java:385)
        	at com.isomorphic.datasource.FileSystemDSRepo.loadDS(FileSystemDSRepo.java:110)
        	at com.isomorphic.datasource.DataSource.forName(DataSource.java:204)
        	at com.isomorphic.datasource.DataSource.forName(DataSource.java:195)
        	at com.isomorphic.datasource.DataSource.forName(DataSource.java:184)
        	at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:119)
        	at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:127)
        	at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:94)
        	at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:89)
        	at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:83)
        	at com.isomorphic.servlet.DataSourceLoader.processRequest(DataSourceLoader.java:126)
        	at com.isomorphic.servlet.DataSourceLoader.doGet(DataSourceLoader.java:94)
        	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
        	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
        	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
        	at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
        	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
        	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
        	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
        	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
        	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
        	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        	at org.mortbay.jetty.Server.handle(Server.java:324)
        	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
        	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
        	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
        	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
        I am not sure, why in the Grails case
        Code:
        com.isomorphic.hibernate.HibernateDataSource.getDataSourceConfigFromJavaClass(HibernateDataSource.java:4897)
        is used, whereas this is never used in the Showcase but instead
        Code:
        com.isomorphic.hibernate.HibernateDataSource.getConfigFromMappedClass(HibernateDataSource.java:5048)
        What is the semantics of a mapped class here? Mapped onto a schema? Mapped by field definitions in a ds.xml? (I don’t see much in the ds.xml but autoDeriveSchema=”true” as I would expect).
        Anyway, both traces finally arrive at
        Code:
        java.lang.Class.forName(Class.java:186/196 depending on the Java version).
        In the Showcase case, classloaders returned by both methods, i.e.
        Code:
        Thread.currentThread().contextClassLoader
        ClassLoader.getCallerClassLoader()
        are identical (as opposed to the Grails case described in the previous posts).
        Unfortunately, I was unable to debug-inject the Thread.currentThread().contextClassLoader to try it out (no sources, static context, and no intermediate variables for the class or the classloader).
        So I wonder whether it is possible for Isomorphic to change invocations of
        Code:
        java.lang.Class.forName(String className)
        to
        Code:
         java.lang.Class.forName(String className, true, Thread.currentThread().contextClassLoader).
        (at least from the classes com.isomorphic.hibernate.HibernateDataSource
        and com.isomorphic.base.Reflection)

        Don’t know whether this is appropriate in general, but this will - in all cases (even with Grails) - get the Thread's contextClassLoader as described by Isomorphic above.

        Thanks
        fatzopilot

        Comment


          #5
          Hi,

          Its been changed some days ago already.
          Please get the latest build.

          Regards,
          Alius

          Comment


            #6
            Hi,
            thanks, the current nightlies indeed get around this.
            Im am now able to successfully (i.e. the correct field definitions are derived on the client side and the server side generates appropriate fetch requests if the filter editor is used) create a datasource that is available on the client, using e.g.
            Code:
             <DataSource
                ID="task"
            	serverType="hibernate"
            	autoDeriveSchema="true"  
                schemaBean="com.aCompany.Task"
            >
                <fields>  
                    <field name="id" hidden="true"/>
                    <field name="version" hidden="true"/>  
                    <field name="attached" hidden="true"/>  
                    <field name="errors" hidden="true"/>  
                    <field name="properties" hidden="true"/>  
                </fields> 
            </DataSource>
            in a datasource and
            Code:
            hibernate.config.lookupStyle: spring
            hibernate.config.bean: sessionFactory
            in server.properties.

            On loading data, a hibernate fetch query is generated on the server which initially does not return any values (as the table is empty).

            Now, if data is involved (i.e. either a record is generated on the client or an existing row should be passed to the client), there is trouble with this style of exceptions:
            Code:
            Setting value to the error string and continuing
            === 2012-10-13 13:32:34,455 [ec-1] DEBUG DataTools - Bean inspection: invocation of org.springframework.beans.GenericTypeAwarePropertyDescriptor.getReadMethod() while trying to obtain property 'readMethod' threw an exception: java.lang.IllegalAccessException: Class com.isomorphic.util.DataTools can not access a member of class org.springframework.beans.GenericTypeAwarePropertyDescriptor with modifiers "public"
            	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
            	at com.springsource.loaded.jvm.JVM.ensureMemberAccess(JVM.java:90)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.asAccessibleMethod(ReflectiveInterceptor.java:511)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1230)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2670)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2617)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:701)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convertArray(JSTranslater.java:1128)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:665)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:661)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:663)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.toJS(JSTranslater.java:561)
            	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1316)
            	at com.isomorphic.rpc.RPCManager.send(RPCManager.java:586)
            	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
            	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
            	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
            	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:364)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:231)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:200)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:151)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.plugins.gwt.GwtCacheControlFilter.doFilter(GwtCacheControlFilter.java:50)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
            	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
            	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
            	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
            	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
            	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
            	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
            	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
            	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
            	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
            	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
            	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
            	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
            	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
            	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
            	at java.lang.Thread.run(Thread.java:722)
            
            Setting value to the error string and continuing
            === 2012-10-13 13:32:34,456 [ec-1] DEBUG DataTools - Bean inspection: invocation of org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethod() while trying to obtain property 'writeMethod' threw an exception: java.lang.IllegalAccessException: Class com.isomorphic.util.DataTools can not access a member of class org.springframework.beans.GenericTypeAwarePropertyDescriptor with modifiers "public"
            	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
            	at com.springsource.loaded.jvm.JVM.ensureMemberAccess(JVM.java:90)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.asAccessibleMethod(ReflectiveInterceptor.java:511)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1230)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2670)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2617)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:701)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convertArray(JSTranslater.java:1128)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:665)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:661)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:663)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.toJS(JSTranslater.java:561)
            	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1316)
            	at com.isomorphic.rpc.RPCManager.send(RPCManager.java:586)
            	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
            	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
            	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
            	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:364)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:231)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:200)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:151)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.plugins.gwt.GwtCacheControlFilter.doFilter(GwtCacheControlFilter.java:50)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
            	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
            	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
            	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
            	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
            	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
            	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
            	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
            	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
            	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
            	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
            	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
            	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
            	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
            	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
            	at java.lang.Thread.run(Thread.java:722)
            
            Setting value to the error string and continuing
            === 2012-10-13 13:32:34,457 [ec-1] DEBUG DataTools - Bean inspection: invocation of org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess() while trying to obtain property 'writeMethodForActualAccess' threw an exception: java.lang.IllegalAccessException: Class com.isomorphic.util.DataTools can not access a member of class org.springframework.beans.GenericTypeAwarePropertyDescriptor with modifiers "public"
            	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
            	at com.springsource.loaded.jvm.JVM.ensureMemberAccess(JVM.java:90)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.asAccessibleMethod(ReflectiveInterceptor.java:511)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1230)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2670)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2617)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:701)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convertArray(JSTranslater.java:1128)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:665)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:661)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:663)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.toJS(JSTranslater.java:561)
            	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1316)
            	at com.isomorphic.rpc.RPCManager.send(RPCManager.java:586)
            	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
            	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
            	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
            	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:364)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:231)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:200)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:151)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.plugins.gwt.GwtCacheControlFilter.doFilter(GwtCacheControlFilter.java:50)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
            	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
            	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
            	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
            	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
            	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
            	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
            	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
            	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
            	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
            	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
            	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
            	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
            	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
            	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
            	at java.lang.Thread.run(Thread.java:722)
            
            Setting value to the error string and continuing
            === 2012-10-13 13:32:34,460 [ec-1] DEBUG DataTools - Bean inspection: invocation of org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodParameter() while trying to obtain property 'writeMethodParameter' threw an exception: java.lang.IllegalAccessException: Class com.isomorphic.util.DataTools can not access a member of class org.springframework.beans.GenericTypeAwarePropertyDescriptor with modifiers "public synchronized"
            	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
            	at com.springsource.loaded.jvm.JVM.ensureMemberAccess(JVM.java:90)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.asAccessibleMethod(ReflectiveInterceptor.java:511)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1230)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2670)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2617)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:701)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convertArray(JSTranslater.java:1128)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:665)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:661)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:663)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.toJS(JSTranslater.java:561)
            	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1316)
            	at com.isomorphic.rpc.RPCManager.send(RPCManager.java:586)
            	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
            	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
            	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
            	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:364)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:231)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:200)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:151)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.plugins.gwt.GwtCacheControlFilter.doFilter(GwtCacheControlFilter.java:50)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
            	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
            	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
            	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
            	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
            	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
            	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
            	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
            	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
            	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
            	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
            	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
            	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
            	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
            	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
            	at java.lang.Thread.run(Thread.java:722)
            
            Setting value to the error string and continuing
            === 2012-10-13 13:32:34,461 [ec-1] DEBUG DataTools - Bean inspection: invocation of org.springframework.beans.GenericTypeAwarePropertyDescriptor.getBeanClass() while trying to obtain property 'beanClass' threw an exception: java.lang.IllegalAccessException: Class com.isomorphic.util.DataTools can not access a member of class org.springframework.beans.GenericTypeAwarePropertyDescriptor with modifiers "public"
            	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
            	at com.springsource.loaded.jvm.JVM.ensureMemberAccess(JVM.java:90)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.asAccessibleMethod(ReflectiveInterceptor.java:511)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1230)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2670)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2617)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:701)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convertArray(JSTranslater.java:1128)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:665)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:661)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:663)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.toJS(JSTranslater.java:561)
            	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1316)
            	at com.isomorphic.rpc.RPCManager.send(RPCManager.java:586)
            	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
            	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
            	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
            	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:364)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:231)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:200)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:151)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.plugins.gwt.GwtCacheControlFilter.doFilter(GwtCacheControlFilter.java:50)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
            	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
            	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
            	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
            	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
            	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
            	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
            	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
            	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
            	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
            	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
            	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
            	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
            	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
            	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
            	at java.lang.Thread.run(Thread.java:722)
            
            Setting value to the error string and continuing
            === 2012-10-13 13:32:34,462 [ec-1] DEBUG DataTools - Bean inspection: invocation of org.springframework.beans.GenericTypeAwarePropertyDescriptor.getPropertyEditorClass() while trying to obtain property 'propertyEditorClass' threw an exception: java.lang.IllegalAccessException: Class com.isomorphic.util.DataTools can not access a member of class org.springframework.beans.GenericTypeAwarePropertyDescriptor with modifiers "public"
            	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
            	at com.springsource.loaded.jvm.JVM.ensureMemberAccess(JVM.java:90)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.asAccessibleMethod(ReflectiveInterceptor.java:511)
            	at com.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1230)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2670)
            	at com.isomorphic.util.DataTools.getProperties(DataTools.java:2617)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:701)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convertArray(JSTranslater.java:1128)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:665)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:590)
            	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1053)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:661)
            	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1215)
            	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1166)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:663)
            	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:599)
            	at com.isomorphic.js.JSTranslater.toJS(JSTranslater.java:561)
            	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1316)
            	at com.isomorphic.rpc.RPCManager.send(RPCManager.java:586)
            	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
            	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
            	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
            	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:364)
            	at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:231)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:200)
            	at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:151)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.codehaus.groovy.grails.plugins.gwt.GwtCacheControlFilter.doFilter(GwtCacheControlFilter.java:50)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
            	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
            	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
            	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
            	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
            	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
            	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
            	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
            	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
            	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
            	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
            	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
            	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
            	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
            	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
            	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
            	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
            	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
            	at java.lang.Thread.run(Thread.java:722)
            As SGWT seems to rely on spring-2.0.8 and Grails in the meantime upgraded to 3.1.2, this is a likely point of trouble.
            In fact, GenericTypeAwarePropertyDescriptor was introduced with Spring 2.5.2 (http://javasourcecode.org/html/open-source/spring/spring-3.0.5/org/springframework/beans/GenericTypeAwarePropertyDescriptor.java.html) and before, it might be that http://javasourcecode.org/html/open-source/jdk/jdk-6u23/java/beans/PropertyDescriptor.java.html was used directly.
            The difference between the two that is causing trouble is the "public" access modifier that is missing in the GenericTypeAwarePropertyDescriptor case.
            I tried to fix this error by providing a spring source plugin 3.1.2 for Grails that has the access modifier set to public. This seems to be successful but now a similar issue happens with org.codehaus.groovy.grails.plugins.CodecsGrailsPlugin and I don’t know how far making all classes public will take me here.
            So I supposed this is the wrong way to integrate SGWT Power with Grails.
            Is there another way (except SQLDs, hibernate managed beans required) or is SGWT-Grails integration using the features of the power edition simply not feasible?

            Thanks
            fatzopilot

            Comment


              #7
              This doesn't look like a conflict of Spring versions, rather just some kind of bug in Spring that is manifesting in your application. We're not directly calling Spring APIs in this stack, we're calling the core Java API Method.invoke() and Spring appears to have broken this API for your bean.

              That said, if you can't solve it, SQLDataSource is another way to proceed, and it's going to make available more of the feature of Power Edition (like SQL Templating and automatic generation of SQL for AdvancedCriteria).

              Comment


                #8
                > That said, if you can't solve it, SQLDataSource is another way to proceed, and it's going to make available more of the feature of Power Edition (like SQL Templating and automatic generation of SQL for AdvancedCriteria)

                That’s not an option as we use a lot of hibernate features like formulas and filters and it would be a lot of boilerplate to replicate this in plain SQL for the web tier.

                Can you confirm that above configuration is the/one configuration that is supposed to work with plain spring + hibernate?

                Thanks
                fatzopilot

                Comment


                  #9
                  There's nothing wrong with the configuration you've shown us.

                  Again, if you look at the stack you can see that in your particular Hibernate/Spring setup, the Java Reflection API has been fundamentally broken. There's no kind of configuration you could possibly apply to SmartGWT to fix this - it's a Spring or Hibernate problem.

                  Comment


                    #10
                    Hi,

                    after Adding

                    Code:
                    dropExtraFields="true"
                    to the DS definition, the above error seems gone.
                    Somehow, this issue seems similar to this one here:
                    http://forums.smartclient.com/showthread.php?p=93992#post93992

                    Anyway, now I get a No Hibernate Session bound to thread Exception:

                    Code:
                    2012-10-19 15:03:51,902 [quartzScheduler_Worker-10] INFO  jobs.SendPendingCommandMessagesJob  - <<<<< Trying to send 0 pending command messages... Currently 0 devices connected.
                    === 2012-10-19 15:04:02,048 [ec-6] DEBUG IDACall - Header Name:Value pair: host:localhost:8080
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: user-agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: accept-language:en-US;q=0.8
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: accept-encoding:gzip, deflate
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: dnt:1
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: connection:keep-alive
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: content-type:application/x-www-form-urlencoded; charset=UTF-8
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: referer:http://localhost:8080/aCompany/myApp?gwt.codesvr=127.0.0.1:9997
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: content-length:904
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: cookie:JSESSIONID=774CCA2AFFDD44B90DF682FC79B954D2; view_state=nc1; GLog=%7B%0D%20%20%20%20left%3A0%2C%20%0D%20%20%20%20top%3A0%2C%20%0D%20%20%20%20width%3A1386%2C%20%0D%20%20%20%20height%3A713%2C%20%0D%20%20%20%20priorityDefaults%3A%7B%0D%20%20%20%20%20%20%20%20Log%3A4%0D%20%20%20%20%7D%2C%20%0D%20%20%20%20defaultPriority%3A3%2C%20%0D%20%20%20%20trackRPC%3Atrue%0D%7D
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: pragma:no-cache
                    === 2012-10-19 15:04:02,049 [ec-6] DEBUG IDACall - Header Name:Value pair: cache-control:no-cache
                    === 2012-10-19 15:04:02,050 [ec-6] DEBUG IDACall - session exists: 774CCA2AFFDD44B90DF682FC79B954D2
                    === 2012-10-19 15:04:02,050 [ec-6] DEBUG IDACall - remote user: 74
                    === 2012-10-19 15:04:02,053 [ec-6] INFO  RequestContext - URL: '/aCompany/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0': Moz (Gecko) with Accept-Encoding header
                    === 2012-10-19 15:04:02,064 [ec-6] DEBUG XML - Parsed XML from (in memory stream): 3ms
                    === 2012-10-19 15:04:02,071 [ec-6] DEBUG XML - Parsed XML from D:\workspaces\aCompany\web-app\sc\system\schema\List.ds.xml: 4ms
                    === 2012-10-19 15:04:02,075 [ec-6] DEBUG RPCManager - Processing 1 requests.
                    === 2012-10-19 15:04:02,085 [ec-6] WARN  BasicDataSource - Can not load related data source 'org.springframework.validation.Errors' for field 'errors'. Treating as simple field.
                    === 2012-10-19 15:04:02,086 [ec-6] WARN  BasicDataSource - Can not load related data source 'java.util.Map' for field 'properties'. Treating as simple field.
                    === 2012-10-19 15:04:02,087 [ec-6] DEBUG DataSourceAnnotations - Generating data source 'Task' for class com.aCompany.Task
                    === 2012-10-19 15:04:02,088 [ec-6] DEBUG RPCManager - Request #1 (DSRequest) payload: {
                        values:{
                            someName:"whatever"
                        },
                        operationConfig:{
                            dataSource:"task",
                            operationType:"add"
                        },
                        componentId:"isc_SmartListGrid_0",
                        appID:"builtinApplication",
                        operation:"task_add",
                        oldValues:{
                            someName:"whatever"
                        },
                        criteria:{
                        }
                    }
                    === 2012-10-19 15:04:02,092 [ec-6] INFO  IDACall - Performing 1 operation(s)
                    === 2012-10-19 15:04:02,092 [ec-6] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
                    === 2012-10-19 15:04:02,092 [ec-6] DEBUG DeclarativeSecurity - DataSource task is not in the pre-checked list, processing...
                    === 2012-10-19 15:04:02,104 [ec-6] DEBUG AppBase - [builtinApplication.task_add] No userTypes defined, allowing anyone access to all operations for this application
                    === 2012-10-19 15:04:02,105 [ec-6] DEBUG AppBase - [builtinApplication.task_add] No public zero-argument method named '_task_add' found, performing generic datasource operation
                    === 2012-10-19 15:04:02,107 [ec-6] INFO  HibernateDataSource - [builtinApplication.task_add] Performing add operation with
                    	criteria: {someName:"whatever"}	values: {someName:"whatever"}
                    === 2012-10-19 15:04:02,110 [ec-6] DEBUG HibernateTransaction - [builtinApplication.task_add] Started new transaction "311113960"
                    === 2012-10-19 15:04:02,115 [ec-6] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
                    === 2012-10-19 15:04:02,116 [ec-6] INFO  HibernateTransaction - Attempting to commit 1 database update(s)
                    === 2012-10-19 15:04:02,116 [ec-6] DEBUG HibernateTransaction - Committing transaction "311113960"
                    2012-10-19 15:04:02,144 [http-bio-8080-exec-6] ERROR events.PatchedDefaultFlushEventListener  - Could not synchronize database state with session
                    org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
                    	at org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener.onApplicationEvent(AbstractPersistenceEventListener.java:46)
                    	at com.isomorphic.hibernate.HibernateTransaction.commitTransaction(HibernateTransaction.java:242)
                    	at com.isomorphic.hibernate.HibernateTransaction.commitTransaction(HibernateTransaction.java:203)
                    	at com.isomorphic.hibernate.HibernateDataSource.onSuccess(HibernateDataSource.java:5544)
                    	at com.isomorphic.rpc.RPCManager.onSuccess(RPCManager.java:1577)
                    	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1126)
                    	at com.isomorphic.rpc.RPCManager.send(RPCManager.java:586)
                    	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173)
                    	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138)
                    	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74)
                    	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
                    	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
                    	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
                    	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
                    	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
                    	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
                    	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
                    	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
                    	at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
                    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
                    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
                    	at java.lang.Thread.run(Thread.java:722)
                    I believe it was there before but I could not see it as the stacktrace was polluted with log messages of the error described initially (and the eclipse console log buffer is too small to keep all of them).
                    I've encountered this one quite a number of times when using hibernate and usually got around this by either using transactions or a hibernate session management mechanism, but have no idea how this could be done using a SGWT server side DS.
                    Any pointers here?

                    Thanks
                    fatzopilot

                    Comment


                      #11
                      We've just fixed the issue with serialization of Hibernate proxies and the fix will be in tomorrow's build.

                      As far as the new exception, it looks like Spring thinks it should be involved in the transaction, and it should not. Seems like you should look for a way to just turn it off.

                      Comment


                        #12
                        Hi,

                        I have an existing project using grails 2.0.4 and smartgwt LGPL. I would like to evaluate smartgwt server features like Excel Export and queueing.
                        How can I incorporate smartgwt Pro/Power into my current project?

                        Do I need to copy all lib files from smartgwtee to grails lib directory?

                        Thanks,
                        Felix

                        Comment

                        Working...
                        X