import java.io.StringReader; import java.sql.Connection; import java.sql.SQLException; import javax.ejb.EJBException; import javax.ejb.MessageDrivenBean; import javax.ejb.MessageDrivenContext; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import javax.xml.namespace.QName; import javax.xml.transform.sax.SAXSource; import org.xml.sax.InputSource; import com.ddtek.xquery3.XQConnection; import com.ddtek.xquery3.XQException; import com.ddtek.xquery3.XQPreparedExpression; import com.ddtek.xquery3.XQResultSequence; import com.ddtek.xquery3.jdbc.XQueryConnection; /* * Copyright(c) 2007 DataDirect Technologies. All rights reserved. * * $Revision: 1.0 $ */ public class Acord181EJB implements MessageDrivenBean, MessageListener { public static final String queryBaseDir = "C:/Dev/XQuery/ACORD/"; public static final String inputQuery = "acord_181-extvar.xquery"; public void ejbRemove() throws EJBException { // TODO Auto-generated method stub } public void setMessageDrivenContext(MessageDrivenContext arg0) throws EJBException { // TODO Auto-generated method stub } public void onMessage(Message message) { // TODO Auto-generated method stub Connection jdbc_c = null; try { Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource jdbc_ds = (DataSource)envContext.lookup("jdbc/DDXQExample"); jdbc_c = jdbc_ds.getConnection(); XQConnection xqj_c = XQueryConnection.getXQConnection(jdbc_c); XQPreparedExpression xqj_p = xqj_c.prepareExpression(Acord181EJB.queryBaseDir + Acord181EJB.inputQuery); if (message instanceof TextMessage) { // Get the XML request from the message String text = ((TextMessage)message).getText(); // Bind the request xqj_p.bindDocument(new QName("request"), new InputSource(new StringReader(text))); // Execute; no need to handle the response, as the XQuery is // performing update operations xqj_p.executeQuery(); } } catch ( NamingException ne) { } catch ( JMSException xe) { } catch ( SQLException se) { } catch ( XQException xe) { } finally { if ( jdbc_c != null ) { try { jdbc_c.close(); } catch (SQLException ex){ } } } } }