CXF: как исключить некоторые свойства при отправке объекта через SOAP? - PullRequest
5 голосов
/ 10 октября 2011

Я использую Apache CXF 2.4.2, и когда я возвращаю некоторый объект из базы данных пользователю, я хочу исключить некоторые свойства (например, пароль).Как я могу сделать это без создания временного класса?Есть ли для этого аннотация?

Ответы [ 2 ]

10 голосов
/ 17 октября 2011

Согласно комментарию @ tomasz-nurkiewicz, я должен использовать аннотацию @XmlTransient. Но, как отмечено в документации

По умолчанию, если @XmlAccessorType в классе отсутствует и ни один из его суперклассов не аннотирован @XmlAccessorType, тогда предполагается следующее значение по умолчанию для класса:

@ XmlAccessorType (XmlAccessType.PUBLIC_MEMBER)

Где XmlAccessType.PUBLIC_MEMBER означает, что:

Каждая общедоступная пара получатель / установщик и каждое открытое поле будут автоматически связаны с XML, если только XmlTransient не аннотировано. Поля или пары getter / setter, которые являются частными, защищенными или по умолчанию имеют доступ только к пакетам, привязываются к XML только тогда, когда они явно аннотируются соответствующими аннотациями JAXB.

Так вот почему @XmlTransient для частного поля не работает на примере Томаша Нуркевича. Есть два возможных способа исправить это:

1) Добавить аннотацию к общедоступному получателю:

private String password;

@XmlTransient
public String getPassword() {
    return password;
}

2) Добавить @XmlAccessorType к классу:

@XmlAccessorType(XmlAccessType.FIELD)
public User {

    @XmlTransient
    private String password;

}

Найдено по адресу: http://old.nabble.com/@XmlTransient-ignored-td7406659.html

4 голосов
/ 10 октября 2011

Я предполагаю, что вы используете JAXB для сопоставления объектного XML.В этом случае просто аннотируйте поля, которые вы хотите пропустить в вашей базе данных, с помощью @XmlTransient.

@XmlTransient
private String password;

Однако обратите внимание, что однажды вы поймете, что вам действительно нужен временный классотделить ваш веб-сервис CXF от бэкэнда.В конце концов, вы не хотите постоянно помнить, что добавление столбца в базу данных немедленно нарушает интерфейс SOAP ...

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