Windows Server 2008 R2에서 실행되는 Apache Tomcat 7.0.54에서 실행되는 JSF2.0 웹 서버가 있습니다. 우리는이 컴퓨터에서 실행중인 SQL 서버와 인벤토리 소프트웨어를 호스팅하는 SQL 서버를 가지고 있습니다. 우리 웹 페이지의 한 부분은 PartNumbers가 추가되었는지 확인하는 것입니다. 이 연결 풀은 SQL 서버와 통신 할 때 가장 좋은 방법이라고 읽은 후에 인벤토리 소프트웨어에 대한 유효성 검사를 위해 사용했습니다.연결 풀이 닫히는 이유는 무엇입니까?
연결 풀의 상태를 확인할 수있는 방법을 원했기 때문에 2 개의 유효한 올바른 부품 번호를 확인하는 ViewScoped 백업 빈을 사용하여 테스트 페이지를 만들었습니다. 이번 주에 두 번째로 이번 주에 "Connection is closed"라는 오류 메시지가 나타납니다. 저는 회의장 수영장을 처음 사용하고 있으며 이에 관한 정보를 찾을 수없는 것 같습니다. 우리가 제대로 설정하지 않은 것에 대해 당황 스럽습니다. 이제 아파치 서버를 리셋하고 백업하고 실행 중입니다. 그래서 .. 연결 풀을 생성하기 위해 앱의 META-INF/context.xml에 코드를 추가했습니다.
<Resource type="javax.sql.DataSource"
name="jdbc/FOODB"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://Foobar\Inventory;databaseName=FooInventory;user=johnDoe;password=astrongpassword;"
/>
ConnectionPool을 사용해야하는 기본 개념은 SqlAccessCommand라는 인터페이스가 있다는 것입니다. 그것은 다소 어댑터 패턴입니다. 내 테스트 페이지에서 오류 메시지를 표시 할 수 있도록 RunUnsafe 메서드를 사용합니다. 그래서 RunUnsafe 메소드가 있습니다.
내가 알기로는 사용 후 연결을 닫아야하는 리소스를 사용해보십시오. try/catch/finally와 거의 같지만, 그냥 청소기 (IMO). 그래서 내 연결이 열려있을 때 이것은 잘 작동합니다. 지금까지 2x 이제는 서버를 다시 시작해야했습니다. (내가 다른 방법으로 연결을 다시 여는 방법을 모르기 때문에) 무엇이 누락 되었습니까? 퍼즐의 더 많은 부분이 필요한 경우 나에게 의견을 남기고 내가 할 수있는 것을 게시 할 것입니다. 고맙습니다.
편집
는 로그 파일에보고 오늘 아침
com.microsoft.sqlserver.jdbc.SQLServerException 발생이 예외가 있었다 : 피어 연결 재설정 : 소켓 쓰기 오류
의견에 따르면 지금까지는 타임 아웃으로 간주되었습니다. 이 오류 메시지가 여전히 그 방향을 가리 킵니까? 피어에 의해 연결 재설정 :
비활성 상태가 된 후 연결 시간이 초과되었을 수 있습니다. –
@ElliottFrisch는 연결을 끊지 않는 경우가 아닙니까? 그렇다면 자원으로 시도하는 것이 무엇을위한 것이 아닌가? –
풀을 사용할 때 연결이 '닫히지 않습니다'(d). 그들은 수영장으로 돌아 간다. 결국 (연결을 충분히 사용하지 않을 경우) 데이터베이스는 연결이 잘못되었다고 간주하고 닫습니다. 솔루션에 대한 풀 구성 옵션을 조사해야합니다. –