2016-09-13 3 views
0

두 응용 프로그램에서 두 응용 프로그램의 데이터 소스 (파일 기반 hsqldb로 지정)를 사용하고 그 중 하나에서 항목을 편집합니다 (commit 또는 checkpoint을 sql 명령으로 사용하더라도 상관 없음). 다른 응용 프로그램을 다시 시작할 때까지 다른 응용 프로그램이이 변경을 인식하지 못합니다.. 나는 apache-tomcat-8.0.26/conf/context.xml 파일 내에서hsqldb - 응용 프로그램 간 동기화 없음

  • 아파치 - 톰캣-8.0.26
  • org.hsqldb.hsqldb 2.3.3

을 사용하고

나는의 jdbc/xyz라는 이름의 자원을 정의한 javax.sql.DataSource을 내 파일 기반 hsqldb (url : jdbc:hsqldb:file:/myfolder/mydatabase;shutdown=true;hsqldb.lock_file=false)에 입력하십시오.

tomcat 서버에 배포 된 하나의 응용 프로그램에서만이 데이터 소스를 사용하고 편집해도 아무런 문제가 없습니다.

이 이상한 행동에 대한 이유가 무엇인지 아이디어가 있습니까? 미리 감사드립니다.

+0

현재'shutdown = true' 매개 변수가 문제가 될 것으로 의심됩니다 ... –

답변

1

단일 java 프로세스 만 jdbc : hsqldb : file 데이터베이스에 액세스 할 수 있습니다. HSQLDB 서버를 시작해야합니다. Tomcat을 실행하는 프로세스에서 서버를 시작할 수 있습니다. 그런 다음 jdbc : hsqldb : hsql : protocol을 사용하여이 서버에 연결할 수 있습니다.

+0

다른 java 프로세스에서 병렬로 동기화되지만 동기화되지 않은 상태에서'jdbc : hsqldb : file' 데이터베이스에 액세스 할 수 있습니다. * updates *, * inserts *, * deletes *, * alters *는 hsqldb-log 파일에 기록되며 문제가 발생하지 않으면'hsqldb.full_log_replay = true'를 사용하여 다음에 다시 시작한 후에 모든 변경 사항을 적용 할 수 있습니다. 확실하게 보증되지 않으며 어떠한 희생을 치르더라도 피해야합니다. –

+0

NO. 잠금 파일은 병렬 액세스를 허용하지 않습니다. – fredt

+0

원본 게시물에서'hsqldb.lock_file = false'을 사용하면 안됩니다. –