繁体   English   中英

Grails JMS插件到WebLogic JMS服务器

[英]Grails JMS Plugin to WebLogic JMS Server

是否有人将Grails 2.x JMS插件配置为向远程WebLogic JMS服务器发送/接收消息? 我已经尝试过resources.groovy这样的配置,但运气不好:

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

关于使用远程Weblogic服务器在Grails中发送/接收JMS的信息,网上没有多少完整的答案,因此我在2-3年前就找到了一个可行的解决方案, 不需要任何插件

  1. 确保在lib目录中至少有Weblogic wlthint3client.jar。

  2. 设置JMS 侦听器

    • 在conf / spring / resources.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" } 
    • 在services / myListenerService.groovy中:

       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 } } } 
  3. 设置JMS 发送者

    • 在conf / spring / 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) } 
    • 在service / 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}" } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM