Rol*_*olf 17 java maven jersey-2.0 spring-boot
该应用程序使用JDK 8,Spring Boot和Spring Boot Jersey启动程序,并打包为WAR(尽管它通过Spring Boot Maven插件在本地运行).
我想要做的是将我生成的文档(在构建时)生成为欢迎页面.
我尝试了几种方法:
application.properties 正确初始化参数描述这里metadata-complete=false web.xml以便将生成的HTML文档列为欢迎文件.这些都没有成功.
我想避免为了提供静态文件而启用Spring MVC或创建Jersey资源.
任何的想法?
这是Jersey配置类(我没有尝试添加ServletProperties.FILTER_STATIC_CONTENT_REGEX那里):
@ApplicationPath("/")
@ExposedApplication
@Component
public class ResourceConfiguration extends ResourceConfig {
public ResourceConfiguration() {
packages("xxx.api");
packages("xxx.config");
property(ServerProperties.BV_DISABLE_VALIDATE_ON_EXECUTABLE_OVERRIDE_CHECK, true);
property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);
}
}
Run Code Online (Sandbox Code Playgroud)
这里是春天启动应用程序类(我尝试添加一个application.properties带有spring.jersey.init.jersey.config.servlet.filter.staticContentRegex=/.*html但它没有工作,我不能完全肯定的属性键应该在这里什么):
@SpringBootApplication
@ComponentScan
@Import(DataConfiguration.class)
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*tha 30
让我首先说明,静态内容不会被提供的原因是由于Jersey servlet的默认servlet映射,这是/*并且占用了所有请求.因此无法访问提供静态内容的默认servlet.除了以下解决方案,另一个解决方案是简单地更改servlet映射.您可以通过ResourceConfig使用@ApplicationPath("/another-mapping")或使用application.properties属性注释子类来实现spring.jersey.applicationPath.
关于你的第一个方法,看看泽西岛ServletProperties.您要配置的属性是FILTER_STATIC_CONTENT_REGEX.它指出:
仅当Jersey servlet容器配置为作为Filter运行时,该属性才适用,否则将忽略此属性
缺省时,Spring引导配置泽西servlet容器为一个Servlet(如提到这里):
默认情况下,Jersey将被设置为名为
@Bean的类型的Servlet .您可以通过创建具有相同名称的bean来禁用或覆盖该bean.您也可以通过设置使用Filter而不是Servlet(在这种情况下,要替换或覆盖).ServletRegistrationBeanjerseyServletRegistrationspring.jersey.type=filter@BeanjerseyFilterRegistration
所以只需spring.jersey.type=filter在您的房产中设置属性即可application.properties.我测试了这个.
和FYI一样,无论是配置为Servlet过滤器还是Servlet,就Jersey来说,功能都是一样的.
顺便说一句,而不是使用FILTER_STATIC_CONTENT_REGEX,你需要设置一些复杂的正则表达式来处理所有静态文件,你可以使用FILTER_FORWARD_ON_404.这实际上是我以前测试的.我只是把它设置在我的ResourceConfig
@Component
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
packages("...");
property(ServletProperties.FILTER_FORWARD_ON_404, true);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11425 次 |
| 最近记录: |