无法连接连接关闭连接后,无法进行任何操作。Tomcat 7中的错误

库玛

在连接问题上,我遇到了问题。

我在Tomcat 7中部署了一个Web服务。在Web服务中,我正在使用Filter,在init()方法中,我正在调用连接。

public static Connection connection = null;

    @Override
        public void init(FilterConfig config) throws ServletException {
        connection = ConnectionFactoryJndi.getConnection(); 
        }

现在,我在整个应用程序中都使用相同的连接对象。因此,以这种方式,我仅创建一个连接并执行sql查询。运行正常。但是当我访问服务URL时;它给出错误“无法连接;连接关闭后无任何操作”,我还将maxWait =“ 28800000”设置为8个小时;最大持续时间。我的问题是如何始终保持打开状态。或当我访问该网址时,它应该不会出现相同的错误并且能够自动连接。我正在使用MySql。

这是server.xml conf-

  <Resource
        name="jdbc/xxxxx"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="200"
        maxIdle="30"
        maxWait="28800000"
        username="xxx"
        password="xxxxx"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost/xxxxx" />

在ConnectionFactoryJndi类中-

公共连接createConnection(){

Connection connection = null;
try {
try {
envContext = new InitialContext();
} catch (NamingException e) {
}
Context initContext = null;
try {
initContext = (Context) envContext.lookup("java:/comp/env");
} catch (NamingException e) {
}
DataSource datasource = null;
try {
datasource = (DataSource) initContext.lookup("jdbc/xxxxxx");
} catch (NamingException e) {
System.out.println("Name not found");
}
connection = datasource.getConnection();
} catch (SQLException e) {
System.out.println("ERROR: Unable to Connect to Database.");
}
return connection;
}

请提出最佳做法。

谢谢。

服务器日志-

Dec 05, 2013 10:09:44 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [ServletAdaptor] in context with path [/IntellixWebApi] threw exception
java.lang.NullPointerException
    at com.astroved.intellix.jdbc.dao.ClientDAO.getClientDetails(ClientDAO.java:44)
    at com.astroved.intellix.security.ValidateClient.isValidClient(ValidateClient.java:14)
    at com.astroved.intellix.security.SecurityFilter.doFilter(SecurityFilter.java:110)
    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:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    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:744)

但是,它是由于连接失败而引起的。则无法执行查询。

ClientDao类-

    ResultSet rs = null;
    try {
        try {
            statement = connection.createStatement();
        } catch (SQLException e) {
            log.error("Error in Client DAO class (unable to connect connection) "
                    + e.getMessage());
            // e.printStackTrace();
        }
        try {
            rs = statement.executeQuery(query);
        } catch (SQLException e) {
            log.error("Error in Client DAO class (unable to Execute Query ) "
                    + e.getMessage());
            // e.printStackTrace();
        }

        try {
            while (rs.next()) {
                client = new ClientTO();
                client.setClientId(rs.getInt("clientid"));
                client.setClientUrl(rs.getString("clienturl"));
                client.setClientSecurityKey(rs
                        .getString("clientserviceapiKey"));

                clientList.add(client);
            }
        } catch (SQLException e) {
            log.error("Error in Client DAO class ( Error in iteration ) "
                    + e.getMessage());
            // e.printStackTrace();
        }
    } finally {
        DbUtil.close(rs);
        DbUtil.close(statement);
        //DbUtil.close(connection);
    }

专用连接连接= SecurityFilter.connection;

Server.xml-

 <Resource
        name="jdbc/xxxxx"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="200"
        maxIdle="30"
        maxWait="28800000"
        username="xxxxxx"
        password="xxxxxx"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost/xxxxxx" />


  </GlobalNamingResources>

客户DAO类-

