泽西岛:返回204状态而不是500

时间:2012-01-30 23:31:32

标签: java exception-handling jersey http-status-codes

我有一个泽西岛网络服务,其中包含以下资源类:

@Stateless
@Path("/provision")
public class ProvisionResource
{
    private final Logger logger = LoggerFactory.getLogger(ProvisionResource.class);

    @EJB
    private ProvisionService provisionService;

    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Path("/subscriber")
    public SubscriberAccount querySubscriberAccount(
            @QueryParam("accountNum") String accountNum)
    {
        logger.debug("Entering querySubscriberAccount()");

        final SubscriberAccount account;

        try
        {
            account = provisionService.querySubscriber(accountNum);

            if (account != null)
            {
                logger.debug("Retreived account = " + account);
            }
            else
            {
                logger.debug("No account was found for " + accountNum);
            }
        }
        catch (IllegalArgumentException ex)
        {
            logger.error("Illegal argument while executing query for subscriber account",
                    ex);

            throw new WebApplicationException(Response.Status.BAD_REQUEST);
        }
        catch (Exception ex)
        {
            logger.error("Unexpected exception while executing query for subscriber account",
                    ex);

            throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
        }

        logger.debug("Exiting querySubscriberAccount()");

        return account;
    }

.... snip ....

}

provisionService.querySubscriber抛出一个异常,该异常由querySubscriberAccount方法中的第二个catch语句捕获(我们在文件中看到了log语句)。但是,客户端收到204状态而不是预期的500错误。

我确实发现了这个类似于我的问题:http://java.net/jira/browse/JERSEY-41但是对于Jersey 1.3.1而言已经很老了。我们使用的是版本1.9.1。

是否有其他人看过这个问题并希望找出问题所在?

1 个答案:

答案 0 :(得分:0)

我为此问题创建了一个错误http://java.net/jira/browse/JERSEY-1062。如果您遇到同样的问题,请考虑投票。