2013-01-10 59 views
0

我需要編寫一個無狀態會話bean,我想將其部署到WLS 10.3.3。會話bean應該能夠將文本消息發送到通過WLS控制檯創建的已知JMS隊列。所以我寫了下面的代碼:Weblogic中的EJB資源注入10.3.3

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); 
    } 

} 

我現在需要做的是提供一個有效的weblogic-ejb-jar.xml中與資源,裁判JNDI名稱映射。可能有人請提供的weblogic-ejb-jar.xml中有以下映射的示例:

  • jmsConnectionFactory應綁定到一個連接工廠JNDI名稱com.mycompany.jmsXAConnFactory
  • 隊列1應綁定到一個隊列的JNDI名稱com.mycompany.jmsQueue1

回答

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>