0

WLS 10.3.3 にデプロイするステートレス セッション Bean を作成する必要があります。セッション Bean は、WLS コンソールを介して作成された既知の JMS キューにテキスト メッセージを送信できる必要があります。したがって、私は次のコードを書きました:

package com.mycompany.ejb;

import javax.annotation.Resource;
import javax.ejb.*;
import javax.jms.*;

@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
public class MyEjb{

    @Resource(name = "jmsConnectionFactory")
    private ConnectionFactory jmsConnectionFactory;
    @Resource(name = "queue1")
    private Destination queue1;

    public MyEjb(){}

    public void sendMsgToQueue(String payload, ConnectionFactory connFactory, Destination destination) throws Exception{
        if(payload == null)
            throw new IllegalArgumentException("Message payload is null");
        if(connFactory == null)
            throw new IllegalArgumentException("Connection factory is null");
        if(destination == null)
           throw new IllegalArgumentException("Message destination is null");

        Connection connection = connFactory.createConnection();
        Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
        MessageProducer messageProducer = session.createProducer(destination);
        TextMessage textMessage = session.createTextMessage();
        textMessage.setText(payload);
        messageProducer.send(textMessage);
    }

}

ここで行う必要があるのは、resource-ref から jndi-name へのマッピングを含む有効な weblogic-ejb-jar.xml を提供することです。次のマッピングを含む weblogic-ejb-jar.xml の例を教えてください。

  • jmsConnectionFactory は、jndi 名が com.mycompany.jmsXAConnFactory の接続ファクトリーにバインドする必要があります。
  • queue1 は、jndi 名が com.mycompany.jmsQueue1 のキューにバインドする必要があります。
4

1 に答える 1

0

私のために働いたweblogic-ejb-jar.xml:

<?xml version='1.0' encoding='UTF-8'?>
<weblogic-ejb-jar xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar http://xmlns.oracle.com/weblogic/weblogic-ejb-jar/1.0/weblogic-ejb-jar.xsd ">
    <weblogic-enterprise-bean>
        <ejb-name>MyEjb</ejb-name>
        <stateless-session-descriptor></stateless-session-descriptor>
        <resource-description>
            <res-ref-name>jmsConnectionFactory</res-ref-name>
            <jndi-name>com.mycompany.jmsXAConnFactory</jndi-name>
        </resource-description>
        <resource-env-description>
            <resource-env-ref-name>queue1</resource-env-ref-name>
            <jndi-name>com.mycompany.jmsQueue1</jndi-name>
        </resource-env-description>
    </weblogic-enterprise-bean>
</weblogic-ejb-jar>
于 2013-01-15T18:07:51.553 に答える