java.sql.SQLException:连接到数据库时出现系统或内部错误java.io.IOException

java.sql.SQLException:连接到数据库时出现系统或内部错误java.io.IOException,java,jdbc,informix,tomcat8,Java,Jdbc,Informix,Tomcat8,我遇到了一个随机问题,在使用informix执行连接时,会出现以下错误: java.sql.SQLException: System or internal error java.io.IOException at com.informix.util.IfxErrMsg.getSQLException(Unknown Source) at com.informix.jdbc.IfxSqli.handleSocketException(Unknown Source) at com.informix

我遇到了一个随机问题,在使用informix执行连接时,会出现以下错误:

java.sql.SQLException: System or internal error java.io.IOException
at com.informix.util.IfxErrMsg.getSQLException(Unknown Source)
at com.informix.jdbc.IfxSqli.handleSocketException(Unknown Source)
at com.informix.jdbc.IfxSqli.receiveMessage(Unknown `enter code here`Source)
at com.informix.jdbc.IfxSqli.executePrepare(Unknown Source)
at com.informix.jdbc.IfxPreparedStatement.setupExecutePrepare(Unknown Source)
at com.informix.jdbc.IfxPreparedStatement.processSQL(Unknown Source)
at com.informix.jdbc.IfxPreparedStatement.<init>(Unknown Source)
at com.informix.jdbc.IfxSqliConnect.createPreparedStmt(Unknown Source)
at com.informix.jdbc.IfxSqliConnect.prepareStatement(Unknown Source)
at org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.prepareStatement(DelegatingConnection.java:291)
at org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.prepareStatement(DelegatingConnection.java:291)
at br.com.solcast.integrador.dao.sisdia.PedidoVendaDAO.carregar(PedidoVendaDAO.java:169)
at br.com.solcast.integrador.service.sisdia.PedidoVendaService.carregar(PedidoVendaService.java:99)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at br.com.solcast.integrador.security.RestAuthenticationFilter.doFilter(RestAuthenticationFilter.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException
at com.informix.asf.IfxDataInputStream.readFully(Unknown Source)
at com.informix.asf.IfxDataInputStream.readSmallInt(Unknown Source)
... 61 more

实例化新连接并执行prepareStatement后,错误会随机发生。

欢迎使用堆栈溢出。请尽快阅读这两页。如果没有更多的信息,将很难提供更多的帮助,但我认识到,可能很难获得更多的信息。我指的不是额外的61级回溯信息!从表面上看,Informix使用的套接字存在问题(基于
com.Informix.jdbc.IfxSqli.handleSocketException
)。这种随意的不当行为(对每个人)都是令人讨厌的。我不确定java代码如何能在边界之外写,但是它可能是一个解释,如果它是一个C客户端(但它不是)。如果你可以用较小的堆栈来复制这个问题,那么你应该考虑联系IBM/Informix技术支持。如果需要全面实施,可能会更加困难。您可能熟悉MCVE()或SSCCE()的概念,它们有助于在所有技术环境中报告问题/错误。你没有说这个问题有多普遍——只是说它是随机的(所以不完全一致)。这个问题听起来要么与网络有关(断开连接),要么协议行为不正确。您可能希望联系Informix支持以获得更多帮助,可能您的驱动程序对于您正在使用的Informix版本来说太旧(或太新),等等。欢迎使用Stack Overflow。请尽快阅读这两页。如果没有更多的信息,将很难提供更多的帮助,但我认识到,可能很难获得更多的信息。我指的不是额外的61级回溯信息!从表面上看,Informix使用的套接字存在问题(基于
com.Informix.jdbc.IfxSqli.handleSocketException
)。这种随意的不当行为(对每个人)都是令人讨厌的。我不确定java代码如何能在边界之外写,但是它可能是一个解释,如果它是一个C客户端(但它不是)。如果你可以用较小的堆栈来复制这个问题,那么你应该考虑联系IBM/Informix技术支持。如果需要全面实施,可能会更加困难。您可能熟悉MCVE()或SSCCE()的概念,它们有助于在所有技术环境中报告问题/错误。你没有说这个问题有多普遍——只是说它是随机的(所以不完全一致)。这个问题听起来要么与网络有关(断开连接),要么协议行为不正确。您可能希望联系Informix支持以获得更多帮助,可能您的驱动程序对于您正在使用的Informix版本来说太旧(或太新),等等。
public class DAOManager {
    private DataSource src;
    private Connection con;

    public void open() throws SQLException {
        try {
            if(this.con==null || this.con.isClosed())
                this.con = src.getConnection();
        } catch(SQLException e) { throw e; }
    }

    public void close() throws SQLException {
        try { 
            if(this.con!=null && !this.con.isClosed()) {
                this.con.close();
                this.con    = null;
            }
        } catch(SQLException e) { 
            throw e; 
        } finally {
            if (this.con != null) {
                try { this.con.close(); } catch (SQLException e) { ; }
                this.con = null;
            }
        }
    }

    public DAOManager() throws NamingException {
        Context initContext = new InitialContext();            
        Context envContext  = (Context)initContext.lookup("java:/comp/env");
        this.src            = (DataSource)envContext.lookup("jdbc/cortex-sisdia");
    }

    public Object gerarDAO(DAO dao) throws SQLException 
    {
        if (this.con == null || this.con.isClosed())   
            this.open();

        switch (dao) {
        case AGENDAMENTOOFICINA:
            return new AgendamentoOficinaDAO(this.con);

        case ESTOQUE:
            return new EstoqueDAO(this.con);

        case PEDIDOVENDA:
            return new PedidoVendaDAO(this.con);

        case PESSOA:
            return new PessoaDAO(this.con);

        case VEICULO:
            return new AgendamentoOficinaDAO(this.con);

        default:
            return null;
        }
    }

    @Override
    protected void finalize()
    {
        try{
            this.close(); 
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally{ 
            try {
                super.finalize();
            } catch (Throwable e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
        }
    } 
}