JavaFX와 카우치베이스 모바일은 풍부한 사용자 인터페이스와 빠른 데이터 액세스를 갖춘 데스크톱 클래스 애플리케이션을 만드는 데 훌륭한 조합입니다. 이 튜토리얼에서는 다음과 같은 핵심 개념을 배웁니다:
- TodoLite 샘플을 사용하여 복제, 보안 및 배포에 대해 알아보기
- 카우치베이스 모바일을 종속성으로 사용하여 새 JavaFX 프로젝트를 시작하는 방법
이 글에서는 Android용 TodoLite에 대해서는 다루지 않지만 두 애플리케이션을 나란히 실행하고 동기화 게이트웨이를 통해 문서와 첨부파일을 복제할 수 있습니다:
TodoLite JavaFX의 소스 코드는 다음에서 찾을 수 있습니다. github.
TodoLite JavaFX
작업 속도를 높이기 위해 다음을 사용하여 일부 소스 코드를 복제합니다:
1 2 |
git 복제 git@github.com:카우치베이스자습서/todolite-javafx.git cd todolite-javafx |
IntelliJ에서 이 폴더를 열고 실행 버튼을 클릭합니다. 새 창이 열립니다(물론 새 창에는 데이터가 들어 있지 않을 것입니다 :D):
계속해서 새 목록과 작업을 만듭니다. 이 글을 작성하는 시점에 TodoLite의 JavaFX 버전은 모든 기능을 구현하지 않습니다. 지금은 이름이 wayne이고 비밀번호가 pass인 사용자로 로그인되어 있습니다. 따라서 TodoLite Android 버전을 실행하는 경우 해당 자격 증명으로 로그인하거나 가입 페이지에서 새 사용자를 만들어 다른 사용자와 목록을 공유할 수 있습니다. 두 애플리케이션 모두 다음 주소에서 실행 중인 동기화 게이트웨이 인스턴스에 동기화됩니다. http://9cec7a6e-jamiltz.node.tutum.io:4984.
데이터 모델
TodoLite에는 다음과 같은 데이터 모델이 있습니다. 문서의 크기가 작게 유지되고 다른 문서를 참조할 수 있는 방식에 주목하세요. _id 필드(외래 키라고 생각하면 됩니다.):
배포
TodoLite의 백엔드는 동기화 게이트웨이와 사용자가 가입할 수 있는 앱 서버로 구성되어 있습니다. 다시 한 번 말씀드리지만, 이 글을 작성하는 시점에서 로그인 및 가입 화면은 TodoLite의 JavaFX 버전에 대해 구현되지 않았습니다. 자세한 내용은 토돌라이트 개발 리포지토리를 사용하여 두 서버를 로컬에서 실행할 수 있습니다.
새로운 JavaFX + Couchbase Mobile 애플리케이션을 만드는 방법
IntelliJ IDEA를 열고 새 프로젝트 만들기 메뉴를 클릭합니다. 왼쪽 창에서 JavaFX 애플리케이션 템플릿을 클릭하고 프로젝트 SDK를 1.8로 설정합니다. 애플리케이션의 이름을 원하는 대로 지정하고 완료를 클릭하면 새로 만든 프로젝트가 새 창에 열립니다. 코드 작성을 시작하기 전에 변경해야 할 몇 가지 구성 설정이 있습니다. 프로젝트에서 구성 편집... 메뉴를 클릭하면 새 창이 열립니다. 메뉴에서 단일 인스턴스만 해당 상자를 선택하면 실행 버튼을 클릭할 때마다 IDE가 애플리케이션의 새 인스턴스를 시작하지 않습니다.
이제 프로젝트에 Couchbase Lite를 종속 요소로 추가하는 것으로 주의를 돌려보겠습니다. 선택 파일\프로젝트 구조... 을 클릭하면 상단 메뉴 표시줄에서 새 창이 열리고 모듈 탭에서 Maven의 새 라이브러리를 추가합니다:
팝업 창에 검색 필드가 나타나면 다음과 같이 입력합니다. com.couchbase.lite:couchbase-lite-java:1.1.0 를 클릭하고 확인. 그러면 라이브러리가 다운로드되어 프로젝트에 추가됩니다. 다음으로 애플리케이션을 실행하는 플랫폼(Windows, Mac...)의 네이티브 라이브러리가 포함된 JAR 파일을 추가합니다. OS X 사용자의 경우 이 JAR 파일 라는 새 디렉토리에 추가합니다. 라이브러리 를 프로젝트에 추가하세요. 프로젝트의 모듈 창에서 이 JAR 파일을 추가하고 추가 > JAR 또는 디렉터리... 메뉴로 이동합니다:
클릭 확인 를 클릭하고 애플리케이션을 실행합니다. 다음과 같은 메시지가 표시된 빈 창이 나타납니다. 헬로 월드 를 클릭합니다:
새 데이터베이스를 열고 문서를 저장합니다.
새 프로젝트에서 Main.java 라는 메서드를 새로 만들고 시작 카우치베이스
를 다음과 같이 설정합니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
비공개 void 시작 카우치베이스() { 자바 컨텍스트 컨텍스트 = new 자바 컨텍스트(); 관리자 관리자 = null; 시도 { 관리자 = new 관리자(컨텍스트, 관리자.기본_옵션); } catch (IOException e) { e.프린트스택트레이스(); } 데이터베이스 데이터베이스 = null; 시도 { 데이터베이스 = 관리자.getDatabase("myapp"); } catch (카우치베이스 라이트 예외 e) { e.프린트스택트레이스(); } 지도<문자열, 개체> 속성 = new 해시맵<문자열, 개체>(); 속성.put("세션", "카우치베이스 모바일"); 속성.put("conference", "JavaOne"); 문서 문서 = 데이터베이스.createDocument(); 시도 { 문서.putProperties(속성); } catch (카우치베이스 라이트 예외 e) { e.프린트스택트레이스(); } } |
여기서는 myapp이라는 새 데이터베이스를 열고 세션 및 회의 필드가 있는 새 문서를 유지 관리합니다. 다양한 API에 대한 자세한 내용은 문서 가이드 를 참조하거나 TodoLite-JavaFX 샘플 앱.
전화로 시작 카우치베이스
메서드의 시작
방법의 Main.java
동기화 게이트웨이
복제를 시작하는 가장 빠른 방법은 최신 버전의 동기화 게이트웨이를 다운로드하는 것입니다:
http://www.couchbase.com/nosql-databases/downloads#Couchbase_Mobile
그리고 동기화 게이트웨이를 시작할 때 제공된 구성 템플릿 중 하나를 명령줄 인수로 사용하세요:
1 |
$ ~/다운로드/카우치베이스-동기화-게이트웨이/bin/동기화 게이트웨이 기본-바다코끼리-버킷.json |
지정된 구성 파일에는 다음이 포함됩니다:
1 2 3 4 5 6 7 8 9 |
{ "log": ["*"], "데이터베이스": { "db": { "서버": "월러스:", "users": { "GUEST": { "disabled": false, "admin_channels": ["*"] } } } } } |
여기서는 다음과 같은 데이터베이스를 만들고 있습니다. db 를 클릭하고 게스트 즉, 인증되지 않은 요청을 허용하고 처리해야 합니다.
이제 끝났습니다! 이제 컴퓨터에서 다음 주소로 연결할 수 있는 동기화 게이트웨이 데이터베이스가 실행 중입니다. http://localhost:4984/db/.
동기화 추가
JavaFX 애플리케이션으로 돌아가서 새 시작복제
메서드를 사용합니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public void 시작복제() { URL remoteURL = null; 시도 { remoteURL = new URL(원격 데이터베이스); } catch (MalformedURLException e) { e.프린트스택트레이스(); } 복제 pull = 데이터베이스.createPullReplication(remoteURL); 복제 push = 데이터베이스.createPushReplication(remoteURL); pull.setContinuous(true); push.setContinuous(true); pull.시작(); push.시작(); } |
전화로 시작복제
아래의 시작 카우치베이스
메서드를 실행하고 애플리케이션을 다시 시작합니다. 이제 동기화 게이트웨이 관리자 UI에 이전에 만든 문서가 표시되어야 합니다(http://localhost:4985/_admin/).
다음 단계로 이동
축하합니다! 복제를 사용하여 첫 번째 JavaFX + Couchbase Mobile 애플리케이션을 빌드했습니다. 이제 다음 개념을 배울 준비가 되었습니다:
- 그리고 동기화 기능 를 사용하여 액세스 규칙을 정의합니다.
- 카우치베이스 라이트 뷰 를 사용하여 사용자 지정 쿼리를 작성합니다.
아래 댓글이나 포럼에서 여러분의 의견과 결과를 공유하거나 궁금한 점이 있으면 언제든지 질문해 주세요. 곧 연락드리겠습니다!