|
|
|
|
|
Re: How to pass Data as XML Messages using MQ - Series ? [message #283682 is a reply to message #283503] |
Tue, 27 November 2007 23:38 ![Go to previous message Go to previous message](/forum/theme/orafaq/images/up.png) |
ashirwada
Messages: 1 Registered: November 2007
|
Junior Member |
|
|
import java.sql.*;
import oracle.jdbc.driver.*;
import oracle.sql.*;
import oracle.xml.sql.query.*;
// Java code for Sending messages to sonic MQ(4.0.2). Program need to change for following
// Queuename eg SampleQ2
// UserName
// PassWord
// HostUrl eg server:2506
public class XMLTESTMESSAGE
{
public XMLTESTMESSAGE() {
}
// Second Constructor
public XMLTESTMESSAGE(String clientId) {
setId(clientId);
}
// Third Constructor
public XMLTESTMESSAGE(String clientId, String clientName) {
setId(clientId);
setName(clientName);
}
public String getId() {
return clientId;
}
public void setId(String clientId){
this.clientId = clientId;
}
public String getName() {
return name;
}
public void setName(String name){
this.name = name;
}
private static String QueryName = "SELECT * FROM SALES" ;
private static String clientId = "99";
private static String name = "Customer";
private static final String broker = "10.100.121.185:2506";
private static final String password = "password";
private static final String sQueue = "SampleQ2";
private static final String username = "mike";
private static final int MESSAGE_LIFESPAN = 1800000; // milliseconds (30 minutes)
private javax.jms.QueueConnection connect = null;
private javax.jms.QueueSession session = null;
private javax.jms.QueueSender sender = null;
// Create JMS client for publishing and subscribing to messages.
private void talker( String broker, String username, String password, String sQueue, String CustNum, String CustName ,String QueryName)
{
// Create a connection.
try
{
javax.jms.QueueConnectionFactory factory;
factory = (new progress.message.jclient.QueueConnectionFactory (broker));
connect = factory.createQueueConnection (username, password);
session = connect.createQueueSession(false,javax.jms.Session.AUTO_ACKNOWLEDGE);
}
catch (javax.jms.JMSException jmse)
{
System.err.println("error: Cannot connect to Broker - " + broker);
jmse.printStackTrace();
System.exit(1);
}
// Create Sender queue
try
{
if (sQueue != null)
{
javax.jms.Queue sendQueue = session.createQueue (sQueue);
sender = session.createSender(sendQueue);
connect.start();
}
}
catch (javax.jms.JMSException jmse)
{
jmse.printStackTrace();
exit();
}
try
{ Connection conn = null;
while ( true )
{
// Note that the XMLMessage is a Sonic Software extension
progress.message.jclient.XMLMessage xMsg = ((progress.message.jclient.Session) session).createXMLMessage();
StringBuffer msg = new StringBuffer();
// register the Oracle JDBC driver
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// obtain the default connection as scott/tiger
conn = DriverManager.getConnection("jdbc:oracle:thin:@dbyrk01:1521:METPD", "met", "met");
// create any subsequent statements as a REF CURSOR
((OracleConnection)conn).setCreateStatementAsRefCursor(true);
// create the statement
Statement stmt = conn.createStatement();
// do a simple query
// ResultSet rset = stmt.executeQuery("select sys.dbms_xmlquery.getXML('select total_amount from sales where order_code = 1501') XMLDATA from dual");
OracleXMLQuery qry = new OracleXMLQuery(conn,QueryName);
String xmlstring = qry.getXMLString();
msg.append(xmlstring);
xMsg.setText( msg.toString() );
// Queues usually are used for PERSISTENT messages.
// Hold messages for 30 minutes (1,800,000 millisecs).
sender.send( xMsg,
javax.jms.DeliveryMode.PERSISTENT,
javax.jms.Message.DEFAULT_PRIORITY,
MESSAGE_LIFESPAN);
exit();
}
}
catch ( javax.jms.JMSException jmse )
{
// Any undeliverable messages should be captured here.
// Perhaps JDBC could be used to update a database, write to a log file, etc.
System.out.println("Unable to send Message for Client:" + name);
jmse.printStackTrace();
}
catch (SQLException sqle)
{
sqle.printStackTrace();
}
// Close the connection.
exit();
}
// Cleanup resources and then exit
private void exit()
{
try
{
connect.close();
}
catch (javax.jms.JMSException jmse)
{
jmse.printStackTrace();
}
System.exit(0);
}
// Main program entry point
public static void main(String argv[]) {
String QueryStr = null ;
// Check parameters
for (int i = 0; i < argv.length; i++) {
String arg = argv[i];
System.out.println(arg);
QueryStr = arg;
System.out.println(QueryStr);
continue;
}
/* if (arg.equals("-cu")) {
if (i == argv.length - 1 || argv[i+1].startsWith("-")) {
System.err.println("error: missing customer number parameter");
System.exit(1);
}
clientId = argv[++i];
continue;
}
if (arg.equals("-cn")) {
if (i == argv.length - 1 || argv[i+1].startsWith("-")) {
System.err.println("error: missing customer name parameter");
System.exit(1);
}
name = argv[++i];
continue;
}
}
*/
// Start the JMS client for the "Talk".
XMLTESTMESSAGE talk = new XMLTESTMESSAGE();
talk.talker (broker, username, password, sQueue, clientId, name,QueryStr);
}
}/*@lineinfo:generated-code*/
|
|
|