ResultSet rs = null;
try {
    try {
        connection = ConnectionFactoryJndi.getConnection();
        statement = connection.createStatement();
        rs = statement.executeQuery(query);
    } catch (SQLException e) {
        log.error("Error in Client DnaReportDao class (unable to Execute Query ) "+ e.getMessage());

    }

    try {
            if(rs != null) {
                while (rs.next()) {
                    codeValue = new DnaReportTO();
                    codeValue.setNature(rs.getString("Nature"));
                    codeValue.setInterestedSubject(rs.getString("InterestdSubject"));
                    codeValue.setTipToParent(rs.getString("TipsToParent"));
                }
            }

    } catch (SQLException e) {
        log.error("Error in DnaReportDao class ( Error in iteration ) "
                + e.getMessage());
    }
} finally {
    DbUtil.close(rs);
    DbUtil.close(statement);
}

Currenr服务器日志

Dec 05, 2013 12:22:22 PM com.sun.jersey.spi.container.ContainerResponse logException
SEVERE: Mapped exception to response: 500 (Internal Server Error)
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class com.astroved.intellix.resource.DnaReportResource, and Java type class com.astroved.intellix.resource.DnaReportResource, and MIME media type application/xml was not found
    at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:285)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1448)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.astroved.intellix.security.SecurityFilter.doFilter(SecurityFilter.java:112)
    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:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    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:744)
Caused by: com.sun.jersey.api.MessageException: A message body writer for Java class com.astroved.intellix.resource.DnaReportResource, and Java type class com.astroved.intellix.resource.DnaReportResource, and MIME media type application/xml was not found
    ... 27 more

ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
ERROR: Unable to Connect to Database.
纳兹古尔

从您在此处给出的错误看来,该连接已被应用程序关闭。该错误no operation after connection closed实际上可能意味着您的应用程序正在关闭它。没有日志,将很难诊断是什么导致了问题。


使用连接池的正确方法是每次需要时都借用连接。切勿在您自己的类中将对连接的引用存储为单例或静态字段。这是因为池可能会在一段时间后回收连接,并且您将得到一个有效的连接对象,该对象已关闭。这也可能是您遇到问题的原因。正确的方法如下:

