gpt4 book ai didi

grails - Grails JMS插件到WebLogic JMS Server

转载 作者:行者123 更新时间:2023-12-02 14:55:01 24 4
gpt4 key购买 nike

是否有人将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年前就找到了一个工作解决方案,,不需要任何插件

  • 确保lib目录中至少有Weblogic wlthint3client.jar。
  • 设置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
    }
    }
    }
  • 设置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}"

    }
    }
  • 关于grails - Grails JMS插件到WebLogic JMS Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437883/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com