我试图在spring引导应用程序中初始化milton,使其具有路径\localhost@8080webdavDavWWWRoot
而不是\localhost@8080DavWWWRoot
我的配置:
@Configuration
open class MiltonBeanConfig {
@Bean
open fun someFilterRegistration(): FilterRegistrationBean<Filter> {
val registration: FilterRegistrationBean<Filter> = FilterRegistrationBean()
registration.filter = getMiltonFilter()
registration.setName("MiltonFilter")
registration.addUrlPatterns("/webdav/*")
registration.addInitParameter("resource.factory.class", "io.milton.http.annotated.AnnotationResourceFactory")
registration.addInitParameter("controllerPackagesToScan", "ru.sms.wdsample.webdav.controller")
registration.addInitParameter("milton.configurator", "ru.sms.wdsample.webdav.configuration.MiltonConfig")
registration.order = 1
return registration
}
open fun getMiltonFilter(): Filter {
return MiltonFilter()
}
}
MiltonConfig
class MiltonConfig() : DefaultMiltonConfigurator() {
override fun build() {
builder.securityManager = NullSecurityManager()
builder.contextPath = "/webdav/"
super.build()
}
}
我可以用调试器看到我得到的根和子,但有错误:
2022-02-03 21:24:10.786 INFO 35736 --- [nio-8080-exec-1] io.milton.http.HttpManager : OPTIONS :: localhost:8080///webdav start
2022-02-03 21:24:22.091 INFO 35736 --- [nio-8080-exec-1] io.milton.http.HttpManager : OPTIONS :: localhost:8080///webdav finished 11305ms, Status:HTTP/1.1 404 Not Found, Length:null
我犯了什么错?
不知道,也许这不是一个好的解决方案,但它对我有用。
class UrlAdapterImpl : UrlAdapter {
override fun getUrl(request: Request): String {
val s = HttpManager.decodeUrl(request.absolutePath)
return if (s.contains("/webdav")) s.replace("/webdav", "") else s
}
}