Наконец, мне удалось найти обходной путь для указанной выше проблемы. Его следующим образом:
После долгих поисков я наткнулся на концепцию Обработчик веб-службы , которая может быть вызвана для каждого запроса и ответа, которые либо получены, либо отправлены от поставщика веб-услуг соответственно.
Как настроить:
1. Создайте Java File SecurityHandler и вставьте в него следующий код:
public class SecurityHandler implements SOAPHandler<SOAPMessageContext>
{
@Override
public boolean handleMessage(SOAPMessageContext context)
{
boolean outbound = (Boolean)context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY);
if(outbound) {
//logic to handle a response
}
if (!outbound) {
//logic to handle a request
}
return true;
}
@Override
public boolean handleFault(SOAPMessageContext context) {
return true;
}
@Override
public void close(MessageContext context) {}
@Override
public Set<QName> getHeaders() {
return Collections.emptySet();
}
}
Создайте файл XML с примером кода ниже:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<javaee:handler-chains
xmlns:javaee="http://java.sun.com/xml/ns/javaee"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<javaee:handler-chain>
<javaee:handler>
<javaee:handler-class>your.package.path.SecurityHandler</javaee:handler-class>
</javaee:handler>
</javaee:handler-chain>
</javaee:handler-chains>
Чтобы активировать обработчик при каждом запросе или ответе на веб-службу, которую вы выставили, добавьте аннотацию в свой класс веб-службы следующим образом:
@HandlerChain(file="/your/package/path/handler-chain.xml")
public class my web services {
//methods or web-services to be exposed.
}