Как остановить трассировку стека EJBException (в каждом выданном исключении) - PullRequest
2 голосов
/ 10 января 2012

Простой

throw new WebApplicationException(400);

или любой другой

throw new ...

Получает бросок на javax.ejb.EJBException с Caused by:, являющимся исключением, которое вы только что бросили.При мониторинге журнала это является проблемой, потому что не каждое исключение печатает трассировку стека.Но EJBException делает это.>: (* ​​1009 *

Пожалуйста, поймите - EJBException вообще не влияет на приложение, а только на то, что печатает нежелательную трассировку стека при каждом генерируемом исключении.

Javadoc EJBException говорит:

Выдается исключение EJBException для сообщения о том, что вызванный бизнес-метод или метод обратного вызова не может быть завершен из-за непредвиденной ошибки (например, не удалось открыть соединение с базой данных).

Необходимо выполнитьбыть способ сохранить EJBException тихо ...

(обновление) Пример:

@Stateless
@Path("roads")
public class RoadsREST {

    @PersistenceContext(unitName = "rd")

    @GET
    @Produces("application/json")
    public List<NationalRoads> retrieve() {

        CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
        Root subs = cq.from(NationalRoads.class);

        List<NationalRoads> roads = em.createQuery(cq).getResultList();

        if (roads.isEmpty()) {
            throw new WebApplicationException(404);
        }

        return roads;
    }

}

Ответы [ 2 ]

5 голосов
/ 21 августа 2012

Простейшим решением было бы создать подкласс WebApplicationException и пометить его @ApplicationException, например:

@ApplicationException
public class RESTException extends WebApplicationException {
    private static final long serialVersionUID = 1L;
    public RESTException(Status status, String msg) {
        super(Response.status(status).entity(msg).type(MediaType.TEXT_PLAIN).build());
    }
}

это также должно помешать появлению исключений в ваших лог-файлах

0 голосов
/ 10 января 2012

Вы можете установить уровень журнала, отредактировав logging.properties в директории config вашего домена или с помощью asadmin set-log-level. В админке также есть экран для этого, но использование этого иногда прерывает регистрацию полностью

...