2015-12-16 2 views
1

Проблема: я продолжаю получать исключение WELD ниже при попытке развернуть мою WAR в Glassfish 4.1.1. Приложение правильно развертывается на Wildfly 9.0.Исключение Weld 001508 на Glassfish 4: как игнорировать интерфейс (ы)?

Исключение при загрузке приложения: java.lang.IllegalStateException: ContainerBase.addChild: Начало: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: org.jboss.weld.exceptions.DefinitionException: WELD-001508: Невозможно создать InjectionTarget из [EnhancedAnnotatedTypeImpl] общественного абстрактного интерфейса @Path класса com.example.package.MyService как это интерфейс

Здесь MyService действительно интерфейс, определенный в отдельном библиотека. Мое приложение вытаскивает библиотеку, чтобы создать прокси-сервер против интерфейса MyService и делать запросы. MyService выглядит следующим образом:

@Path("api") 
public interface MyService { 

    @GET 
    public void someMethod(); 
} 

Я попытался исключить MyService из WELD, добавив следующие строки в файл beans.xml, но безрезультатно :(

<scan> 
    <exclude name="com.example.package.*"></exclude> 
</scan> 
  • Почему WELD пытается включить интерфейс этой библиотеки?
  • Как я могу сказать, чтобы игнорировать его?
+0

У вас есть метод производителя, определенный для этого интерфейса? Я согласен с этим контекстом, это не совсем понятно. –

+0

Нет, никакого метода продления ... – Rodrigo

ответ

0

Ну, мне не удалось найти причину для этого. Тем не менее, я в конечном итоге заставил его работать, удалив кучу зависимостей Resteasy из файла конфигурации, что, вероятно, стало основной причиной проблемы. (Для контекста я переходил с Wildfly/Resteasy на Glassfish/Jersey).

Время от времени я все еще получаю эту ошибку (неуверенность в том, почему), но чистая и перестраивающая упаковка заставляет ее уйти.

0

Вы также можете попробовать создать package-info.java файл и использовать @Vetoed:

@Vetoed 
package com.example.package; 

import javax.enterprise.inject.Vetoed; 
Смежные вопросы