연결을 연결할 수 없음 연결이 닫힌 후에는 작업이 허용되지 않습니다. Tomcat 7의 오류

Kumar

여기에 연결 문제에 문제가 있습니다.

Tomcat 7에 웹 서비스를 배포했습니다. 웹 서비스에서는 Filter를 사용하고 init ()에서는 연결을 호출하는 메서드를 사용합니다.

public static Connection connection = null;

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

이제 응용 프로그램 전체에서 동일한 연결 개체를 사용하고 있습니다. 따라서 이런 식으로 하나의 연결 만 만들고 SQL 쿼리를 실행합니다. 잘 돌아가고 있습니다. 하지만 서비스 URL에 액세스 할 때; "연결할 수 없습니다. 연결이 닫힌 후 작업이 없습니다"라는 오류 메시지가 표시됩니다. 또한 maxWait = "28800000"을 8 시간으로 설정했습니다. 최대 기간. 내 질문은 전체적으로 열어 두는 방법입니다. 또는 URL에 액세스하면 동일한 오류가 발생하지 않고 자동으로 연결할 수 있습니다. 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

Mysql 연결을 닫을 때 "결과 집합이 닫힌 후 작업이 허용되지 않음"오류

분류에서Dev

오류 : 연결이 닫힌 후 작업이 허용되지 않습니다.

분류에서Dev

MLME와의 연결을 설정할 수 없음 연결 실패 : ret = -1 (작업이 허용되지 않음)

분류에서Dev

FileZilla 오류 : ProFTPD에 연결할 때 "데이터 연결을 설정할 수 없습니다 : ETIMEDOUT-연결 시도 시간이 초과되었습니다."

분류에서Dev

ResultSet Closed 오류 후 작업이 허용되지 않음 Netbeans MySQL 연결

분류에서Dev

도커 빌드 오류 : psql : 서버에 연결할 수 없음 : 연결이 거부되었습니다.

분류에서Dev

Putty에서 VirtualBox의 Centos 7에 연결할 수 없습니다. 치명적인 오류 연결이 거부 됨

분류에서Dev

두 개의 연결 요청이있는 작업입니다. "정의되지 않은 속성을 읽을 수 없음"오류

분류에서Dev

데이터베이스에 연결할 수 없습니다. 네트워크 오류 IOException : 연결 거부 : 연결

분류에서Dev

Windows 7 Embedded에 들어오는 연결이 허용되지 않습니다.

분류에서Dev

FTP 서버에 연결할 수 없음 : 425 데이터 연결을 구축 할 수 없음 : 연결 시간이 초과되었습니다.

분류에서Dev

Cisco Packet Tracer 연결 오류-케이블을 해당 포트에 연결할 수 없습니다.

분류에서Dev

ActiveAdmin 허용되지 않은 매개 변수에는 다음이 많이 있습니다. 연결을 통해

분류에서Dev

Leage of Legends가 "pvp.net에 연결할 수 없음"오류로 인해 시작되지 않습니다.

분류에서Dev

Tomcat 연결 풀 문제-닫힌 연결에서 메서드를 호출 할 수 없음

분류에서Dev

오류없이 hadoop을 시작하지만 서버에 연결할 수 없습니다.

분류에서Dev

PHPMailer : SMTP 오류 : 10051 서버에 연결하지 못했습니다. 연결할 수없는 네트워크에 소켓 작업을 시도했습니다.

분류에서Dev

'db'의 MySQL 서버에 연결할 수 없습니다 ([Errno -2] 이름이 확인되지 않음)

분류에서Dev

오류 : Cassandra 서버에 연결할 수 없습니다. 구성되지 않은 테이블

분류에서Dev

버스 연결을 가져 오지 못했습니다 : 연결할 수 없습니다 : 연결이 거부되었습니다.

분류에서Dev

FXCM 연결 오류-서버에 연결할 수 없습니다.

분류에서Dev

CodeIgniter 오류-제공된 설정을 사용하여 데이터베이스에 연결할 수 없습니다.

분류에서Dev

CodeIgniter 오류-제공된 설정을 사용하여 데이터베이스에 연결할 수 없습니다.

분류에서Dev

무선 라우터 및 설정 페이지에 연결할 수 없음-연결이 거부되었습니다.

