Hi,

 The JBoss 3.2.3 I'm using.
1. This is my MDB..
----------------------------------------------------------------------

/**
 * This will be covered the @copyright details.
 */
package test.jms.sample;

import java.io.StringReader;

import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.ejb.EJBException;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

/**
 * The XMLMessageQueueBean class.
 * @author:             JBOSS Forum
 * @date:                       09-12-05
 * @purpose:            This MDB transforms the Messages it receives and push 
it to the Queue.
 * @constraints:        
 * @modification  
 */
public class XMLMessageQueueBean implements MessageDrivenBean, MessageListener

{

        private MessageDrivenContext messageDrivenContext = null;
        private QueueConnection queueConnection;
        private QueueSession queueSession;
        
        /**
         * The default constructor.
         */
        public XMLMessageQueueBean() {
        }
    /**
     * The call back method.
     * @param           messageDrivenContext                    
MessageDrivenContext 
     */
        public void setMessageDrivenContext(MessageDrivenContext 
messageDrivenContext){
                this.messageDrivenContext = messageDrivenContext;
        }
        /**
     * The call back method. 
     */
        public void ejbCreate() {
        try {
                 setupPTP();
                } catch (Exception exception){
                        throw new EJBException("Failed to init MDB", exception);
                }
        }
        /**
     * The call back method. 
     */
        public void ejbRemove() {
                this.messageDrivenContext = null;
                try {
                        if (this.queueSession != null)
                                this.queueSession.close();
                        if (this.queueConnection != null)
                                this.queueConnection.close();
                } catch (JMSException JMSException){
                        JMSException.printStackTrace();
                }
        }
        /**
     * The call back method.\
     * @param           message                         Message
     */
        public void onMessage(Message message){
                try     {
                        TextMessage textMessage = (TextMessage) message;
                        String text = textMessage.getText();
                        StringReader stringReader  = new StringReader(text);
                        InputSource inputSource  = new 
InputSource(stringReader);
                        Document document = 
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(inputSource);
                        //Help
                        //what code I will write here to send the message to 
the DB
                } catch (Throwable throwable) {
                        throwable.printStackTrace();
                }
        }

        /**
         * The setupPTP method.
         * @throws JMSException, NamingException.
         */
        private void setupPTP() throws JMSException, NamingException {
                InitialContext initialContext = new InitialContext();
                Object tmp = 
initialContext.lookup("java:comp/env/jms/XMLMessageQueue");
                QueueConnectionFactory qcf = (QueueConnectionFactory) tmp;
                this.queueConnection = qcf.createQueueConnection();
                this.queueSession = 
this.queueConnection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
                this.queueConnection.start();
        }
    /**
     * The confirmation method to client. [Not used here]
     * @param           text                                    String
     * @param       dest                                        Queue
     * @throws JMSException.
     */
        private void sendReply(String text, Queue destination)  throws 
JMSException{
                                QueueSender sender = 
this.queueSession.createSender(destination);
                                TextMessage textMessage = 
this.queueSession.createTextMessage(text);
                                sender.send(textMessage);
                                sender.close();
        }
}


2. This is my ejb-jar.xml
--------------------------------------------------------------------

<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 
2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd";>

<ejb-jar>
        <enterprise-beans>
                <message-driven>
                        <ejb-name>XMLMessageQueueBean</ejb-name>
                        
<ejb-class>test.jms.sample.XMLMessageQueueBean</ejb-class>
                        <transaction-type>Container</transaction-type>
                        <acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode>
                        <message-driven-destination>
                                
<destination-type>javax.jms.Queue</destination-type>
                        </message-driven-destination>
                        <resource-ref>
                                <res-ref-name>jms/XMLMessageQueue</res-ref-name>
                                
<res-type>javax.jms.QueueConnectionFactory</res-type>
                                <res-auth>Container</res-auth>
                        </resource-ref>
                </message-driven>
        </enterprise-beans>
</ejb-jar>


3. This is my jboss.xml
--------------------------------------------------------------------

<?xml version="1.0"?>

        <enterprise-beans>
                <message-driven>
                <ejb-name>XMLMessageQueueBean</ejb-name>
                <destination-jndi-name>queue/sendQueue</destination-jndi-name>
                <resource-ref>
                        <res-ref-name>jms/XMLMessageQueue</res-ref-name>
                        <jndi-name>ConnectionFactory</jndi-name>
                </resource-ref>
        </message-driven>
        </enterprise-beans>


-------------------------------------------------------------------
My requirement is that I've to send lots of XML based message, and it will be 
maintained in a queue and the message will be retrieved from queue and sent to 
the databse.  If JBoss is taking care of the queue and retrieval : Yes then 
what code I will have to write in onMessage() to retrieve the message and sent 
it to the DB. If no then what extra configuration I will have to do to achieve 
this.

If the above given files are not enough please help me out.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3894712#3894712

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3894712


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to