Документация Apache о перехватчиках довольно ясна (IMO), в любом случае, в моем профиле github есть проект helloworld (основанный на весенней загрузке, cxf и maven), который вы можете обратите внимание на настройку перехватчиков (на самом деле это перехватчик baisc autentication).
Для настройки перехватчика (например, InInterceptor) ваш класс должен расширить AbstractPhaseInterceptor<Message>
и переопределить метод handleMessage(Message message)
, затем в конструкторе вы должны объявить phase
, в котором будет применяться перехватчик. Наконец, вы должны создать его экземпляр и применить к конечной точке.
Как вы сказали:
переименовать некоторые XML-теги с именами параметров операции (которые
не рекомендуется) во входящем SOAP-запросе
Я думаю, что имя параметра операции (в файле WSDL) отличается от аргумента вашего веб-метода. Предположим, что в вашей конечной точке есть метод с именем addPerson
:
@WebMethod
String addPerson(Person person) {
/*method logic*/
}
и класс Person:
class Person {
private String firstName;
private String lastName;
private Date birthDate;
//getters and setters
}
чтобы сопоставить lastName
свойство с другим именем, вы должны пометить его
@XmlElement(name = "sureName")
private String lastName;
после применения этой аннотации sureName
(в файле wsdl) будет сопоставлено с lastName
.
Кроме того, имеется @WebParam
аннотация, которую можно использовать для изменения имени аргументов веб-метода:
@WebMethod
String sayHello( @WebParam(name = "sureName") String lastName);
Надеюсь, это поможет.