* The simple browser will browse messages on a queue
*/
public class SimpleBrowser {
static public void main(String[] args) {
try {
CommandLine cmdline = new CommandLine(args);
if (cmdline.exists("help")) {
// the help option has been specified, print the usage
// information
usage();
System.exit(0);
} else if (cmdline.exists("queue")) {
// connect to the JNDI server and get a reference to
// root context
Hashtable props = new Hashtable();
String topic_name = cmdline.value("topic");
String host = "localhost";
String port = null;
String jndiname = "JndiServer";
String mode = null;
if (cmdline.exists("mode")) {
mode = cmdline.value("mode");
} else {
mode = "rmi";
}
String modeType =
RmiJndiInitialContextFactory.class.getName();
if (cmdline.exists("jndiport")) {
port = cmdline.value("jndiport");
}
if (cmdline.exists("jndihost")) {
host = cmdline.value("jndihost");
}
// override the default server name if specified on the
// command line.
if (cmdline.exists("jndiname")) {
jndiname = cmdline.value("jndiname");
}
if (mode.equals("ipc") || mode.equals("tcp")) {
if (port == null) {
port = "3035";
}
props.put(Context.PROVIDER_URL,
"tcp://" + host + ":" + port + "/");
modeType =
"org.exolab.jms.jndi.mipc.IpcJndiInitialContextFactory";
} else if (mode.equals("http")) {
System.out.println("Using HTTP");
/* CONNECTING BY WAY OF PROXY
Client needs to set these system properties if
it requires to go through a proxy for HTTP.
System.setProperty("http.proxyHost", host);
System.setProperty("http.proxyPort", port);
*/
/* CONNECTING FOR SSL TRANSACTIONS.
Client needs to set these system properties
if it requires to go through a proxy for HTTPS.
System.setProperty("https.proxyHost", "host");
System.setProperty("https.proxyPort", "port");
Client needs to pass in "-mode http -secure"
to use https
Client needs -Djavax.net.ssl.trustStore=cacerts
passed in. JSSE is required to make this work.
*/
String type = "http://";
if (cmdline.exists("secure")) {
if (port == null) {
port = "8443";
}
type = "https://";
modeType =
"org.exolab.jms.jndi.http.SslHttpJndiInitialContextFactory";
} else {
if (port == null) {
port = "8080";
}
modeType =
"org.exolab.jms.jndi.http.HttpJndiInitialContextFactory";
}
props.put(Context.PROVIDER_URL,
type + host + ":" + port + "/" +
"openjms/servlet/OpenJMSJndi");
String url = cmdline.value("url");
if (url == null) {
url = type + "localhost:8080";
}
// Client URL to allow server to send messages
// to registered consumers/receivers
System.getProperties().setProperty
(JndiConstants.HTTP_CLIENT_URL_PROPERTY, url);
} else {
if (port == null) {
port = "1099";
}
props.put(Context.PROVIDER_URL,
"rmi://" + host + ":" + port + "/" + jndiname);
}
System.err.println("Using provider url " + props.get(Context.PROVIDER_URL));
props.put(Context.INITIAL_CONTEXT_FACTORY, modeType);
Context context = new InitialContext(props);
String name = cmdline.value("queue");
if (name != null) {
// lookup the connection factory from the context
QueueConnectionFactory factory = (QueueConnectionFactory)
context.lookup("JmsQueueConnectionFactory");
// if we can't find the factory then throw an exception
if (factory == null) {
throw new RuntimeException(
"Failed to locate connection factory");
}
QueueConnection connection =
factory.createQueueConnection();
connection.start();
QueueSession session = connection.createQueueSession(
false, Session.AUTO_ACKNOWLEDGE);
// if the persistent flag is not specified then create the
// queue object otherwise look it up
Queue queue = null;
if (cmdline.exists("persistent")) {
queue = (Queue)context.lookup(name);
} else {
// The queue object is therefore created as non
// persistent.
queue = (Queue)session.createQueue(name);
}
// determine whether the summary flag has been set. By
// default it is false, which means the message details
// are displayed as they are browsed
boolean summary = false;
if (cmdline.exists("summary")) {
summary = true;
}
if (queue == null) {
getLogger().logError("Failed to create the queue " +
queue);
System.exit(-1);
}
String selector = "JMSPriority = 4";
QueueBrowser browser = null;
if (cmdline.exists("selector")) {
browser = session.createBrowser(queue, selector);
} else {
browser = session.createBrowser(queue);
}
// return the number of messages to receive
int count = -1;
if (cmdline.exists("count")) {
try {
count = Integer.parseInt(cmdline.value("count"));
} catch (Exception exception) {
System.err.println("Illegal count value");
System.exit(-1);
}
}