TomEE: расширение CDI - ошибка поставщика не найдена

У меня запущен TomEE+ 1.5.1 и я пытаюсь создать расширение CDI. Я создал класс, реализующий javax.enterprise.inject.spi.Extension, и поместил имя этого класса в файл META-INF/services/javax.enterprise.inject.spi.Extension

Сам класс прост:

import java.util.HashSet;
import java.util.Set;

import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessAnnotatedType;

public class ScanAllClassesExtension implements Extension {

    private Set<Class<?>> allClasses;

    public void handleProcessAnnotatedTypeEvent(@Observes ProcessAnnotatedType<?> processAnnotatedTypeEvent) throws Exception {
        Class<?> type = processAnnotatedTypeEvent.getAnnotatedType().getJavaClass();
        getAllClasses().add(type);
    }

    public Set<Class<?>> getAllClasses() {
        if (allClasses == null) {
            allClasses = new HashSet<Class<?>>();
        }
        return allClasses;
    }

}

При развертывании на TomEE я получил эту ошибку:

java.util.ServiceConfigurationError: javax.enterprise.inject.spi.Extension: Provider test.extensions.ScanAllClassesExtension not found

При отладке в OpenEJB эта ошибка вызвана ClassNotFoundException, но правильный путь находится в списке URL-адресов загрузчика классов.

Я понятия не имею, почему это происходит, и я надеюсь, что кто-нибудь может мне помочь.


person Jukkales    schedule 18.03.2013    source источник


Ответы (1)


вы можете попробовать моментальный снимок tomee 1.6 (https://repository.apache.org/content/groups/snapshots/org/apache/openejb/apache-tomee/1.6.0-SNAPSHOT/apache-tomee-1.6.0-20130330.041018-36-webprofile.zip)

Кстати, вы предоставили в своем приложении API? это может привести к проблемам с загрузкой классов в некоторых версиях

person Romain Manni-Bucau    schedule 31.03.2013