Можно ли перехватить метод тайм-аута без аннотации AroundTimeout? - PullRequest
0 голосов
/ 19 ноября 2018

Моя компания в настоящее время использует старый javaee jar (5.2.0), который не содержит класс AroundTimeOut. Банку нельзя поменять, потому что произойдут серьезные удары. Мой менеджер просит меня перехватить метод тайм-аута. Знаете ли вы, есть ли способ обойти эту проблему?

Это метод, который я использую:

@Timeout
    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    @Interceptors(CorrelationIdInterceptor.class)
    public void handleTimeout(Timer timer) {

И перехватчик:

public class CorrelationIdInterceptor {


    private static final String CORRELATION_ID = "CORRELATION_ID";
    private static final String GET_CORRELATION_ID = "getCorrelationId";

    private static final Logger LOGGER = 
    Logger.getLogger(CorrelationIdInterceptor.class);


    @AroundInvoke
    public Object log(final InvocationContext ic) throws Exception {

        String webServiceMethodName = ic.getMethod().getName();


        if(webServiceMethodName.equalsIgnoreCase("handleTimeout")){
            webServiceMethodName="SIBOI"+":"+ webServiceMethodName;
        }

1 Ответ

0 голосов
/ 25 декабря 2018

Попробуйте добавить в свой ejb-jar.xml

    <assembly-descriptor>
      <interceptor-binding>
         <ejb-name>full.path.to.your.ejb</ejb-name>
         <interceptor-class>full.path.to.your.interceptor</interceptor-class>
         <method-name>method.in.your.ejb</method-name>
      </interceptor-binding>
   </assembly-descriptor>
...