분류에서Dev

업데이트 후 무선 연결에 연결할 수 없습니다.

분류에서Dev

tomcat7-서버에 원격으로 연결할 수 없음 (포트 8080 : 연결이 거부 됨)

분류에서Dev

SQL Server 연결 테이블에 대한 액세스를 연결할 수 없음-오류 메시지 로그인

분류에서Dev

연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다. C # 오류

분류에서Dev

Tomcat 7 서버는 디버그 포트에서 수신 중이지만 연결을 허용하지 않습니다.

Related 관련 기사

  1. 1

    Mysql 연결을 닫을 때 "결과 집합이 닫힌 후 작업이 허용되지 않음"오류

  2. 2

    오류 : 연결이 닫힌 후 작업이 허용되지 않습니다.

  3. 3

    MLME와의 연결을 설정할 수 없음 연결 실패 : ret = -1 (작업이 허용되지 않음)

  4. 4

    FileZilla 오류 : ProFTPD에 연결할 때 "데이터 연결을 설정할 수 없습니다 : ETIMEDOUT-연결 시도 시간이 초과되었습니다."

  5. 5

    ResultSet Closed 오류 후 작업이 허용되지 않음 Netbeans MySQL 연결

  6. 6

    도커 빌드 오류 : psql : 서버에 연결할 수 없음 : 연결이 거부되었습니다.

  7. 7

    Putty에서 VirtualBox의 Centos 7에 연결할 수 없습니다. 치명적인 오류 연결이 거부 됨

  8. 8

    두 개의 연결 요청이있는 작업입니다. "정의되지 않은 속성을 읽을 수 없음"오류

  9. 9

    데이터베이스에 연결할 수 없습니다. 네트워크 오류 IOException : 연결 거부 : 연결

  10. 10

    Windows 7 Embedded에 들어오는 연결이 허용되지 않습니다.

  11. 11

    FTP 서버에 연결할 수 없음 : 425 데이터 연결을 구축 할 수 없음 : 연결 시간이 초과되었습니다.

  12. 12

    Cisco Packet Tracer 연결 오류-케이블을 해당 포트에 연결할 수 없습니다.

  13. 13

    ActiveAdmin 허용되지 않은 매개 변수에는 다음이 많이 있습니다. 연결을 통해

  14. 14

    Leage of Legends가 "pvp.net에 연결할 수 없음"오류로 인해 시작되지 않습니다.

  15. 15

    Tomcat 연결 풀 문제-닫힌 연결에서 메서드를 호출 할 수 없음

  16. 16

    오류없이 hadoop을 시작하지만 서버에 연결할 수 없습니다.

  17. 17

    PHPMailer : SMTP 오류 : 10051 서버에 연결하지 못했습니다. 연결할 수없는 네트워크에 소켓 작업을 시도했습니다.

  18. 18

    'db'의 MySQL 서버에 연결할 수 없습니다 ([Errno -2] 이름이 확인되지 않음)

  19. 19

    오류 : Cassandra 서버에 연결할 수 없습니다. 구성되지 않은 테이블

  20. 20

    버스 연결을 가져 오지 못했습니다 : 연결할 수 없습니다 : 연결이 거부되었습니다.

  21. 21

    FXCM 연결 오류-서버에 연결할 수 없습니다.

  22. 22

    CodeIgniter 오류-제공된 설정을 사용하여 데이터베이스에 연결할 수 없습니다.

  23. 23

    CodeIgniter 오류-제공된 설정을 사용하여 데이터베이스에 연결할 수 없습니다.

  24. 24

    무선 라우터 및 설정 페이지에 연결할 수 없음-연결이 거부되었습니다.

  25. 25

    업데이트 후 무선 연결에 연결할 수 없습니다.

  26. 26

    tomcat7-서버에 원격으로 연결할 수 없음 (포트 8080 : 연결이 거부 됨)

  27. 27

    SQL Server 연결 테이블에 대한 액세스를 연결할 수 없음-오류 메시지 로그인

  28. 28

    연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다. C # 오류

  29. 29

    Tomcat 7 서버는 디버그 포트에서 수신 중이지만 연결을 허용하지 않습니다.

뜨겁다태그

보관