ResultSet rs = null;
try {
    try {
        connection = ConnectionFactoryJndi.getConnection(); //always do this everytime you need a conenction.
        statement = connection.createStatement();
    } catch (SQLException e) {
        log.error("Error in Client DAO class (unable to connect connection) "
                + e.getMessage());
        // e.printStackTrace();
    }
    try {
        if(statement != null){
            rs = statement.executeQuery(query);
        }else{
            //log error and return or throw exception
        }
    } catch (SQLException e) {
        log.error("Error in Client DAO class (unable to Execute Query ) "
                + e.getMessage());
        // e.printStackTrace();
    }

    try {
        if(rs != null){
            while (rs.next()) {
                client = new ClientTO();
                client.setClientId(rs.getInt("clientid"));
                client.setClientUrl(rs.getString("clienturl"));
                client.setClientSecurityKey(rs
                        .getString("clientserviceapiKey"));

                clientList.add(client);
            }
        }else{
            //log error and return or throw exception
        }
    } catch (SQLException e) {
        log.error("Error in Client DAO class ( Error in iteration ) "
                + e.getMessage());
        // e.printStackTrace();
    }
} finally {
    //close rs
    //close statement
    //never close a conenction
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误:连接关闭后不允许进行任何操作

来自分类Dev

连接关闭错误

来自分类Dev

连接关闭错误

来自分类Dev

Mysql连接关闭时出现错误“ ResultSet关闭后不允许操作”

来自分类Dev

virtualbox Windows 7 VM无法通过桥接连接启动

来自分类Dev

HttpClient 中的意外连接关闭

来自分类Dev

错误0无法在Wamp Windows 7中连接到主机

来自分类Dev

ResultSet错误关闭后不允许进行操作Netbeans MySQL连接

来自分类Dev

在WebSocket ++中关闭连接后出现错误

来自分类Dev

连接关闭后,复制数据库中的权限被拒绝

来自分类Dev

JDBC,servlet和奇怪的“连接关闭后不允许进行任何操作”

来自分类Dev

无法连接到Tomcat中的Java Websocket

来自分类Dev

无法连接到部署在Tomcat中的ServerEndpoint

来自分类Dev

SMTP错误:无法连接

来自分类Dev

Java-连接关闭后无法使用ResultSet

来自分类Dev

IntelliJ IDEA:SSH连接错误“无法达成结算”,而在Filezilla中可以进行相同的连接

来自分类Dev

空中继字符导致连接关闭和 Chrome 在浏览器中记录 CORS 错误

来自分类Dev

错误:无法在R Shiny中打开连接

来自分类Dev

当我在一个函数中声明多个连接时,如何确保连接关闭?

来自分类Dev

连接关闭后不允许进行任何操作。驱动程序隐式关闭了连接。C3P0

来自分类Dev

来宾操作系统无法连接到vmware中的本地站点,但无法连接到Internet

来自分类Dev

cassandra连接错误:无法连接到任何服务器

来自分类Dev

升级到RHEL7后smbclient无法连接

来自分类Dev

tomcat7-无法远程连接到服务器(端口8080:连接被拒绝)

来自分类Dev

无法从传输连接中读取数据:C#中的远程主机强行关闭了现有连接

来自分类Dev

PleskDBException错误无法连接mysql

来自分类Dev

错误:ShinyApp无法打开连接

来自分类Dev

MongoDB安装后错误,无法连接到服务器

来自分类Dev

在 tomcat 中关闭浏览器以进行 websocket 连接刷新时,tomcat 控制台中抛出错误

Related 相关文章

  1. 1

    错误:连接关闭后不允许进行任何操作

  2. 2

    连接关闭错误

  3. 3

    连接关闭错误

  4. 4

    Mysql连接关闭时出现错误“ ResultSet关闭后不允许操作”

  5. 5

    virtualbox Windows 7 VM无法通过桥接连接启动

  6. 6

    HttpClient 中的意外连接关闭

  7. 7

    错误0无法在Wamp Windows 7中连接到主机

  8. 8

    ResultSet错误关闭后不允许进行操作Netbeans MySQL连接

  9. 9

    在WebSocket ++中关闭连接后出现错误

  10. 10

    连接关闭后,复制数据库中的权限被拒绝

  11. 11

    JDBC,servlet和奇怪的“连接关闭后不允许进行任何操作”

  12. 12

    无法连接到Tomcat中的Java Websocket

  13. 13

    无法连接到部署在Tomcat中的ServerEndpoint

  14. 14

    SMTP错误:无法连接

  15. 15

    Java-连接关闭后无法使用ResultSet

  16. 16

    IntelliJ IDEA:SSH连接错误“无法达成结算”,而在Filezilla中可以进行相同的连接

  17. 17

    空中继字符导致连接关闭和 Chrome 在浏览器中记录 CORS 错误

  18. 18

    错误:无法在R Shiny中打开连接

  19. 19

    当我在一个函数中声明多个连接时,如何确保连接关闭?

  20. 20

    连接关闭后不允许进行任何操作。驱动程序隐式关闭了连接。C3P0

  21. 21

    来宾操作系统无法连接到vmware中的本地站点,但无法连接到Internet

  22. 22

    cassandra连接错误:无法连接到任何服务器

  23. 23

    升级到RHEL7后smbclient无法连接

  24. 24

    tomcat7-无法远程连接到服务器(端口8080:连接被拒绝)

  25. 25

    无法从传输连接中读取数据:C#中的远程主机强行关闭了现有连接

  26. 26

    PleskDBException错误无法连接mysql

  27. 27

    错误:ShinyApp无法打开连接

  28. 28

    MongoDB安装后错误,无法连接到服务器

  29. 29

    在 tomcat 中关闭浏览器以进行 websocket 连接刷新时,tomcat 控制台中抛出错误

热门标签

归档