2012-02-24 5 views
1

Grails 2.x JMS 플러그인이 원격 WebLogic JMS Server로 메시지를 보내고 받도록 설정 한 사람이 있습니까? 나는 행운과 같은 resources.groovy 구성을 시도했다 : 완전한 답변Grails JMS 플러그인 - WebLogic JMS 서버

jmsConnectionFactory(InitialContext, [ 
"INITIAL_CONTEXT_FACTORY": "weblogic.jndi.WLInitialContextFactory", 
"PROVIDER_URL": "t3://remote-host:7001", 
"SECURITY_PRINCIPAL": "weblogic", 
"SECURITY_CREDENTIALS": "weblogic"]) 
+0

몇 가지 추가 정보를 제공해 주시겠습니까? 시작 또는 런타임, 스택 추적 등에서 실패합니까? – proflux

+0

제가 제공 한 구성은 기본이 아닙니다. JMS 플러그인에서 jmsConnectionFactory를 찾을 수 없다는 오류가 발생합니다. 필자는 Grails를 WebLogic JMS에 연결하는 예제와 예제를 찾고있다. –

+0

[this] (http://stackoverflow.com/questions/9436137/jms-job-queue-with-grails)에서 도움을받을 수 있다면 –

답변

0

별로 자원/전송 원격 웹 로직 서버와 Grails의에서 JMS를 수신에 대한 그물에있다, 그래서 나는 2-3년 파악 예 : 작업 아무 플러그인도 필요없이.

  1. 적어도 Weblogic wlthint3client.jar이 lib 디렉토리에 있는지 확인하십시오.

    package app 
    
    class MyListenerService { 
    
         static transactional = false 
         static scope = "prototype" 
    
    def onMessage(msg) { 
         log.info "JMS msg received." 
         try { 
          String txtmsg = new String(msg as String) 
          log.info txtmsg 
         } catch (e) { 
          log.error e 
         } 
        } 
    } 
    
  2. : 서비스/myListenerService.groovy에

    // Weblogic's JMS setup on Grails 
    jndiTemplate(org.springframework.jndi.JndiTemplate) { 
        environment = [ 
          "java.naming.factory.initial"  : "weblogic.jndi.WLInitialContextFactory", 
          "java.naming.provider.url"  : "t3://host.name.mustbe.same.as.configured.on.server.side:port_number", 
          "java.naming.security.principal" : "wlsadmin", 
          "java.naming.security.credentials": "password" 
        ] 
    } 
    
    
    // 
    // listener 
    // 
    jmsListenerConnectionFactory(org.springframework.jndi.JndiObjectFactoryBean) { 
        jndiTemplate = ref(jndiTemplate) 
        jndiName  = "jms.checkonserver.QueueConnectionFactory" 
    } 
    
    jmsListenerDestinationResolver(org.springframework.jms.support.destination.JndiDestinationResolver) { 
        jndiTemplate = ref(jndiTemplate) 
        cache = false 
    } 
    
    userListenerCredentialsConnectionFactory(org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter){ 
        targetConnectionFactory = ref(jmsListenerConnectionFactory) 
    } 
    
    standardListenerJmsTemplate(org.springframework.jms.core.JmsTemplate) { 
        connectionFactory = ref(userListenerCredentialsConnectionFactory) 
        destinationResolver = ref(jmsListenerDestinationResolver) 
    } 
    
    jmsListenerMessageListener(org.springframework.jms.listener.adapter.MessageListenerAdapter, ref("myListenerService")) { 
        defaultListenerMethod = "onMessage" 
    } 
    
    standardListenerJmsListenerContainer(org.springframework.jms.listener.DefaultMessageListenerContainer) { 
        connectionFactory = ref(jmsListenerConnectionFactory) 
        destinationResolver = ref(jmsListenerDestinationResolver) 
        messageListener = jmsListenerMessageListener 
        destinationName  = "jms.checkonserver.MessagesQueue" 
    } 
    
  3. :

    의 conf의
    • /봄/resources.groovy :

    • 는 JMS 청취자 설정
    • 이 설정 JMS 보낸 사람 :

      의 conf의
      • /봄/resources.groovy :

        서비스
         jmsSenderConnectionFactory(org.springframework.jndi.JndiObjectFactoryBean) { 
              jndiTemplate = ref(jndiTemplate) 
              jndiName  = "jms.checkonseerver.QueueConnectionFactory" 
             } 
        
             jmsSenderDestinationResolver(org.springframework.jms.support.destination.JndiDestinationResolver) { 
              jndiTemplate = ref(jndiTemplate) 
              cache = false 
             } 
        
             userSenderCredentialsConnectionFactory(org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter){ 
              targetConnectionFactory = ref(jmsSenderConnectionFactory) 
             } 
        
             standardSenderJmsTemplate(org.springframework.jms.core.JmsTemplate) { 
              connectionFactory = ref(userSenderCredentialsConnectionFactory) // 
              destinationResolver = ref(jmsSenderDestinationResolver) 
             } 
        
      • /myJmsSenderService.groovy :

        package app 
        
        import org.springframework.jms.core.MessageCreator 
        
        import javax.jms.JMSException 
        import javax.jms.Message 
        import javax.jms.Session 
        
        class MyJmsSenderService { 
        
            static transactional = false 
            static scope = "prototype" 
        
            def standardSenderJmsTemplate 
        
            def sendMessage(txt) { 
              MessageCreator messageCreator = new MessageCreator() { 
              public Message createMessage(Session session) throws 
              JMSException { 
               return session.createTextMessage(txt) 
              } 
              } 
        
             standardSenderJmsTemplate.send("jms.checkonserver.SendingQueue", messageCreator) 
        
             log.info "JMS message send: ${txt}" 
        
            } 
        }