Announcement

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

    ClassCastException on an Android device - casting LinkedMap to DSField

    Hi Isomorphic,

    We are getting an error when clients are trying to hit our application on an Android device. The page consists of a TreeGrid that has a sortField set and a ListGrid with expander components. The version of SmartClient we are using is v8.3p_2013-03-13/Pro Deployment.

    This is a snippet from our Apache Logs showing that the error is from an Android device:

    Code:
    POST /static/isomorphic/IDACall?isc_rpc=1&isc_v=v8.3p_2013-03-13&isc_xhr=1 HTTP/1.1" 200 5307 ... "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; MZ617 4G Build/7.7.1-85_MZ617-27) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30
    Below is the stack trace which only gets thrown when hitting the application through an Android device. The BasicDataSource class is trying to cast a LinkedMap to a DSField. We checked and we are not using a LinkedMap anywhere in our application. Any ideas on why this error is getting thrown and where it is getting the LinkedMap from?

    Code:
    java.lang.ClassCastException: org.apache.commons.collections.map.LinkedMap cannot be cast to com.isomorphic.datasource.DSField
    	at com.isomorphic.datasource.BasicDataSource.getField(BasicDataSource.java:1045) ~[isomorphic-core-rpc-8.3-20130313.jar:na]
    	at com.isomorphic.datasource.DSRequest.decodeUploadedStrings(DSRequest.java:657) ~[isomorphic-core-rpc-8.3-20130313.jar:na]
    	at com.isomorphic.datasource.DSRequest.<init>(DSRequest.java:543) ~[isomorphic-core-rpc-8.3-20130313.jar:na]
    	at com.isomorphic.rpc.RPCManager.parseRequest(RPCManager.java:1994) ~[isomorphic-core-rpc-8.3-20130313.jar:na]
    	at com.isomorphic.rpc.RPCManager.<init>(RPCManager.java:284) ~[isomorphic-core-rpc-8.3-20130313.jar:na]
    	at com.isomorphic.rpc.RPCManager.<init>(RPCManager.java:269) ~[isomorphic-core-rpc-8.3-20130313.jar:na]
    	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:133) ~[isomorphic-core-rpc-8.3-20130313.jar:na]
    	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74) ~[isomorphic-core-rpc-8.3-20130313.jar:na]
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) ~[servlet-api.jar:na]
    	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152) ~[isomorphic-core-rpc-8.3-20130313.jar:na]
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) ~[servlet-api.jar:na]
    ...
    Thanks,
    Mehak
    Last edited by mgreenberg; 6 Aug 2013, 15:51.

    #2
    This doesn't look like it would be specific to any one client - this problem would be created by not deploying isomorphic/system/schema files on your server. They would normally be there if you just followed the default installation instructions.

    If you look into this possibility and need more help, post all the information required by the forums (complete server log for request, and request itself are missing).

    Comment


      #3
      A recursive diff shows no differences between the deployed version of system/schema and that from the SmartClient download:

      Code:
      $ diff -r -u SmartClient_v83p_2013-05-22/smartclientRuntime/isomorphic/system/schema tomcat/webapps/ROOT/static/isomorphic/system/schema
      $
      Here is the access log around the time in question:

      Code:
      127.0.0.1 - - [02/Jul/2013:14:35:38 -0400] "GET /static/isomorphic/system/modules/ISC_DataBinding.js;fingerprint=1C44605575700A55 HTTP/1.1" 200 154959
      127.0.0.1 - - [02/Jul/2013:14:35:38 -0400] "GET / HTTP/1.1" 302 -
      127.0.0.1 - - [02/Jul/2013:14:35:39 -0400] "GET /static/isomorphic/skins/Enterprise/skin_styles.css;fingerprint=20332F1264607D55 HTTP/1.1" 200 17152
      127.0.0.1 - - [02/Jul/2013:14:35:39 -0400] "GET /static/isomorphic/skins/Enterprise/load_skin.js;fingerprint=64666B366E42290E HTTP/1.1" 200 9550
      127.0.0.1 - - [02/Jul/2013:14:35:39 -0400] "GET /static/isomorphic/skins/Enterprise/images/blank.gif HTTP/1.1" 200 43
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/ListGrid/header.png HTTP/1.1" 200 157
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/TreeGrid/opener_opened.png HTTP/1.1" 200 3023
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/TreeGrid/opener_closed.png HTTP/1.1" 200 3048
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/ListGrid/header_Selected.png HTTP/1.1" 200 151
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/Splitbar/vsplit_snap.png HTTP/1.1" 200 148
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/Splitbar/vsplit_bg.png HTTP/1.1" 200 145
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/SectionHeader/header_opened_start.png HTTP/1.1" 200 176
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/SectionHeader/header_opened_stretch.png HTTP/1.1" 200 181
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/SectionHeader/header_opened_end.png HTTP/1.1" 200 176
      127.0.0.1 - - [02/Jul/2013:14:35:40 -0400] "GET /static/isomorphic/skins/Enterprise/images/loadingSmall.gif HTTP/1.1" 200 673
      127.0.0.1 - - [02/Jul/2013:14:35:41 -0400] "GET /static/isomorphic/system/modules/ISC_Core.js;fingerprint=2971553F752F600A HTTP/1.1" 200 207913
      127.0.0.1 - - [02/Jul/2013:14:35:42 -0400] "POST /static/isomorphic/IDACall?isc_rpc=1&isc_v=v8.3p_2013-05-22&isc_xhr=1 HTTP/1.1" 200 4763
      127.0.0.1 - - [02/Jul/2013:14:35:42 -0400] "POST /static/isomorphic/IDACall?isc_rpc=1&isc_v=v8.3p_2013-05-22&isc_xhr=1 HTTP/1.1" 200 9658
      127.0.0.1 - - [02/Jul/2013:14:35:42 -0400] "GET /static/isomorphic/skins/Enterprise/images/ListGrid/sort_descending.png HTTP/1.1" 200 225
      127.0.0.1 - - [02/Jul/2013:14:35:42 -0400] "GET /static/isomorphic/skins/Enterprise/images/ListGrid/header_menu.png HTTP/1.1" 200 2871
      127.0.0.1 - - [02/Jul/2013:14:35:44 -0400] "GET /static/isomorphic/system/modules/ISC_Foundation.js;fingerprint=292E553F2A1A3F0A HTTP/1.1" 200 58714
      127.0.0.1 - - [02/Jul/2013:14:35:44 -0400] "POST /static/isomorphic/IDACall?isc_rpc=1&isc_v=v8.3p_2013-05-22&isc_xhr=1 HTTP/1.1" 200 1082
      And the server log:

      Code:
      2013-07-02 14:35:38,117 INFO  [c.i.d.DSResponse] [AsyncAppender-Dispatcher-Thread-11]: DSResponse: List with 2 items
      2013-07-02 14:35:38,123 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Init
      2013-07-02 14:35:38,123 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework is already initialized
      2013-07-02 14:35:38,127 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Init
      2013-07-02 14:35:38,127 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework is already initialized
      2013-07-02 14:35:38,131 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Init
      2013-07-02 14:35:38,131 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework is already initialized
      2013-07-02 14:35:38,133 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Init
      2013-07-02 14:35:38,133 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework is already initialized
      2013-07-02 14:35:39,747 INFO  [c.i.s.RequestContext] [AsyncAppender-Dispatcher-Thread-11]: URL: '/static/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)': MSIE with Accept-Encoding header, ready for compressed JS
      2013-07-02 14:35:39,750 INFO  [c.i.s.IDACall] [AsyncAppender-Dispatcher-Thread-11]: smartClientIdaCallServlet - Performing 1 operation(s)
      2013-07-02 14:35:40,518 INFO  [c.i.s.RequestContext] [AsyncAppender-Dispatcher-Thread-11]: URL: '/static/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)': MSIE with Accept-Encoding header, ready for compressed JS
      2013-07-02 14:35:40,520 INFO  [c.i.s.IDACall] [AsyncAppender-Dispatcher-Thread-11]: smartClientIdaCallServlet - Performing 1 operation(s)
      2013-07-02 14:35:41,605 INFO  [c.i.d.DSResponse] [AsyncAppender-Dispatcher-Thread-11]: [builtinApplication.OurDS_fetch] DSResponse: List with 75 items
      2013-07-02 14:35:41,626 INFO  [c.i.d.DSResponse] [AsyncAppender-Dispatcher-Thread-11]: [builtinApplication.OurDS_fetch] DSResponse: List with 75 items
      2013-07-02 14:35:42,030 ERROR [c.i.s.IDACall] [AsyncAppender-Dispatcher-Thread-11]: smartClientIdaCallServlet - Error executing operation: OurDS_fetch
      com.isomorphic.js.UnconvertableException: java.lang.ClassCastException
      
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:763) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1261) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1212) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:713) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:649) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:640) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1099) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1261) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1212) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:713) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:649) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.toJS(JSTranslater.java:611) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1324) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.rpc.RPCManager.send(RPCManager.java:586) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) ~[servlet-api.jar:na]
      	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) ~[servlet-api.jar:na]
      	at com.mycompany.common.web.spring.servlet.DelegatingServletProxy.invokeDelegate(DelegatingServletProxy.java:213) ~[mycompany-web-core-6.11.0.0.jar:na]
      	at com.mycompany.common.web.spring.servlet.DelegatingServletProxy.service(DelegatingServletProxy.java:128) ~[mycompany-web-core-6.11.0.0.jar:na]
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) ~[catalina.jar:7.0.27]
      	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:81) ~[struts2-core-2.3.4.jar:2.3.4]
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) ~[catalina.jar:7.0.27]
      	at com.mycompany.common.web.filter.cache.FingerprintFilter.doFilter(FingerprintFilter.java:75) ~[mycompany-web-core-6.11.0.0.jar:na]
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) ~[catalina.jar:7.0.27]
      	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:162) ~[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) ~[catalina.jar:7.0.27]
      	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) ~[tomcat-coyote.jar:7.0.27]
      	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) ~[tomcat-coyote.jar:7.0.27]
      	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) ~[tomcat-coyote.jar:7.0.27]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) ~[na:1.6.0_24]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) ~[na:1.6.0_24]
      	at java.lang.Thread.run(Thread.java:662) [na:1.6.0_24]
      2013-07-02 14:35:42,032 ERROR [c.i.s.IDACall] [AsyncAppender-Dispatcher-Thread-11]: smartClientIdaCallServlet - Error executing operation: OurDS_fetch
      com.isomorphic.js.UnconvertableException: java.lang.ClassCastException: org.apache.commons.collections.map.LinkedMap cannot be cast to com.isomorphic.datasource.DSField
      	at com.isomorphic.datasource.BasicDataSource.getField(BasicDataSource.java:1045)
      	at com.isomorphic.datasource.DataSource.getProperties(DataSource.java:1941)
      	at com.isomorphic.datasource.DataSourceBeanFilter.filter(DataSourceBeanFilter.java:204)
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:751)
      	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1261)
      	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1212)
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:713)
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:649)
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:640)
      	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1099)
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711)
      	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1261)
      	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1212)
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:713)
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:649)
      	at com.isomorphic.js.JSTranslater.toJS(JSTranslater.java:611)
      	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1324)
      	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 com.mycompany.common.web.spring.servlet.DelegatingServletProxy.invokeDelegate(DelegatingServletProxy.java:213)
      	at com.mycompany.common.web.spring.servlet.DelegatingServletProxy.service(DelegatingServletProxy.java:128)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:81)
      	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 com.mycompany.common.web.filter.cache.FingerprintFilter.doFilter(FingerprintFilter.java:75)
      	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.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:162)
      	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:225)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
      	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
      	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:999)
      	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
      	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:662)
      
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:763) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1261) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1212) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:713) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:649) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:640) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertMap(JSTranslater.java:1099) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:711) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertIterator(JSTranslater.java:1261) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convertCollection(JSTranslater.java:1212) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:713) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.convert(JSTranslater.java:649) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.js.JSTranslater.toJS(JSTranslater.java:611) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.rpc.RPCManager.completeResponse(RPCManager.java:1324) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.rpc.RPCManager.send(RPCManager.java:586) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:173) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:138) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) ~[servlet-api.jar:na]
      	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152) ~[isomorphic-core-rpc-8.3-20130522.jar:na]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) ~[servlet-api.jar:na]
      	at com.mycompany.common.web.spring.servlet.DelegatingServletProxy.invokeDelegate(DelegatingServletProxy.java:213) ~[mycompany-web-core-6.11.0.0.jar:na]
      	at com.mycompany.common.web.spring.servlet.DelegatingServletProxy.service(DelegatingServletProxy.java:128) ~[mycompany-web-core-6.11.0.0.jar:na]
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) ~[catalina.jar:7.0.27]
      	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:81) ~[struts2-core-2.3.4.jar:2.3.4]
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) ~[catalina.jar:7.0.27]
      	at com.mycompany.common.web.filter.cache.FingerprintFilter.doFilter(FingerprintFilter.java:75) ~[mycompany-web-core-6.11.0.0.jar:na]
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) ~[catalina.jar:7.0.27]
      	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:162) ~[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) ~[catalina.jar:7.0.27]
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) ~[catalina.jar:7.0.27]
      	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) ~[tomcat-coyote.jar:7.0.27]
      	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) ~[tomcat-coyote.jar:7.0.27]
      	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) ~[tomcat-coyote.jar:7.0.27]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) ~[na:1.6.0_24]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) ~[na:1.6.0_24]
      	at java.lang.Thread.run(Thread.java:662) [na:1.6.0_24]
      2013-07-02 14:35:44,234 INFO  [c.i.s.RequestContext] [AsyncAppender-Dispatcher-Thread-11]: URL: '/static/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)': MSIE with Accept-Encoding header, ready for compressed JS

      Comment


        #4
        This appears to be totally unrelated to the first post of the thread - unrelated exceptions occurring at unrelated times.

        1. Are they meant to be related?

        2. Is there error intermittent?

        3. Does it happen consistently for any one particular type of browser (you originally mentioned Android)?

        This new exception indicates you are providing an object in your DSResponse that can't be serialized by JSTranslater. This could be, for example, because you implemented a JSONFilter or BeanFilter that's crashing, or provided a POJO where a getter is crashing.

        Whichever way it's happening, it seems clear it's happening in your code - your should be able to break on the exception to find out why. We'll also improve the way this error is reported.

        Comment


          #5
          Please post the descriptor (.ds.xml file) for the "OurDS" DataSource

          Comment


            #6
            Originally posted by Isomorphic View Post
            Please post the descriptor (.ds.xml file) for the "OurDS" DataSource
            Actually this is from the same DataSource as our other post. I'll reproduce it here. Just replace "MyPageDS" with "OurDS":

            Code:
            <DataSource ID="MyPageDS" serverConstructor="spring:myPageDataSource"
            	schemaBean="com.mycompany.MyPage" validateRelatedRecords="true">
            	<fields>
            		<field primaryKey="true" name="id" title="ID" type="sequence" />
            		<field name="additionalCriteria1Id" type="integer" />
            		<field name="additionalCriteria2Id" type="integer" />
            		<field name="additionalCriteria3Id" type="integer" />
            		<field name="additionalCriteria4Id" type="integer" />
            		<field name="aTextField" type="text" />
            		<field name="aDateField" type="datetime" />
            		<field name="anotherTextField" type="text" />
            		<field name="aStatusField" type="enum">
            			<valueMap>
            				<value>Unresolved</value>
            				<value>Resolved</value>
            			</valueMap>
            		</field>
            		<field name="mostRecentNote" type="MyPageNotesDS" />
            		<field name="comments" type="any" />
            	</fields>
            
            	<operationBindings>
            		<operationBinding operationType="fetch" operationId="myPageExport">
            			<serverObject bean="myPageDSExportDMI" lookupStyle="spring" />
            			<serverMethod>executeExport</serverMethod>
            		</operationBinding>
            	</operationBindings>
            
            </DataSource>

            Comment


              #7
              Can you answer these questions as well:

              2. Is there error intermittent?

              3. Does it happen consistently for any one particular type of browser (you originally mentioned Android)?

              Comment


                #8
                Originally posted by Isomorphic View Post
                This appears to be totally unrelated to the first post of the thread - unrelated exceptions occurring at unrelated times.

                1. Are they meant to be related?

                2. Is there error intermittent?

                3. Does it happen consistently for any one particular type of browser (you originally mentioned Android)?
                We thought these were related due to "java.lang.ClassCastException: org.apache.commons.collections.map.LinkedMap cannot be cast to com.isomorphic.datasource.DSField" appearing in both stack traces. My apologies that we didn't post the entire log/trace in the first post. Those logs have fallen off the end of our 45 day log rotation, so I can't complete the info in the first post.

                The issue is intermittent, and we haven't been able to reproduce it locally. Sorry again, we should have mentioned this before.

                The first occurrence indicated Android, but since it seems it is not browser specific (unless we're confusing multiple issues as you mentioned).

                Originally posted by Isomorphic View Post
                This new exception indicates you are providing an object in your DSResponse that can't be serialized by JSTranslater. This could be, for example, because you implemented a JSONFilter or BeanFilter that's crashing, or provided a POJO where a getter is crashing.

                Whichever way it's happening, it seems clear it's happening in your code - your should be able to break on the exception to find out why.
                We haven't implemented a JSONFilter or BeanFilter. I'll follow up with a post of the source for these POJOs.

                As mentioned we haven't been able to reproduce this in a development environment. Though if we could I'm not following--the stack traces go from IDACall to JSTranslator with all com.isomorphic in between. Also we don't make any use of org.apache.commons.collections.map.LinkedMap in our code.

                Comment


                  #9
                  OK, at this point, we're down to very few possible causes:

                  1. does your custom DataSource override buildFieldData() or any other internal methods of BasicDataSource (or whichever specific subclass of BasicDataSource you subclassed)?

                  2. if this only seems to happen the first ever time the DataSource is accessed, maybe you are having the Spring interaction issue described here (with solutions)

                  If neither of these ring a bell, we'll need to wait until you have more information.

                  Comment


                    #10
                    Originally posted by Isomorphic View Post
                    This new exception indicates you are providing an object in your DSResponse that can't be serialized by JSTranslater.
                    Does JSTranslator use the data source field mappings to limit the properties of an object that it serializes, or does it attempt to serialize the entire object? There are properties in the POJO in question that aren't mapped.

                    Comment


                      #11
                      It can either get all properties or just some depending on the dropExtraFields flag. See the JavaDoc for DataSource.getProperties() for a full explanation of the behaviors.

                      But this crash doesn't seem to be related to what's on the bean - the internal state of your DataSource seems to have been corrupted, as if parts of initialization were skipped.

                      Actually, another guess - did your custom DataSource subclass just DataSource and not BasicDataSource? That's invalid, and might explain this.

                      Comment


                        #12
                        Originally posted by Isomorphic View Post
                        OK, at this point, we're down to very few possible causes:

                        1. does your custom DataSource override buildFieldData() or any other internal methods of BasicDataSource (or whichever specific subclass of BasicDataSource you subclassed)?
                        We only override the execute*(...) methods. In order to unit test our DataSources outside the confines of SmartClient's static initialization, they're all implemented as POJOs delegated to by the following. (Note this class has a bogus Serializable implementation. We weren't sure if you were serializing DataSources or not. The notNull(pojoDataSource) assertion never tripped, so we never implemented readObject to restore our transient PojoDataSource.)

                        Code:
                        package com.mycompany.common.web.smartclient;
                        
                        import org.springframework.beans.factory.annotation.Required;
                        import org.springframework.util.Assert;
                        
                        import com.isomorphic.datasource.BasicDataSource;
                        import com.isomorphic.datasource.DSRequest;
                        import com.isomorphic.datasource.DSResponse;
                        
                        public class DelegatingBasicDataSource extends BasicDataSource implements PojoDataSource {
                        
                        	private static final long serialVersionUID = -8737159017540502289L;
                        
                        	private transient PojoDataSource pojoDataSource = null;
                        
                        	@Required
                        	public void setPojoDataSource(final PojoDataSource pojoDataSource) {
                        
                        		this.pojoDataSource = pojoDataSource;
                        	}
                        
                        	@Override
                        	public DSResponse executeFetch(final DSRequest dsRequest) {
                        
                        		Assert.notNull(pojoDataSource);
                        
                        		final DSResponse dsResponse = pojoDataSource.executeFetch(dsRequest);
                        		dsResponse.setDataSource(this);
                        		return dsResponse;
                        	}
                        
                        	@Override
                        	public DSResponse executeAdd(final DSRequest dsRequest) {
                        
                        		Assert.notNull(pojoDataSource);
                        
                        		final DSResponse dsResponse = pojoDataSource.executeAdd(dsRequest);
                        		dsResponse.setDataSource(this);
                        		return dsResponse;
                        	}
                        
                        	@Override
                        	public DSResponse executeUpdate(final DSRequest dsRequest) {
                        
                        		Assert.notNull(pojoDataSource);
                        
                        		final DSResponse dsResponse = pojoDataSource.executeUpdate(dsRequest);
                        		dsResponse.setDataSource(this);
                        		return dsResponse;
                        	}
                        
                        	@Override
                        	public DSResponse executeRemove(final DSRequest dsRequest) {
                        
                        		Assert.notNull(pojoDataSource);
                        
                        		final DSResponse dsResponse = pojoDataSource.executeRemove(dsRequest);
                        		dsResponse.setDataSource(this);
                        		return dsResponse;
                        	}
                        
                        	@Override
                        	public DSResponse executeCustom(final DSRequest dsRequest) {
                        
                        		Assert.notNull(pojoDataSource);
                        
                        		final DSResponse dsResponse = pojoDataSource.executeCustom(dsRequest);
                        		dsResponse.setDataSource(this);
                        		return dsResponse;
                        	}
                        }
                        Originally posted by Isomorphic View Post
                        2. if this only seems to happen the first ever time the DataSource is accessed, maybe you are having the Spring interaction issue described here (with solutions)

                        If neither of these ring a bell, we'll need to wait until you have more information.
                        Again for testability we took a different approach to guaranteeing SmartClient initialization order. We use Arquillian and ShrinkWrap to facilitate integration testing of individual components of our webapp. If the component doesn't use SmartClient we didn't want to include it in the ShrinkWrapped WAR for that test. Including and initializing SmartClient is a fair amount of overhead when multiplied out to hundreds of tests. Rather than creating different web.xml files per test WAR, we get more direct configuration reuse by instead using different spring.xml contexts that either import SmartClient or don't. The shared web.xml delegates everything to Spring via org.springframework.web.filter.DelegatingFilterProxy, and our own knock off of it, DelegatingServletProxy. This way we can substitute various filters and servlets with cheap mocks when they're not what's under test.

                        I believe the following guarantees that SmartClient is initialized properly via "depends-on":

                        web.xml:
                        Code:
                        [...]
                        <servlet>
                        	<servlet-name>smartClientIdaCallServlet</servlet-name>
                        	<servlet-class>com.mycompany.common.web.spring.servlet.DelegatingServletProxy</servlet-class>
                        	<init-param>
                        		<param-name>targetServletLifecycle</param-name>
                        		<param-value>true</param-value>
                        	</init-param>
                        </servlet>
                        <servlet-mapping>
                        	<servlet-name>smartClientIdaCallServlet</servlet-name>
                        	<url-pattern>/static/isomorphic/IDACall/*</url-pattern>
                        </servlet-mapping>
                        [...]
                        spring-smartclient.xml:
                        Code:
                        <?xml version="1.0" encoding="UTF-8"?>
                        <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        	xsi:schemaLocation="
                        		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
                        
                        	<bean id="smartClientInitializer" class="com.mycompany.common.web.smartclient.SmartClientInitializer"
                        		init-method="init" />
                        
                        	<bean id="smartClientIdaCallServlet" class="com.isomorphic.servlet.IDACall" depends-on="smartClientInitializer" />
                        
                        	<bean id="myPageDataSource" class="com.mycompany.common.web.smartclient.DelegatingBasicDataSource"
                        		depends-on="smartClientInitializer">
                        		<property name="pojoDataSource" ref="myPageDataSourceDelegate" />
                        	</bean>
                        
                        	<bean id="myPageDataSourceDelegate" class="com.mycompany.components.mypage.ds.MyPagePojoDataSource">
                        	
                        </beans>
                        SmartClientInitializer.java
                        Code:
                        package com.mycompany.common.web.smartclient;
                        
                        import javax.servlet.ServletContext;
                        
                        import org.springframework.web.context.ServletContextAware;
                        
                        import com.isomorphic.base.Init;
                        
                        public class SmartClientInitializer implements ServletContextAware {
                        
                        	private ServletContext servletContext;
                        
                        	@Override
                        	public void setServletContext(final ServletContext servletContext) {
                        
                        		this.servletContext = servletContext;
                        	}
                        
                        	public void init() {
                        
                        		Init.go(servletContext);
                        	}
                        }

                        Comment


                          #13
                          Well, it would certainly be ironic if somewhere in all that test infrastructure there was an intermittent bug.

                          Let us know if you find anything that suggests this is a framework bug.

                          Comment


                            #14
                            Originally posted by Isomorphic View Post
                            2. if this only seems to happen the first ever time the DataSource is accessed, maybe you are having the Spring interaction issue described here (with solutions)
                            I found a case in our logs where this occurred after successful calls to the same DataSource.

                            I do see lots of the following in the logs. Is this normal?

                            Code:
                            2013-07-03 07:23:23,041 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Init
                            2013-07-03 07:23:23,041 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework is already initialized
                            2013-07-03 07:23:23,042 INFO  [c.i.s.RequestContext] [AsyncAppender-Dispatcher-Thread-11]: URL: '/WEB-INF/jsp/layout/main_layout.jsp', User-Agent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)': MSIE with Accept-Encoding header, ready for compressed JS
                            2013-07-03 07:23:23,046 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Init
                            2013-07-03 07:23:23,046 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework is already initialized
                            2013-07-03 07:23:23,049 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Init
                            2013-07-03 07:23:23,049 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework is already initialized
                            2013-07-03 07:23:23,051 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Init
                            2013-07-03 07:23:23,051 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-11]: Isomorphic SmartClient/SmartGWT Framework is already initialized
                            I put a breakpoint in our SmartClientInitializer documented above, and it only seems to be called once during the Spring application context startup. I've added a log statement for it to our next version so I can keep an eye on it.

                            I've also added logging in a static initializer of our DelegatingBasicDataSource.

                            Code:
                            static {
                            	final Logger logger = LoggerFactory.getLogger(DelegatingBasicDataSource.class);
                            	logger.info("Initializing DelegatingBasicDataSource");
                            }
                            It too only seems to be called once on startup, and after Init.go(...):

                            Code:
                            2013-08-12 16:59:11,124 INFO  [c.m.c.w.s.SmartClientInitializer] [pool-2-thread-1]: Initializing SmartClient with servletContext: org.apache.catalina.core.ApplicationContextFacade@71658ade
                            ISC: Configuring log4j from: file:/Users/ibrandt/mc/tomcat/wtpwebapps/mycompany-web/WEB-INF/classes/log4j.isc.config.xml
                            2013-08-12 16:59:18,640 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-14]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Init
                            2013-08-12 16:59:18,640 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-14]: Isomorphic SmartClient/SmartGWT Framework - Initializing
                            2013-08-12 16:59:18,645 INFO  [c.i.b.ConfigLoader] [AsyncAppender-Dispatcher-Thread-14]: Attempting to load framework.properties from CLASSPATH
                            2013-08-12 16:59:18,797 INFO  [c.i.b.ConfigLoader] [AsyncAppender-Dispatcher-Thread-14]: Successfully loaded framework.properties from CLASSPATH at location: file:/Users/ibrandt/mc/tomcat/work/Catalina/localhost/_/loader/framework.properties
                            2013-08-12 16:59:18,797 INFO  [c.i.b.ConfigLoader] [AsyncAppender-Dispatcher-Thread-14]: Attempting to load project.properties from CLASSPATH
                            2013-08-12 16:59:18,798 INFO  [c.i.b.ConfigLoader] [AsyncAppender-Dispatcher-Thread-14]: Unable to locate project.properties in CLASSPATH
                            2013-08-12 16:59:18,801 INFO  [c.i.b.ConfigLoader] [AsyncAppender-Dispatcher-Thread-14]: Successfully loaded isc_interfaces.properties from CLASSPATH at location: file:/Users/ibrandt/mc/tomcat/work/Catalina/localhost/_/loader/isc_interfaces.properties
                            2013-08-12 16:59:18,801 INFO  [c.i.b.ConfigLoader] [AsyncAppender-Dispatcher-Thread-14]: Attempting to load server.properties from CLASSPATH
                            2013-08-12 16:59:18,803 INFO  [c.i.b.ConfigLoader] [AsyncAppender-Dispatcher-Thread-14]: Successfully loaded server.properties from CLASSPATH at location: file:/Users/ibrandt/mc/tomcat/wtpwebapps/mycompany-web/WEB-INF/classes/server.properties
                            2013-08-12 16:59:18,810 INFO  [c.i.l.Logger] [AsyncAppender-Dispatcher-Thread-14]: Logging system started.
                            2013-08-12 16:59:18,810 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-14]: Isomorphic SmartClient/SmartGWT Framework (v8.3p_2013-07-18/Pro Deployment 2013-07-18) - Initialization Complete
                            2013-08-12 16:59:18,811 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-14]: Auto-detected webRoot - using: /Users/ibrandt/mc/tomcat/wtpwebapps/mycompany-web
                            2013-08-12 16:59:18,956 INFO  [o.m.log] [pool-2-thread-1]: Logging to Logger[org.mortbay.log] via org.mortbay.log.Slf4jLog
                            2013-08-12 16:59:18,969 INFO  [o.m.log] [pool-2-thread-1]: jetty-6.1.26
                            2013-08-12 16:59:19,022 INFO  [o.m.log] [pool-2-thread-1]: Started SelectChannelConnector@127.0.0.1:8125
                            2013-08-12 16:59:19,100 INFO  [o.s.j.e.MBeanExporter] [pool-2-thread-1]: Registering beans for JMX exposure on startup
                            2013-08-12 16:59:19,153 INFO  [o.s.c.e.EhCacheManagerFactoryBean] [pool-2-thread-1]: Initializing EhCache CacheManager
                            2013-08-12 16:59:19,539 INFO  [o.s.j.e.MBeanExporter] [pool-2-thread-1]: Located MBean 'Hibernate:name=statistics': registering with JMX server as MBean [Hibernate:name=statistics]
                            2013-08-12 16:59:19,592 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-14]: Isomorphic SmartClient/SmartGWT Framework initialization called from com.isomorphic.base.Base
                            2013-08-12 16:59:19,592 INFO  [c.i.b.ISCInit] [AsyncAppender-Dispatcher-Thread-14]: Isomorphic SmartClient/SmartGWT Framework is already initialized
                            2013-08-12 16:59:19,630 INFO  [c.i.p.PoolManager] [AsyncAppender-Dispatcher-Thread-14]: SmartClient pooling disabled for 'simpleTypes' objects
                            2013-08-12 16:59:19,675 INFO  [c.m.c.w.s.DelegatingBasicDataSource] [pool-2-thread-1]: Initializing DelegatingBasicDataSource

                            Comment


                              #15
                              Originally posted by Isomorphic View Post
                              It can either get all properties or just some depending on the dropExtraFields flag. See the JavaDoc for DataSource.getProperties() for a full explanation of the behaviors.

                              But this crash doesn't seem to be related to what's on the bean - the internal state of your DataSource seems to have been corrupted, as if parts of initialization were skipped.

                              Actually, another guess - did your custom DataSource subclass just DataSource and not BasicDataSource? That's invalid, and might explain this.
                              We probably should be using dropExtraFields then. We'll add this to the next release.

                              We're only extending BasicDataSource as described above.

                              Comment

                              Working...
                              X