2012-02-29 2 views
0

Я использую приложение двигатель с весной, и я получаю следующее исключение:Отражения не допускается частное Throwable

java.lang.SecurityException: java.lang.IllegalAccessException: Отражения не допускается частное java.lang.Throwable

Это происходит, когда результат сериализации контроллера с помощью ResponseBody:

@RequestMapping("/mapping") 
public @ResponseBody 
Response handleRequest(Request request) { 

Объект Response имеет закрытый Throwable с его получателями и сеттерами.

Почему gae не в состоянии задуматься об этом?

ответ

1

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

Так почему это происходит , когда у вас есть устройства для забора и замера для частного поля?

Я предполагаю, что подписи для методов getter и/или setter точно не соответствуют имени и типу частного поля. Или, может быть, они недоступны. Проверьте их. Если это не поможет, попробуйте сделать приватное поле Throwable public (ick) в качестве эксперимента.

+0

При сериализации Response внутреннее поле Throwable рекурсивно сериализуется, и оно терпит неудачу, поскольку частное поле «причина» не имеет сеттера и геттера. Это происходит потому, что я использую сериализатор GSON. –

0

Вы должны сделать поля защищенными или общедоступными, чтобы использовать их с отражением на GAE.

Смежные вопросы