У меня есть следующий интерфейс:КДИ @Alternative аннотаций с @ApplicationScoped
public interface StackConfigurationService {
List<StackConfiguration> getStacksByAppId(String appId) throws ConfigurationException;
}
С двух реализаций:
@ApplicationScoped
public class StackConfigurationServiceImpl implements StackConfigurationService {
public List<StackConfiguration> getStacksByAppId(String appId) throws ConfigurationException { ... }
}
и
@Alternative
@ApplicationScoped
public class StackConfigurationMockService implements StackConfigurationService {
public List<StackConfiguration> getStacksByAppId(String appId) throws ConfigurationException { ... }
}
beans.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">
<alternatives>
<class>my.app.StackConfigurationMockService</class>
</alternatives>
</beans>
Однако CDI никогда не использует ложную реализацию услуги. Является ли аннотация @ApplicationScoped какой-либо мешающей?
Можете ли вы разместить полный текст файла beans.xml? –
@LeoG. Я обновил содержимое beans.xml – Serban
Это должно сработать. Как упаковано ваше приложение? Проверьте расположение beans.xml (webapp/WEB-INF для войны, META-INF для банки) и проверьте также, что StackConfigurationMockService находится в пути к классам. – Rouliboy