我已将spring boot配置为加载Jersey作为过滤器。
spring.jersey.type =滤波器 我已将Jersey属性设置为允许静态内容:
property(ServletProperties.FILTER_FORWARD_ON_404,true); 我在spring boot中读过,我可以将我的内容放在我的资源目录中,在名为'static','public'文件夹的目录下。但是,我永远无法访问我的index.html页面。我使用它的唯一方法是在src / main下创建一个webapp目录并将index.html文件放在那里。我正在将应用程序部署为jar。
当使用异常球衣提供程序处理程序时会出现问题:
package com.product.api.endpoint;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import org.springframework.stereotype.Component;
import com.product.api.entity.DefaultError;
import com.product.api.exception.DefaultException;
@Component
@Provider
public class DefaultExceptionHandler implements ExceptionMapper<RuntimeException> {
@Override
public Response toResponse(RuntimeException ex) {
if(ex instanceof DefaultException) {
DefaultException dex = (DefaultException) ex;
return Response.status(dex.getCode())
.entity(new DefaultError(dex.getMessage()))
.type(MediaType.APPLICATION_JSON)
.build();
} else {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity(new DefaultError(ex.getMessage()))
.type(MediaType.APPLICATION_JSON)
.build();
}
}
}
如果未定义@Provider,则静态内容就像魅力一样。
答案 0 :(得分:1)
我遇到了完全相同的问题,并通过添加以下几行来解决了这个问题:
public Response toResponse(RuntimeException exception) {
if (exception.getMessage().equals("HTTP 404 Not Found")) {
// allow ServletProperties.FILTER_FORWARD_ON_404 to work
return Response.status(404).build(); // don't change content type or set entity
}
//...
}