2014-02-27 7 views
0

을 사용하고 있습니다. 클라이언트와 서버 노드간에 파일 동기화를 위해 SymmetricDS을 사용하고 있습니다. 파일 동기화 대상 경로를 가져 오려고합니다. 각 클라이언트 노드마다 다른 데이터베이스 또는 파일. SymmetricDS 파일 동기화에서 데이터베이스 bean 쉘 스크립트에서 가져 와서 대상 기본 dir 경로를 동적으로 설정하십시오.

나는 그것에 대해 연구하고 우리가 여기 http://www.symmetricds.org/doc/3.5/html/configuration.html#filesync-beanshell

나는 각 노드의 targetRelativeDir 경로를 참조하십시오 before_copy_script 내부 또는 after_copy_script 등 targetRelativeDir targetBaseDir, targetFileName 같은 매개 변수를 변경하는 쉘 스크립트를 사용할 수 있다는 것을 알 내 데이터베이스 테이블 중 하나, 나는 그것을 가져 오기 및

나에게 이러한 목표를 달성 할 수있는 방향을 제시하십시오으로 Beanshell 사용하여 매개 변수 targetRelativeDir로 설정해야합니다.

답변

1

BSH는 다음과 유사합니다.

String nodeId = engine.getNodeService().findIdentityNodeId(); 
targetRelativeDir = engine.getSqlTemplate().queryForString(
    "select targetRelativeDir from myTable where target_node=?", new Object[] {nodeId}); 

정상적으로 작동한다고 가정하지만 테스트하지 않았습니다.

+0

감사합니다. Austin. bsh를 사용하여 기본 dir을 동적으로 만들 수 있는지, 즉 클라이언트 노드의 기본 dir이 다른 클라이언트 노드의 기본 dir과 다를 지 여부를 알고 싶습니다. –

+0

가능합니다. 이것이 변수가 BSH에 노출 된 이유입니다. –

+0

BSH에 표시되는 변수는 다음과 같습니다. - targetBaseDir, targetFileName, targetRelativeDir, targetRelativeDir, processFile, sourceFileName, sourceFilePath, batchDir, engine, sourceNodeId, log. 그러나 새로운 요구 사항은 저장소 노드에서 회사 노드로 파일을 동기화 할 때 각 저장소 노드에 대한 원본 기본 디렉터리 (file_trigger 테이블의 base_dir 필드로 표시)를 변경하는 것입니다. –