6 Replies Latest reply on Jun 7, 2013 10:44 AM by shawkins

    Teiid client on jboss EAP 6.1.0.Final error

    julian8628

      Hi

      I'm using teiid XA datasouce in jboss EAP 6.1.0 with JPA/Hibernate

      When I query data, Teiid throws Exception as following:

       

       

      11:10:57,637 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (MSC service thread 1-3) SQL Error: 20013, SQLState: 50000
      11:10:57,637 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (MSC service thread 1-3) TEIID20013 java.net.SocketException: Socket is closed
      

       

       

      here is the stacktrace:

       

       

      org.jboss.weld.exceptions.WeldException: WELD-000049 Unable to invoke [method] @PostConstruct @Transactional public com.redhat.tools.twoface.controller.CacheInitializer.involk() on com.redhat.tools.twoface.controller.CacheInitializer@2abe6cdf

          at org.jboss.weld.bean.AbstractClassBean.defaultPostConstruct(AbstractClassBean.java:404)

          at org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.postConstruct(ManagedBean.java:178)

          at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:298)

          at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:101)

          at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:90)

          at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79)

          at com.redhat.tools.twoface.controller.CacheInitializer$Proxy$_$$_WeldClientProxy.toString(CacheInitializer$Proxy$_$$_WeldClientProxy.java)

          at com.redhat.tools.twoface.system.StartupBeanExtension.afterDeploymentValidation(StartupBeanExtension.java:70)

          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

          at java.lang.reflect.Method.invoke(Method.java:601)

          at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:267)

          at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52)

          at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:137)

          at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:263)

          at org.jboss.weld.introspector.jlr.WeldMethodImpl.invokeOnInstance(WeldMethodImpl.java:170)

          at org.jboss.weld.introspector.ForwardingWeldMethod.invokeOnInstance(ForwardingWeldMethod.java:51)

          at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:154)

          at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:245)

          at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:233)

          at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:213)

          at org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:75)

          at org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:46)

          at org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:31)

          at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:382)

          at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:64)

          at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)

          at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)

          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

          at java.lang.Thread.run(Thread.java:722)

      Caused by: java.lang.reflect.InvocationTargetException

          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

          at java.lang.reflect.Method.invoke(Method.java:601)

          at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:267)

          at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52)

          at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:137)

          at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:263)

          at org.jboss.weld.introspector.jlr.WeldMethodImpl.invoke(WeldMethodImpl.java:174)

          at org.jboss.weld.bean.AbstractClassBean.defaultPostConstruct(AbstractClassBean.java:402)

          ... 31 more

      Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not extract ResultSet

          at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)

          at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)

          at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:273)

          at org.jboss.as.jpa.container.TypedQueryNonTxInvocationDetacher.getResultList(TypedQueryNonTxInvocationDetacher.java:58)

          at com.redhat.tools.twoface.data.RTUserDataService.getAllRT4SUsers(RTUserDataService.java:55)

          at com.redhat.tools.twoface.data.RTUserDataService.initUserCache(RTUserDataService.java:59)

          at com.redhat.tools.twoface.data.RTUserDataService$Proxy$_$$_WeldClientProxy.initUserCache(RTUserDataService$Proxy$_$$_WeldClientProxy.java)

          at com.redhat.tools.twoface.controller.CacheInitializer.involk(CacheInitializer.java:84)

          ... 41 more

      Caused by: org.hibernate.exception.GenericJDBCException: could not extract ResultSet

          at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)

          at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)

          at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)

          at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61)

          at org.hibernate.loader.Loader.getResultSet(Loader.java:2031)

          at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1832)

          at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1811)

          at org.hibernate.loader.Loader.doQuery(Loader.java:899)

          at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)

          at org.hibernate.loader.Loader.doList(Loader.java:2516)

          at org.hibernate.loader.Loader.doList(Loader.java:2502)

          at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2332)

          at org.hibernate.loader.Loader.list(Loader.java:2327)

          at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)

          at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)

          at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)

          at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1268)

          at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)

          at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:264)

          ... 46 more

      Caused by: org.teiid.jdbc.TeiidSQLException: TEIID20013 java.net.SocketException: Socket is closed

          at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)

          at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)

          at org.teiid.jdbc.StatementImpl.execute(StatementImpl.java:636)

          at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:510)

          at org.teiid.jdbc.PreparedStatementImpl.executeQuery(PreparedStatementImpl.java:258)

          at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:462)

          at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)

          ... 61 more

      Caused by: org.teiid.core.TeiidComponentException: TEIID20013 java.net.SocketException: Socket is closed

          at org.teiid.client.util.ExceptionUtil.convertException(ExceptionUtil.java:59)

          at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler.invoke(SocketServerInstanceImpl.java:374)

          at org.teiid.net.socket.SocketServerConnection$1.invoke(SocketServerConnection.java:240)

          at com.sun.proxy.$Proxy50.executeRequest(Unknown Source)

          at org.teiid.jdbc.StatementImpl.execute(StatementImpl.java:634)

          ... 65 more

      Caused by: org.teiid.net.socket.SingleInstanceCommunicationException: TEIID20013 java.net.SocketException: Socket is closed

          at org.teiid.net.socket.SocketServerInstanceImpl.send(SocketServerInstanceImpl.java:177)

          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

          at java.lang.reflect.Method.invoke(Method.java:601)

          at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:102)

          at com.sun.proxy.$Proxy47.send(Unknown Source)

          at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler.invoke(SocketServerInstanceImpl.java:362)

          ... 68 more

      Caused by: java.util.concurrent.ExecutionException: java.net.SocketException: Socket is closed

          at org.teiid.client.util.ResultsFuture.convertResult(ResultsFuture.java:100)

          at org.teiid.client.util.ResultsFuture.get(ResultsFuture.java:95)

          at org.teiid.net.socket.SocketServerInstanceImpl.send(SocketServerInstanceImpl.java:174)

          ... 75 more

      Caused by: java.net.SocketException: Socket is closed

          at sun.security.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1467)

          at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1488)

          at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:70)

          at java.io.DataOutputStream.write(DataOutputStream.java:107)

          at org.teiid.core.util.MultiArrayOutputStream.writeTo(MultiArrayOutputStream.java:94)

          at org.teiid.netty.handler.codec.serialization.ObjectEncoderOutputStream.writeObjectOverride(ObjectEncoderOutputStream.java:70)

          at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:342)

          at org.teiid.net.socket.OioOjbectChannelFactory$OioObjectChannel.write(OioOjbectChannelFactory.java:124)

          at org.teiid.net.socket.SocketServerInstanceImpl.send(SocketServerInstanceImpl.java:173)

          ... 75 more

       

          at org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:48)

          at org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:31)

          at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:382)

          at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:64)

          at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]

          at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]

          ... 3 more

       

      Teiid client 8.2.0.Final and 8.4.0.CR1 is all the same, but in Jboss EAP 6.0.1 the code and configuration worked fine.

      Can you help me check the problem out?

      Thanks

        • 1. Re: Teiid client on jboss EAP 6.1.0.Final error
          rareddy

          Yuming,

           

          Looks like a serialization issue, are you reading any objects that are not serializable? If your hibernate and Teiid are same JVM then try using "LocalConnection" for Teiid data source that you supplied to Hibernate, that will avoid any in VM serialization.

           

          You stack shows as you are using weld to access hibernate beans of the data in Teiid? And Teiid is failing to get the data. The I suggest issue direct JDBC query through a SQL client like SquirreL to get closer to the issue.

           

          Ramesh..

          • 2. Re: Teiid client on jboss EAP 6.1.0.Final error
            shawkins

            It's not entirely clear what is happending since this is just the client side exception.  Do you have a corresponding server side exception?  As Ramesh is suggesting in many cases socket connections can get corrupted by non-serializable data.  In some of those circumstances using a local non-socket connection will workaround the issue.

             

            Steve

            • 3. Re: Teiid client on jboss EAP 6.1.0.Final error
              julian8628

              Hi, Ramesh

              Thanks for your answer.

              The teiid Server is on another server and I can't get the detail info of that. Maybe it's associated with the version or configurations of server side? I'm not sure..

              I has adjusted all objects Serializable, but the exceptions still occured.

               

              Because our project fully use JPA2 for ORM, so JDBC should be the last choice to resolve this issue.

               

              BTW, as the ST, we use weld container for DI, and load Entities from teiid , then store or update them into caches for further use.

               

              Yuming Zhu

              • 4. Re: Teiid client on jboss EAP 6.1.0.Final error
                julian8628

                Thanks, Steve

                The teiid server is on another server, and I can't get its logs or configurations.

                 

                 

                Yuming

                • 5. Re: Teiid client on jboss EAP 6.1.0.Final error
                  rareddy

                  Yuming,

                   

                  I am not asking to switch your usecase to use JDBC, I asking to test using JDBC to figure out the issue by removing the extra layers. Turn DEBUG log on the server, and capture any server side exception and post here for any meaningful suggestions.

                   

                  Ramesh..

                  • 6. Re: Teiid client on jboss EAP 6.1.0.Final error
                    shawkins

                    > I has adjusted all objects Serializable, but the exceptions still occured.

                     

                    That may not be suffient as they must be fully transitively Serializable.  Also that is only the likely cause and has yet to be confirmed, and without access to the server logs you will have a hard time resolving this as not enough information is exposed to the client.  https://issues.jboss.org/browse/TEIID-2534 may help you resolve this when you can use 8.4 Final client/server sometime next week.

                     

                    Steve