Announcement

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

    DataSource is not Loading in Smartclient12.1

    Hi,

    I am getting the below error in Smartclient 12.1 - isomorphic_core_rpc.jar and not getting in Smartclient 12.0 - isomorphic_core_rpc.jar.

    Is there any settings we have to include to run in 12.1?

    ERROR LoadDSTag - Exception while attempting to process a loadDS tag.
    java.lang.StackOverflowError
    at sun.misc.URLClassPath.access$100(URLClassPath.java:65)
    at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:2181)

    at com.isomorphic.taglib.LoadDSTag.doStartTag(LoadDSTag.java:62)

    #2
    Please indicate your full version, and also show a much greater chunk of the stack.

    Also, indicate what operation was happening when this happened - looks like maybe loading a DataSource, if so, share the DataSource definition.

    Comment


      #3
      SmartClient Version: v12.1p_2020-08-05/PowerEdition Deployment (built 2020-08-05)

      I am hitting the jsp page which load all the inc and respective datasource. It seems something is missing in iscTabLig.xml or server.properties (I have mentioned our server.properties below).

      I have downloaded Smartclient 12.0 a month back and it was working perfectly, recently we bought an license and it is breaking.


      server.properties

      webRoot: __AUTODETECT__

      # if you've moved the isomorphic directory from its default location in webRoot,
      # set the root-relative path to it here
      #
      # For example, if in your deployment the 'isomorphic' dir is in /foo/bar, then set
      # then you'll need to set this to foo/bar/isomorphic
      isomorphicPathRootRelative: isomorphic

      # -------------- LOADING APP AND DATASOURCE DEFINITIONS --------------------

      # Where the system looks for DataSource definition files ([dataSourceId].ds.xml or
      # [dataSourceID].ds.js). It's useful to put all your DataSources in one
      # directory since DataSources are frequently shared between applications.
      # "project.datasources" is also where the DataSource Importer tool looks
      # for available DataSources.
      project.datasources: $webRoot/shared/ds, $webRoot/examples/shared/ds ,$webRoot/smartclient/datasource ,$webRoot/smartclient/datasource/aap ,$webRoot/smartclient/datasource/invoice, $webRoot/smartclient/datasource/party , $webRoot/smartclient/datasource/staticdata,$webRoot/smartclient/datasource/excalibur, $webRoot/smartclient/datasource/administration, $webRoot/smartclient/datasource/srcmatching
      project.project: $webRoot/shared/ui
      project.ui: $webRoot/shared/ui
      project.apps: $webRoot/shared/app, $webRoot/smartclient/datasource/

      EXCEPTION :-

      == 2020-08-11 15:10:34,038 [ng)'] ERROR LoadDSTag - Exception while attempting to process a loadDS tag.
      java.lang.StackOverflowError
      at sun.misc.URLClassPath.access$100(URLClassPath.java:65)
      at sun.misc.URLClassPath$1.next(URLClassPath.java:266)
      at sun.misc.URLClassPath$1.hasMoreElements(URLClassPath.java:277)
      at java.net.URLClassLoader$3$1.run(URLClassLoader.java:601)
      at java.net.URLClassLoader$3$1.run(URLClassLoader.java:599)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader$3.next(URLClassLoader.java:598)
      at java.net.URLClassLoader$3.hasMoreElements(URLClassLoader.java:623)
      at sun.misc.CompoundEnumeration.next(CompoundEnumeration.java:45)
      at sun.misc.CompoundEnumeration.hasMoreElements(CompoundEnumeration.java:54)
      at com.oracle.classloader.search.SearchSystemLoader.addResources(SearchSystemLoader.java:79)
      at com.oracle.classloader.search.SearchSequence.addResources(SearchSequence.java:117)
      at com.oracle.classloader.PolicyClassLoader$2.run(PolicyClassLoader.java:481)
      at com.oracle.classloader.PolicyClassLoader$2.run(PolicyClassLoader.java:474)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.oracle.classloader.PolicyClassLoader.getResources(PolicyClassLoader.java:474)
      at weblogic.utils.classloaders.GenericClassLoader.getParentResources(GenericClassLoader.java:773)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:882)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:738)
      at weblogic.utils.classloaders.GenericClassLoader.getParentResources(GenericClassLoader.java:773)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:851)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:738)
      at weblogic.utils.classloaders.GenericClassLoader.getParentResources(GenericClassLoader.java:773)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:851)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:738)
      at weblogic.utils.classloaders.GenericClassLoader.getParentResources(GenericClassLoader.java:773)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:851)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:738)
      at weblogic.utils.classloaders.GenericClassLoader.getParentResources(GenericClassLoader.java:773)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:851)
      at weblogic.utils.classloaders.GenericClassLoader.getResources(GenericClassLoader.java:738)
      at weblogic.utils.classloaders.ChangeAwareClassLoader.getResources(ChangeAwareClassLoader.java:208)
      at java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:348)
      at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:393)
      at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474)
      at javax.xml.parsers.FactoryFinder$1.run(FactoryFinder.java:293)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:289)
      at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:267)
      at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:120)
      at com.isomorphic.xml.XML.parseXML(XML.java:175)
      at com.isomorphic.xml.XML.parseXML(XML.java:152)
      at com.isomorphic.xml.XML.toDSRecords(XML.java:498)
      at com.isomorphic.xml.XML$RecordsFromXMLCache.loadObjectFromFile(XML.java:664)
      at com.isomorphic.store.ProcessedFileCache.getObjectFromFile(ProcessedFileCache.java:147)
      at com.isomorphic.xml.XML.loadCacheableDSRecords(XML.java:676)
      at com.isomorphic.store.DataStructCache.loadInstance(DataStructCache.java:187)
      at com.isomorphic.datasource.DataSource.loadDS(DataSource.java:538)
      at com.isomorphic.datasource.DataSource.forName(DataSource.java:513)
      at com.isomorphic.datasource.PoolableDataSourceFactory.makeUnpooledObject(PoolableDataSourceFactory.java:125)
      at com.isomorphic.datasource.PoolableDataSourceFactory.makeObject(PoolableDataSourceFactory.java:149)
      at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
      at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:85)
      at com.isomorphic.datasource.DataSourceManager.getDataSource(DataSourceManager.java:195)
      at com.isomorphic.datasource.ValidationContext.getType(ValidationContext.java:412)
      at com.isomorphic.datasource.ValidationContext.getType(ValidationContext.java:390)
      at com.isomorphic.datasource.BasicDataSource.findDataSource(BasicDataSource.java:3140)
      at com.isomorphic.datasource.BasicDataSource.getType(BasicDataSource.java:3060)
      at com.isomorphic.datasource.BasicDataSource.logAttributeNotDeclaredMessage(BasicDataSource.java:2363)
      at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:2041)
      at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:1604)
      at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:1588)
      at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:1549)
      at com.isomorphic.datasource.DataSource.create(DataSource.java:2255)
      at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2552)
      at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2444)
      at com.isomorphic.datasource.BasicDataSource.elementAsRecord(BasicDataSource.java:2181)
      at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:1604)
      at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:1563)
      at com.isomorphic.datasource.DataSource.recordsFromXML(DataSource.java:2164)
      at com.isomorphic.xml.XML.toDSRecords(XML.java:512)
      at com.isomorphic.xml.XML.toDSRecords(XML.java:498)
      at com.isomorphic.xml.XML$RecordsFromXMLCache.loadObjectFromFile(XML.java:664)
      at com.isomorphic.store.ProcessedFileCache.getObjectFromFile(ProcessedFileCache.java:147)
      at com.isomorphic.xml.XML.loadCacheableDSRecords(XML.java:676)
      at com.isomorphic.store.DataStructCache.loadInstance(DataStructCache.java:187)
      at com.isomorphic.datasource.DataSource.loadDS(DataSource.java:538)
      at com.isomorphic.datasource.DataSource.forName(DataSource.java:513)



      at com.isomorphic.taglib.LoadDSTag.doStartTag(LoadDSTag.java:62)
      at jsp_servlet._smartclient._jsp.__tabscreen._jsp__tag4(__tabscreen.java:2098)
      at jsp_servlet._smartclient._jsp.__tabscreen._jspService(__tabscreen.java:680)
      ... 42 more
      === 2020-08-11 15:10:34,270 [ng)'] INFO JSSyntaxScannerFilter - /examinWeb/smartclient/jsp/TabScreen.jsp: scanning <script> tags in html output
      === 2020-08-11 15:10:34,708 [ng)'] INFO RequestContext - URL: '/examinWeb/smartclient/js/common/sourceMapping_XML.js', User-Agent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36': Safari with Accept-Encoding header
      Last edited by rameshprakash; 12 Aug 2020, 20:58.

      Comment


        #4
        So you are running one jar from one version and the rest from another??

        That wouldn’t be expected to work, with any software.

        Please follow the documented installation procedure.

        Comment


          #5
          I mean that my application is working as expected in Smartclient 12.0 power edition and it is not working in Smartclient 12.1 power edition. Major block is "DataSource is not loading, getting above error."

          Comment


            #6
            Still waiting for you to share the DataSource definition.

            Also indicate if there is any problem loading this DataSource if all you do is add your DataSource to the standard SDK and try to load it, with no other changes of any kind.

            Comment


              #7
              We are including ds.xml in .inc file

              Ex :

              in JSP - <%@ include file="../inc/common.inc" %>

              inside in common.inc

              <isomorphic:loadDS name="dropDownDD"/>
              <isomorphic:loadDS name="productDD"/>
              <isomorphic:loadDS name="productSubTypeDD"/>

              Above is our datasource definition, similarly I have almost 300 datasource.

              I will try loading all the datasource in Smartclient 12.1 SDK.

              Please let me know if there any major impact on loading the datasource on Smartclient 12.1 Power Edition. Do we need to add any attribute in server.properties or iscTabLib.

              Comment


                #8
                Do you want any other information? We have a production release waiting for your reply. Please help me out.

                Comment


                  #9
                  Still no DataSource definition from you - this is the third time we’ve asked. Also we are still waiting for you tell us if you can reproduce this in the standard SDK - we’re not bottleneck here!

                  Just for completeness - no we have not created any kind of new requirement for DataSource loading. The system remains backwards compatible as always.

                  Comment


                    #10
                    1) dropDownDD.ds.xml

                    <DataSource
                    ID="dropDownDD"
                    serverConstructor="com.cs.examin.gui.smartclient.datasource.DropDownDataSource"
                    mappedBeanClass="com.cs.examin.dataobject.common.NamedValue"
                    dropExtraFields="true"
                    >
                    <fields>
                    <field name="name" />
                    <field name="value" />

                    </fields>
                    </DataSource>

                    2) productDD.ds.xml

                    <DataSource
                    ID="productDD"
                    serverConstructor="com.cs.examin.gui.smartclient.datasource.ProductDDDataSource"
                    mappedBeanClass="com.cs.examin.dataobject.ref.ProductType"
                    dropExtraFields="true"
                    >
                    <fields>
                    <field name="productTypeIntrnlId" type="sequence" length="25" required="true" primaryKey="true"/>
                    <field name="productTypeCode" type="select" title="Product Type" length="25" required="true" />
                    </fields>
                    </DataSource>

                    3) productDDSubType.ds.xml

                    <DataSource
                    ID="productSubTypeDD"
                    serverConstructor="com.cs.examin.gui.smartclient.datasource.ProductSubTypeDDDataSource"
                    mappedBeanClass="com.cs.examin.dataobject.ref.ProductType"
                    dropExtraFields="true"
                    >
                    <fields>
                    <field name="productTypeIntrnlId" type="sequence" length="25" required="true" primaryKey="true"/>
                    <field name="productTypeCode" type="select" title="Product Type" length="25" required="true" />
                    <field name="productSubTypeCode" type="select" title="Product Sub Type" length="25" required="true" />
                    </fields>
                    </DataSource>



                    Similarly I am loading around 300 datasources, If i invoke only 2 to 3 datasource then it is loading and screen is coming up without any issue. When I load multiple datasource (more than 5 datasources in.jsp together), stuck and getting above exception.

                    I am unable to reproduce in standard SDK.

                    Please let me know if you need any other information.

                    Comment


                      #11
                      That doesn't make much sense - loading more DataSources at once does not increase the required stack depth. Things to do:

                      1. tell us what platform you are running on (OS and version)

                      2. can you reproduce on any other machines?

                      3. can you reproduce on a different platform?

                      4. are you running JRebel? We have one report of someone running JRebel on MacOS and getting a similar bogus StackOverflow, due to bugs in JRebel

                      5. stack size can be increased on the Java command line via eg -Xss1560m

                      6. try to see if it's merely the amount of DataSources loaded at once, or if it's specific DataSources that create the problem, by trying to load random subsets of the DataSources and seeing if the error occurs

                      Comment


                        #12
                        I know loading more data sources at once does not increase the required stack but this is what happening. If I use Smartclient 12.0 power edition in same instance it is working perfectly without any issue. The problem is only with Smartclient 12.1 power edition.

                        I am using Weblogic application server (Version 12.2.1.3) and Java 1.8

                        1. CentOS release 6.6 (Final)
                        2. Yes I am able to reproduce in Windows 10 as well, running weblogic server as a standalone application and tried, getting the same error.
                        3. I tried in Linux and Windows platform, it is failing.
                        4. I am not using JRebel and I am using MyEclipse in Windows machine only.
                        5. I tried increasing stack and heap size, it does not help.

                        It is not something like specific datasource, I dont see any problem in specific datasource definition but randomly I picked 2 datasources it is loading and working fine, If i add one more datasource then it is failing.

                        Note : My application is up and running in Smartclient 12.0 power edition in the same Linux and Windows server with the same configuration. The only change i am doing, pointing to Smartclient 12.1 isomorphic package and JARS it is failing. If i revert to Smartclient to 12.0 power edition isomorphic and JARS, it is working very perfectly. We suspect isomorphic_core_rpc.jar. Again the same question, please let me know Do I have to add any additional attribute in server.properties.

                        Comment


                          #13
                          SmartClient 12.1 is backwards compatible with prior versions and thousands of developers have upgraded without any issue. If you continue to believe that there is a magic server.properties flag that must be set to solve your problem, you will continue to waste your time and ours looking in the wrong direction.

                          If this is a real issue with our software, and you can make it reproducible then we can solve it immediately - typically overnight. But we can't do that if we can't reproduce it.

                          So, as first steps, we would suggest:

                          1. make very very very sure JRebel is not involved. We have exactly one complaint of this problem with 12.1, and it was because of a bug in JRebel. Make sure that there is not some kind of "standard configuration" that all of your developer machines have, where JRebel is involved

                          2. if it's not JRebel, it could be a similar Java debugging tool. Remove everything that is not just the standard JDK, and if you can, try other JDKs (if you are using Oracle, switch to OpenJDK, or vice versa)

                          3. if it's not an environment issue, given the massive number of people using 12.1 without issue, it must be something special about your particular DataSources. Isolate which sets of DataSources cause the issue (it may be a combination of a few) and try to isolate from there; again, as soon as you can make it reproducible for us, we can solve it immediately.

                          Comment


                            #14
                            Just to make it clear: we would love to solve this issue for you. Make it possible for us to solve it, and we will.

                            Comment


                              #15
                              Please feel free to reach me if any questions. I am still trying to identify where could be an issue.

                              Comment

                              Working...
                              X