Announcement

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

    Upgraded from 5 to 12 SGWT and getting sub-protocol invalid error

    SGWT: 12.0-p20180802 (upgraded from 5.0-p20180227)
    java 8
    informix 12


    We use Informix as our DB.
    Since upgrade we cannot connect at all to the DB. We are getting: "Invalid sub-protocol Invalid sub-protocol: 'informix'".
    We need a solution to this ASAP.

    We are getting this in the log:
    === 09/10/2018 14:49:24,991 - [op-1] ERROR com.isomorphic.base.ISCInit:209 - Can't find marker file for webRoot:<path to ourapp.war>/isomorphic for configured/autodetected webRoot - if you moved the 'isomorphic' directory, please set isomorphicPathRootRelative in server.properties to the new location and restart the servlet engine.



    A few years ago we partnered with you to develop an Informix driver for SGWT.

    thanks,
    Richard

    #2
    Have you looked at the possibility raised by that (self-explanatory) log message? If you're seeing that message, nothing is going to work on the server-side from that point on, let alone the Informix functionality.

    If it's not clear enough, that message is telling you that the entire set of required server-side files (the "isomorphic" directory) is just absent in your deployment, or you moved it somewhere non-standard but didn't set the indicated property.

    Comment


      #3
      We have not moved anything.
      Everything works in SGWT 5.
      We are getting this error after upgrade to SGWT 12.
      Why?
      Is SGWT 12 looking for the isomorphic directory in a new location than in version 5 ?

      Comment


        #4
        Will someone respond to my last question:

        Since everything works in our project using SGWT 5.0, it stands to reason that upgrading to SGWT version 12 should also work, right ?
        At least with respect to the location of the Isomorphic directory.
        We have not move it from it's standard location.

        Please also tell me where is the standard location of Isomorphic directory.

        Many Thanks.
        Last edited by siegersallee; 17 Sep 2018, 10:43.

        Comment


          #5
          The isomorphic directory is in the same location in both versions.

          You may not have *intended* to move it, but obviously, it is not there. Take a look at the installation instructions and make sure you have not skipped steps.

          Comment


            #6
            The issue of the finding the isomorphic directory was resolved.

            Now we are at the crux of the problem:


            We have just upgraded our SGWT from 5 to 12. We were using informix 12.10.FC9E and java 8 with SGWT 5 and all was well..
            Now that we have upgraded to SGWT 12, we are getting this error in our gwt.logs:

            Why is this happening ? If we take out the SGWT 12 libs and put the 5 back in, everything works.

            According to IBM Informix:

            -79757
            Invalid sub-protocol
            The current valid subprotocol supported by Informix is: informix-sqli.


            In out server properties we stipulate
            sql.cbcommon.driver.driverName: informix
            sql.cbcommon.database.type: informix
            sql.cbcommon.interface.type: driverManager
            sql.cbcommon.driver.user: <user>
            sql.cbcommon.driver.password: <password>

            sql.cbcommon.interface.credentialsInURL: false
            sql.cbcommon.driver.serverName: <IP>
            sql.cbcommon.driver.portNumber: 9005
            sql.cbcommon.driver.databaseName: CBON;
            sql.cbcommon.driver: com.informix.jdbc.IfxDriver


            is there property that we can set in this properties above to stipulate the subprotocol ?
            All of this works find in SGWT 5. It is only broken in SGWT 12.
            Have you changed the way you form the connection string from the properties in the server.properties ?




            ERROR com.isomorphic.sql.SQLConnectionManager:213 - [builtinApplication.userPermiss
            ionsDS_fetch] Caught exception while trying to obtain connection to server: cbcommon
            java.sql.SQLException: Invalid sub-protocol Invalid sub-protocol: 'informix'
            at com.informix.util.IfxErrMsg.getLocSQLException(IfxErrMsg.java:493)
            at com.informix.jdbc.IfxDriver.a(IfxDriver.java:558)
            at com.informix.jdbc.IfxDriver.connect(IfxDriver.java:206)
            at java.sql.DriverManager.getConnection(DriverManager.java:664)
            at java.sql.DriverManager.getConnection(DriverManager.java:247)
            at com.isomorphic.sql.SQLDriver.rawConnection(SQLDriver.java:815)
            at com.isomorphic.sql.PoolableSQLConnectionFactory.makeUnpooledObject(PoolableSQLConnectionFactory.java:129)
            at com.isomorphic.sql.PoolableSQLConnectionFactory.makeObject(PoolableSQLConnectionFactory.java:138)
            at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148)
            at com.isomorphic.pool.ISCObjectPool.borrowObject(ISCObjectPool.java:112)
            at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:102)
            at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:76)
            at com.isomorphic.sql.SQLConnectionManager.getConnection(SQLConnectionManager.java:177)
            at com.isomorphic.sql.SQLDriver.getTransformedResults(SQLDriver.java:953)
            at com.isomorphic.sql.SQLDriver.executeQuery(SQLDriver.java:1394)
            at com.isomorphic.sql.SQLDataSource.executeNativeQuery(SQLDataSource.java:585)
            at com.isomorphic.sql.SQLDataSource.executeNativeQuery(SQLDataSource.java:579)
            at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1772)
            at com.isomorphic.sql.SQLDataSource.processRequest(SQLDataSource.java:439)
            at com.isomorphic.sql.SQLDataSource.executeFetch(SQLDataSource.java:384)
            at com.isomorphic.datasource.DataSource.execute(DataSource.java:2384)
            at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:646)
            at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:547)
            at com.isomorphic.application.AppBase.execute(AppBase.java:490)
            at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2835)
            at eti.server.dmi.DMIBase.processDSRequest(DMIBase.java:90)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at com.isomorphic.base.Reflection._invokeMethod(Reflection.java:580)
            at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:895)
            at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:434)
            at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
            at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2831)
            at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:230)
            at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:187)
            at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:152)
            at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:119)
            at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
            at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:176)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
            at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
            at eti.server.servlet.filter.TriadFilter.doFilter(TriadFilter.java:100)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
            at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
            at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
            at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
            at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
            at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
            at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
            at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
            at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:68)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
            at org.eclipse.jetty.server.Server.handle(Server.java:370)
            at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
            at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
            at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
            at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
            at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
            at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
            at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
            at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
            at java.lang.Thread.run(Thread.java:748)



            Comment


              #7
              To give you a bit more information. We use RazorSQL to connect to the DB for checking data etc.
              it uses a connection string of the form: jdbc:informix-sqli://<ip>:<port>/<dbname>.
              Notice in the connection string the sub-protocol is stipulated: sqli.

              I assume you have to use the same connection string form.
              in SGWT 5 the server.properties we have listed below for the DB worked fine.

              sql.cbcommon.driver.driverName: informix
              sql.cbcommon.database.type: informix
              sql.cbcommon.interface.type: driverManager
              sql.cbcommon.driver.user: <user>
              sql.cbcommon.driver.password: <password>

              sql.cbcommon.interface.credentialsInURL: false
              sql.cbcommon.driver.serverName: <IP>
              sql.cbcommon.driver.portNumber: 9005
              sql.cbcommon.driver.databaseName: <dbName>
              sql.cbcommon.driver: com.informix.jdbc.IfxDriver


              Have you introduced a new property that we need to set in the server.properties for the DB connection ?
              Last edited by siegersallee; 19 Sep 2018, 08:35.

              Comment


                #8
                We're looking into it

                Comment


                  #9
                  It looks like previously the SmartClient Informix driver was using an internal API to override the driver name, but this API has been removed. At the point of removing that API, the driver name was moved to the default config file (framework.properties), but that wouldn't have an effect for you because your config specifies an explicit driverName. Things should resolve themselves if you change this line to reference "informix-sqli" rather than "informix", or simply delete the line:
                  Code:
                  sql.cbcommon.driver.driverName: informix

                  Comment


                    #10
                    Thank-you for your help...that seems to have resolved the issue. :)

                    Comment

                    Working...
                    X