2015-03-19 3 views
0

Я пытаюсь написать аннотации для ввода ресурсов JMS. Вот мой кодCDI-Неудовлетворительные зависимости для типа QueueSession

public class JMSResourceProducer { 

    private static final String WL_INIT_CONN_FACTORY ="weblogic.jndi.WLInitialContextFactory"; 
    private String WL_SERVER_URL = "URL"; 
    private String QF ="QFNAME"; 
    private String QQ ="QNAME"; 

    public InitialContext createInitialContext() throws NamingException { 
     Hashtable properties = new Hashtable(); 
     properties.put(Context.INITIAL_CONTEXT_FACTORY, WL_INIT_CONN_FACTORY); 
     properties.put(Context.PROVIDER_URL, WL_SERVER_URL); 
     return new InitialContext(properties); 
    } 

    @Produces @Image2000 
    public QueueSession createQueueSession() throws NamingException, JMSException { 
     InitialContext initialContext = createInitialContext(); 
     QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) initialContext.lookup(QF); 
     QueueConnection queueConnection = queueConnectionFactory.createQueueConnection(); 
     return queueConnection.createQueueSession(true, 0); 
    } 

    @Produces @Image2000 
    public Queue createQueue () throws NamingException { 
     InitialContext initialContext = createInitialContext(); 
     Queue queue = (Queue)initialContext.lookup(QQ); 
     return queue; 
    } 
} 

И это, как я использую его в моем классе

@Inject @Image2000 
    private QueueSession queueSession; 

    @Inject @Image2000 
    private Queue jmsQueue; 

Мой аннотацию

@Qualifier 
@Target({TYPE, METHOD, PARAMETER, FIELD}) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Image2000 { 
} 

Но я получаю ниже ошибки при запуске мой Wildfly ..

Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type QueueSession with qualifiers @Image2000 

при инъекции point [UnbackedAnnotatedField] @Inject @ Image2000 .queueSession

Любая подсказка, что случилось с моим классом продюсера?

+0

Не могли бы вы предоставить полные журналы, когда загрузочные буферы Weld на уровне 'DEBUG' для журнала регистрации' org.jboss.weld'? –

+0

JMSResourceProducer, похоже, не является компонентом. Аннотировать его с помощью @Stateless или @ApplicationScope – maress

ответ

0

В зависимости от режима обнаружения, определенного в beans.xml, вам может потребоваться аннотировать JMSResourceProducer с помощью аннотации, определяющей компонент (Dependent, ApplicationScoped или другой более подходящий).

+0

Добавление @Dependent в класс разрешило мою проблему. Спасибо jpangamarca – java2017

+0

@ java2001 Добро пожаловать. – jpangamarca

Смежные вопросы