2016-02-25 18 views
8

का उपयोग कर @ जेएमएस लिस्टनर के लिए प्रमाणीकरण स्प्रिंग 4 और एक्टिवएमक्यू का उपयोग कर गैर-एक्सएमएल जेएमएस श्रोता को लागू करने का प्रयास कर रहा है।स्प्रिंग 4.2 एनोटेशन और एक्टिवएमक्यू

Setup of JMS message listener invoker failed for destination 'topic.FromJndiProperties' [...] 
Cause: The JMS connection has failed: Force close due to SecurityException on connect. 
Cause: User name [null] or password is invalid. 

तो गंतव्य के लिए कनेक्शन यूज़रनेम और पासवर्ड अशक्त साथ किया जा रहा है: मेरा मुद्दा यह है कि मैं अपने ग्राहक के साथ निम्न त्रुटि प्राप्त हो रही है। मुझे लगता है कि मैंने गंतव्य को सही ढंग से सेट नहीं किया है लेकिन मैं इसे हल करने के तरीके से बाहर निकल रहा हूं। क्या कोई इसे ठीक करने में मेरी सहायता कर सकता है?

मेरे AppConfig:

@Autowired 
private Environment env; 

@Autowired 
private BeanFactory springContextBeanFactory; 

@Bean 
public DefaultJmsListenerContainerFactory myListenerContainerFactory() throws NamingException { 

    Properties props = new Properties(); 
    props.setProperty(Context.INITIAL_CONTEXT_FACTORY, env.getProperty("java.naming.factory.initial")); 
    props.setProperty(Context.PROVIDER_URL, env.getProperty("java.naming.provider.url")); 
    props.setProperty(Context.SECURITY_PRINCIPAL, env.getProperty("java.naming.security.principal")); 
    props.setProperty(Context.SECURITY_CREDENTIALS, env.getProperty("java.naming.security.credentials")); 

    Context jndiContext = new InitialContext(props);; 
    ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext.lookup("ConnectionFactory"); 

    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); 
    factory.setConnectionFactory(connectionFactory); 
    factory.setDestinationResolver(new BeanFactoryDestinationResolver(springContextBeanFactory)); 
    factory.setPubSubDomain(true); 
    factory.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE); 

    return factory; 
} 

श्रोता:

@JmsListener(containerFactory = "myListenerContainerFactory", destination = "topic.FromJndiProperties") 
public void receiveMessage(String message) { 
    try { 
     System.out.println("Received <" + message + ">"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

उत्तर

1

आप दलाल ओर से कोई भी सुविधाओं को नहीं बदला है तो नीचे दिए गए

props.setProperty(Context.SECURITY_PRINCIPAL,"admin" 
props.setProperty(Context.SECURITY_CREDENTIALS, "admin"); 

भी अपने JNDI में कोशिश .properties आप गुणों को जोड़ सकते हैं उपयोगकर्ता नाम = व्यवस्थापक और पासवर्ड = व्यवस्थापक इसके बजाय

+0

हाय सुंदर। सलाह के लिए धन्यवाद। हालांकि ये मान पहले ही सेट किए जा रहे हैं। मुझे लगता है कि गंतव्य/सत्र कैसे बनाया जा रहा है इस बारे में कुछ अजीब बात है। – Dan

संबंधित मुद्दे