Ral*_*ang 5 java jersey exceptionmapper
我试图调用此异常映射器返回404未找到的响应,但它一直返回500内部错误.泽西版是2.22.1.下面的代码片段.感谢所有帮助.
谢谢.
异常映射器类.
package org.learn.rest.messengerdemo.exception;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class DataNotFoundExceptionMapper implements ExceptionMapper<DataNotFoundException>{
@Override
public Response toResponse(DataNotFoundException ex) {
return Response.status(Response.Status.FORBIDDEN).build();
}
}
Run Code Online (Sandbox Code Playgroud)
例外类.
package org.learn.rest.messengerdemo.exception;
public class DataNotFoundException extends RuntimeException{
private static final long serialVersionUID = 2176642539344388961L;
public DataNotFoundException(String message)
{
super(message);
}
}
Run Code Online (Sandbox Code Playgroud)
服务类抛出的方法.
public Message getMessage(long messageId) {
Message message = messages.get(messageId);
if(message == null)
{
throw new DataNotFoundException("Message with id " + messageId + " not found");
}
return message;
}
Run Code Online (Sandbox Code Playgroud)
和资源类.
@GET
@Path("/{messageId}")
public Message getMessage(@PathParam("messageId") long messageId) {
return messageService.getMessage(messageId);
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*tha 17
望着web.xml从你前面的问题,你有这样的
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.learn.rest.messengerdemo.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
这个init-parm jersey.config.server.provider.packages所说的是Jersey应该扫描命名包中的@Path注释资源类和带@Provider注释的提供者类并注册它们.
您只org.learn.rest.messengerdemo.resources列出了资源包,但是您ExceptionMapper位于不同的包中.默认行为是递归扫描,也表示子包.因此,如果您列出org.learn.rest.messengerdemo,则会同时访问资源包和例外包.或者您可以列出两个包,用逗号或分号分隔.无论哪种方式都可行
<param-value>org.learn.rest.messengerdemo</param-value>
<!-- OR -->
<param-value>
org.learn.rest.messengerdemo.resources,
org.learn.rest.messengerdemo.exception
</param-value>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3824 次 |
| 最近记录: |