Проверка нарушения GWT на стороне сервера выдает исключение SerializationException - PullRequest
0 голосов
/ 22 октября 2011

Я следовал образцу проверки gwt 2.4 и внедрил все это в свое собственное приложение.Клиентская сторона прекрасно работает.

    private void verifyRegistrationData(final RegistrationTO registration) throws ConstraintViolationException {
        final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
        final Set<ConstraintViolation<RegistrationTO>> violations = validator.validate(registration);

        if (violations.size() > 0) {
            final Set<ConstraintViolation<?>> temp = new HashSet<ConstraintViolation<?>>(violations);
            throw new ConstraintViolationException(temp);
        ...

, но если я делаю то же самое на стороне сервера:

    public void update(final RegistrationTO registration) throws IllegalArgumentException, ConstraintViolationException, TestException {
    final Set<ConstraintViolation<RegistrationTO>> violations = validator.validate(registration);
    if (!violations.isEmpty()) {
        final Set<ConstraintViolation<?>> temp = new HashSet<ConstraintViolation<?>>(violations);
        throw new ConstraintViolationException(temp);
    }
    ...

, все происходит сбой со следующим исключением:
javax.servlet.ServletContext log: Исключительная ситуация при отправке входящего RPC-вызоваSerializationPolicy или его объект Class не могут быть загружены.В целях безопасности этот тип не будет сериализован.

Вот так PathImpl выглядит как hibernate-validator-4.1.0.Final-sources.jar

public class PathImpl implements Path, Serializable {
    private static final long serialVersionUID = 7564511574909882392L;
    ...

выглядит нормально (по крайней мере, дляя)

Я использую GWT 2.4, validation-api-1.0.0.GA, hibernate-validator-4.1.0.Final, gwt-servlet-deps ...

Спасибо взаранее!

Ответы [ 3 ]

2 голосов
/ 24 октября 2011

Есть ли явно определенный конструктор по умолчанию?то есть public PathImpl() { }?Это требуется механизмом сериализации GWT;если его нет в источнике, сериализация ответа RPC завершится неудачей.

1 голос
/ 28 ноября 2011

Пользовательский сериализатор существует для PathImpl, просто если этот класс явно не указан в вашем сервисном API, он не будет добавлен в политику сериализации.

В настоящее время обходной путь заключается в добавлении фиктивного поля PathImpl где-нибудь в вашем сервисном API.Класс ValidationSupport существует, чтобы сгруппировать этот и другие такие классы вместе, чтобы сделать это немного легче.

0 голосов
/ 14 ноября 2011

Я поменяю все на RequestFactory, как рекомендовал Томас Бройер. Это было далеко не так просто, как GWT-RPC. Это было причиной для меня, чтобы собрать все виды информации и создать образец программы.

Для интересующихся - здесь вы можете найти образец с документацией и источником. (Также реализован однострочный клиентский регистратор) (Документация составлена ​​на немецком языке, но вывод логирования также на английском ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...