Я пытаюсь сделать простую вещь. Введите квалифицированный String
(или File
) в CDI.
Итак, у меня есть квалификатор:
@Retention(RetentionPolicy.RUNTIME)
@Target({FIELD,METHOD,PARAMETER,TYPE})
@Qualifier
public @interface FilesRepositoryPath {}
У меня есть продюсер:
public class FilesRepositoryPathProducer {
@Produces
@FilesRepositoryPath
public String getRepositoryDirectory() {
return "path.taken.from.configuration";
}
}
И я пытаюсь его использовать:
@ApplicationScoped
public class FilesRepository {
@Inject
public FilesRepository(@FilesRepositoryPath String filesDirectory) {
//Do some stuff
}
}
Однако WELD не может создать экземпляр этого компонента. Я получаю исключение:
org.jboss.arquillian.impl.event.FiredEventException: org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001410 The injection point [field] @Inject private za.co.fnb.commercial.dms.file.FilesRepositoryBeanTest.repo has non-proxyable dependencies
Я знаю, что String
нельзя проксировать, но почему WELD хочет создать прокси? Он имеет область действия @Dependent
, поэтому, насколько мне известно, он все равно не должен создавать прокси. Как я могу заставить его работать?
FilesRepositoryBeanTest
, пожалуйста? - person jan groth   schedule 21.04.2011