2006 년 3 월 29 일 첫 걸음을 내딛는 것이 도움이된다는 것을 알았습니다.
Word 및 Wireshark를 사용하여 Jackrabbit 기본 저장소에 대해 Microsoft Office 2010 세션을 추적했습니다. 다음 쉘 스크립트 종류는 * nix에서 curl과 libreoffice를 사용하여 동일한 동작을 실행합니다.
Word에서 행동에 DELETE, 업로드, VERSION-CONTROL 문서 WebDAV를 호출이 실행되는 선행을 볼 수 있듯이.
찾아보기 디렉토리는 Internet Explorer 인스턴스의 URL을 엽니 다.
Microsoft Word에서 문서 속성 (PROPFIND)을 검색 한 다음 문서를 열어 (GET) 잠급니다. 또한 유니 코드 문자 세트의 사적 사용 범위 (UTF-8).
Microsoft Word에서 문서를 저장하면 Win32CreationTime, Win32LastModifiedTime 및 Win32LastAccessTime 스탬프를 포함하도록 문서 노드의 속성 (PROPPCH)을 업로드 (PUT)하고 업데이트합니다.
Word에서 문서를 닫으면 UNLOCK을 사용하여 승인 된 잠금이 해제됩니다.
CHECKIN 문서가 수동으로 다시 실행되어 버전 수명주기가 완료됩니다.
버전 트리 보고서는 WebDAV에서도 얻을 수 있습니다.
#!/bin/sh
# Delete document
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X DELETE -v http://localhost:7001/repository/default/test.docx
# Upload document
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PUT -v http://localhost:7001/repository/default/test.docx --data-binary "@test.docx"
# Version-Control document
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X VERSION-CONTROL -v http://localhost:7001/repository/default/test.docx
# Checkout document
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X CHECKOUT -v http://localhost:7001/repository/default/test.docx
# Browse directory
curl -A "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" -X GET -v http://localhost:7001/repository/default/
# Open document in Word
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PROPFIND -v http://localhost:7001/repository/default/test.docx | xmllint --format -
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X GET -v http://localhost:7001/repository/default/test.docx -O
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PROPFIND -v http://localhost:7001/repository/default/test.docx%EE%B3%B0
cat > LOCK_document.xml <<EOF
<?xml version="1.0" encoding="utf-8" ?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope>
<D:exclusive/>
</D:lockscope>
<D:locktype>
<D:write/>
</D:locktype>
<D:owner>
<D:href>WINDOWSDOMAIN\USER</D:href>
</D:owner>
</D:lockinfo>
EOF
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X LOCK -v http://localhost:7001/repository/default/test.docx --data "@LOCK_document.xml" | xmllint --format - | tee LOCK_document.txt
export LOCK_token=$(grep opaquelocktoken LOCK_document.txt | sed 's/^.*opaquelocktoken:/<opaquelocktoken:/' | sed 's/<\/D:href>.*$/>/')
curl -A "Microsoft Office Existence Discovery" -X HEAD -v http://localhost:7001/repository/default/test.docx
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X OPTIONS -v http://localhost:7001/ -H "translate: f"
# Edit document in Word
libreoffice test.docx
# Save document in Word
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X HEAD -v http://localhost:7001/repository/default/test.docx
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PUT -v http://localhost:7001/repository/default/test.docx -H "If: (${LOCK_token})" --data-binary "@test.docx"
cat > PROPPATCH_document.xml <<EOF
<?xml version="1.0" encoding="utf-8" ?>
<D:propertyupdate xmlns:D="DAV:" xmlns:Z="urn:schemas-microsoft-com:">
<D:set>
<D:prop>
<Z:Win32CreationTime>Mon, 09 Mar 2015 15:24:36 GMT</Z:Win32CreationTime>
<Z:Win32LastAccessTime>Mon, 16 Mar 2015 13:22:40 GMT</Z:Win32LastAccessTime>
<Z:Win32LastModifiedTime>Mon, 16 Mar 2015 13:22:40 GMT</Z:Win32LastModifiedTime>
</D:prop>
</D:set>
</D:propertyupdate>
EOF
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PROPPATCH -v http://localhost:7001/repository/default/test.docx -H "If: (${LOCK_token})" --data "@PROPPATCH_document.xml" | xmllint --format -
# Close document in Word
curl -A "Microsoft Office Existence Discovery" -X HEAD -v http://localhost:7001/repository/default/test.docx
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X UNLOCK -v http://localhost:7001/repository/default/test.docx -H "Lock-Token: ${LOCK_token}"
# Checkin document
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X CHECKIN -v http://localhost:7001/repository/default/test.docx
# Version tree report on document
cat > REPORT_version-tree.xml <<EOF
<?xml version="1.0" encoding="utf-8" ?>
<D:version-tree xmlns:D="DAV:">
<D:prop>
<D:version-name/>
</D:prop>
</D:version-tree>
EOF
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X REPORT -v http://localhost:7001/repository/default/test.docx --data "@REPORT_version-tree.xml" | xmllint --format -
Jackrabbit의 자동 버전 기능에는 문제가있어 아직 구현되지 않았습니다.
https://issues.apache.org/jira/browse/JCR-1348
#<!--
# see http://www.webdav.org/specs/rfc3253.html#PROPERTY_auto-version
# <D:auto-version>checkout-checkin</D:auto-version>
# <D:auto-version>checkout-unlocked-checkin</D:auto-version>
# <D:auto-version>checkout</D:auto-version>
# <D:auto-version>locked-checkout</D:auto-version>
#-->
cat > PROPPATCH_auto-version.xml <<EOF
<?xml version="1.0" encoding="utf-8" ?>
<D:propertyupdate xmlns:D="DAV:">
<D:set>
<D:prop>
<D:auto-version>checkout-checkin</D:auto-version>
</D:prop>
</D:set>
</D:propertyupdate>
EOF
curl -A Microsoft-WebDAV-MiniRedir/6.1.7601 -X PROPPATCH -v http://localhost:7001/repository/default/test.docx -H "If: (${LOCK_token})" --data "@PROPPATCH_auto-version.xml" | xmllint --format -
처럼, 어떻게 노드 '체크인'및 '체크 아웃'작업/HTTP 요청을 DAV 번역 할 것인가? (및 'checkpoint'작업도 마찬가지로) –
WebDAV에 대한 자세한 내용은 RFC 3253에서 WebDAV에 대한 Versioning Extensions를 정의하고 있음을 알 수 있습니다. [...] –
JCR 버전 관리 프레임 워크는 'mix : versionable' JCR mixin 노드 유형 ([Jackrabbit Wiki] (http://wiki.apache.org/jackrabbit/mix%3Aversionable))을 중심으로 효과적으로 작동한다는 것을 알고 있습니다. 따라서 노드가 'mix : versionable'유형으로 생성 된 경우 WebDAV API로 캡슐화 될 수있는 기존의 WebDAV'checkin' 및'checkout' 연산이 아마도 그럴 것이라고 예상 할 수 있습니다. 버전 관리가 가능한 노드에서 JCR 체크 인/체크 아웃 작업을 수행합니다. 그것은 내가 생각하기에, 많은 질문에 대답 할 것입니다. [...] –