Перехватчик не вызывается на Payara 5.184 - PullRequest
0 голосов
/ 25 марта 2020

Я управляю простым веб-проектом Maven Java EE на Payara

Я пытаюсь продемонстрировать работу Interceptor, но он не вызывается. Я даже определил это в бобах. xml файл

  • Версия Payara: 5.184
  • Редакция: Полная
  • Версия JDK: 1.8, Java EE 7
  • Операционная система: Ma c
  • База данных: Oracle

Класс EJB

package com.maven.web;

import com.interceptors.LogNameInterceptor;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;
import javax.faces.bean.ManagedBean;
import javax.interceptor.Interceptors;

@ManagedBean
@Stateless
public class UserBean implements User {

    private String firstName;
    private String lastName;

    public static final Logger LOGGER = Logger.getLogger(UserBean.class.getName());

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Override
    @Interceptors(LogNameInterceptor.class)
    public String show(String fn, String ln) {
        LOGGER.log(Level.INFO, "Inside method");
        return "result";
    }

}

Пользователь. java

package com.maven.web;

import javax.ejb.Remote;

@Remote
public interface User {

    public String show(String a, String b);
}

Класс перехватчика

package com.interceptors;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;

@Interceptor
public class LogNameInterceptor {

    public static final Logger LOGGER = Logger.getLogger(LogNameInterceptor.class.getName());

    @AroundInvoke
    public Object aroundInvoke(InvocationContext ctx) throws Exception {
        LOGGER.log(Level.INFO, "Inside Interceptor");
        System.out.println(ctx.getMethod());
        return ctx.proceed();
    }
}

бобы. xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
      http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">

    <interceptors>
        <class>com.interceptors.LogNameInterceptor</class>
    </interceptors>
</beans>

В журнале печатается только «метод Inside», что означает, что он не достигает метода aroundInvoke. Большое спасибо!

...