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 のキューにバインドする必要があります。