配置
应用程序属性
jmix.webdav.applications
设置文档格式和打开此格式的外部应用程序的映射。对于每个外部应用程序,可以在 "extensions"
属性配置一组文件扩展名。
例如,下面的映射使用 Microsoft PowerPoint 打开 PPT 和 PPTX 文件:
"ms-powerpoint":{\
"name":"Microsoft PowerPoint",\
"protocols":{"writable":"ms-powerpoint:ofe%7Cu%7C","read_only":"ms-powerpoint:ofv%7Cu%7C"},\
"extensions":["ppt","pptx"]\
}
默认值:
{"ms-word":{"name":"Microsoft Word","protocols":{"writable":"ms-word:ofe%7Cu%7C",\
"read_only":"ms-word:ofv%7Cu%7C"},"extensions":["docx","doc","rtf"]},\
"ms-excel":{"name":"Microsoft Excel","protocols":{"writable":"ms-excel:ofe%7Cu%7C",\
"read_only":"ms-excel:ofv%7Cu%7C"},"extensions":["xls","xlsx"]},\
"ms-powerpoint":{"name":"Microsoft PowerPoint",\
"protocols":{"writable":"ms-powerpoint:ofe%7Cu%7C","read_only":"ms-powerpoint:ofv%7Cu%7C"},\
"extensions":["ppt","pptx"]}}
LibreOffice 配置示例:
jmix.webdav.applications = {"vnd.libreoffice.command":\
{"name":"LibreOffice","protocols":\
{"writable":"vnd.libreoffice.command:ofe|u|",\
"read_only":"vnd.libreoffice.command:ofv|u|"},\
"extensions":["odt", "ods", "odp", "doc", "docx", "xls", "xlsx", "ppt", "pptx"]}}
jmix.webdav.authentication-method
设置认证类型。
默认值:basic
。
尽管我们不推荐,但是你仍然可以在该属性设置 digest
,避免在服务器配置 HTTPS。此时,别忘了修改 jmix.webdav.url-prefix 属性,以便使用正确的服务协议和端口生成链接。另请注意,所有用户都必须在数据库中单独存储哈希密码。当更改用户的密码时,扩展组件会更新这些密码,因此必须在设置摘要认证后为每个用户执行此操作。
jmix.webdav.auto-generate-unique-resource-uri
如果该属性设置为 false
,且新上传文档生成的 URI 已经分配给另一个文档时,会发生违反唯一性约束错误。
如果该属性设置为 true
,且 URI 已经分配给另一个文档时,会自动生成 {id}.extension
格式的新路径。
默认值:true
。
jmix.webdav.document-versions-cleaning-cron
该属性支持以 cron 表达式修改 WebdavDocumentVersionsCleaningJob 的调度计划。
默认值:0 0 0 1 * ? *
(每月一次)。
jmix.webdav.expired-lock-cleaning-cron
该属性支持以 cron 表达式修改 ExpiredLockCleaningJob 的调度计划。
默认值:0 0 0/2 ? * *
(两小时一次)。
jmix.webdav.use-default-document-versions-cleaner-quartz-configuration
该属性可以禁用创建和计划 WebdavDocumentVersionsCleaningJob 任务的默认配置。
默认值:true
。
jmix.webdav.use-default-expired-lock-cleaner-quartz-configuration
该属性可以禁用创建和计划 ExpiredLockCleaningJob 任务的默认配置。
默认值:true
。
配置 HTTPS
服务器需要使用 HTTPS 对桌面端应用程序进行认证。下面是在开发环境设置 HTTPS 的简要说明。
使用自签名的证书仅适合测试。生产环境的应用程序必须使用由信任机构颁发的 SSL 证书。 |
创建 Keystore 文件
-
使用 JDK 提供的 keytool 工具 生成 Keystore 文件:
keytool -genkey -keyalg RSA -alias localhost -keystore localhost.jks -validity 365 -keysize 2048
会要求你设置 keystore 的密码和名称。记录输入的密码和名称。
-
从 keystore 导出证书:
keytool -export -keystore localhost.jks -storepass <password> -alias localhost -file localhost.cer
使用第一步输入的密码替换
<password>
。 -
在操作系统注册并信任证书。
-
macOS:
-
在 Finder(访达)中双击
localhost.cer
文件。会自动打开 Keychain Access(钥匙串访问) 应用程序。 -
在 Certficates(证书) 标签页找到第一步输入名称下的证书。
-
双击证书,并选择 Trust(信任) → When using this certificate: Always Trust(使用此证书时:始终信任)。
-
-
生成可信证书
某些情况下,例如在最新的 LibreOffice 和 Firefox 版本中打开 WebDAV 文件,可能无法使用自签名证书。信任证书可以从SSL提供商处获得,也可以使用 certbot
生成。在开发阶段,可以发布自己的根证书,并用来对开发服务器的证书进行签名。简单起见,我们建议使用 mkcert
工具生成/维护证书。如果对 HTTPS 警告和限制不在意,可以跳过此部分。
-
从这个仓库安装
mkcert
: https://github.com/FiloSottile/mkcert。可以使用源码构建(需要安装 golang)并将二进制文件复制到/usr/local/bin
或使用其提供的二进制文件。 -
在 path 中有
mkcert
后,可以生成并安装根证书:mkcert -install
-
切换到到 keystore 目录,并为开发服务器创建签名证书:
mkcert -pkcs12 localhost 127.0.0.1 ::1
-
为项目创建带有证书的
.jks
keystore 文件:keytool -importkeystore -srckeystore localhost+2.p12 -srcstoretype pkcs12 -destkeystore localhost.jks
服务配置
本节介绍当从 IDE 运行应用程序或者用可执行 JAR 运行时,如何使用上一节生成的证书。
-
创建
src/main/resources/<base-package>/keystore
目录,并将localhost.jks
复制到该目录。 -
在
application.properties
文件设置下列应用程序属性,用真实值替换<base-package>
和<password>
:# 启用 HTTPS server.ssl.enabled=true # keystore 的格式 server.ssl.key-store-type = JKS # 包含证书的 keystore 路径 server.ssl.key-store = classpath:<base-package>/keystore/localhost.jks # 生成 keystore 的密码 server.ssl.key-store-password = <password> # 证书的映射别名 server.ssl.key-alias = localhost # 服务端口 server.port = 8443
维护作业
WebDAV 扩展组件包含几个维护作业。如需定期执行这些作业,请在项目中 安装 Quartz 扩展组件。
ExpiredLockCleaningJob
删除过期的 锁 对象。这个任务默认每 2 小时运行一次。
如需修改任务调度,请使用 jmix.webdav.expired-lock-cleaning-cron 应用程序属性。
WebdavDocumentVersionsCleaningJob
删除没有文档链接的 WebdavDocumentVersion
实例。默认每月运行一次。
如需修改任务调度,请使用 jmix.webdav.document-versions-cleaning-cron 应用程序属性。