openjms Tomcat5

E

ErCipolla

I try to create a jms queue session in a HttpServlet.
And I receive this exception:

javax.jms.JMSException: Failed to createSession
java.rmi.ServerException: RemoteException occured in server thread;
nested exception is: java.rmi.UnmarshalException: error unmarshaling
arguments; nested exception is: java.net.MalformedURLException: no
protocol: Software


The same code works well in a normal java aplication, but not in a
servlet running in Tomcat 5.0.19.

import java.util.HashMap;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;

import org.apache.log4j.Logger;

/**
*
*/
public class Sender {

private Context context = null;
private QueueConnection connection = null;
private QueueSession session = null;
private QueueSender sender = null;
private String queueName = null;
private String broker = "JmsQueueConnectionFactory";
private Queue queue = null;
private HashMap messageMap = null;
private long timeToLive = 500;
private Logger logger = Logger.getLogger(Sender.class.getName());
/**
*
* @param context
* @param queueName
*/
public Sender(Context context, String queueName) {
try {
logger.info("Sender.Sender(): Sender created!");
this.queueName = queueName;
this.context = context;
initialize();
}
catch (Exception e) {
logger.fatal("Sender.Sender()" + e.toString());
}
}
/**
* Called to initialize the jms sender.
* @throws JFOSException
*/
private void initialize() throws JFOSException {
try {
logger.info("Sender.initialize(): Initialize sender for queue
" + queueName + " !");
//lookup the connection factory from the context
QueueConnectionFactory factory = (QueueConnectionFactory)
context.lookup(broker);
connection = factory.createQueueConnection();

//connection.setExceptionListener( new MyExceptionListener() );

connection.start();

try {
session = connection.createQueueSession(
false, Session.AUTO_ACKNOWLEDGE);

}
catch (JMSException jmse){
logger.fatal("Sender.initalize()" + jmse.toString());
session = connection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
}
//connection.start();
queue = (Queue) context.lookup(queueName);
sender = session.createSender(queue);
logger.info("Sender.initialize(): ready, on queue " + queueName +
" !");
}
catch (JMSException jmse) {
logger.fatal("JMSExecption");
logger.fatal("Sender.initalize()" + jmse.toString());
JFOSException jfosException = new JFOSException( 1,
"Sender.initailize()", jmse.toString(), jmse.getMessage() );
throw jfosException;
}
catch ( Exception e) {
logger.fatal("Sender.initalize()" + e.toString());
JFOSException jfosException = new JFOSException( 1,
"Sender.initailize()", e.toString(), e.getMessage() );
throw jfosException;
}
}
/**
* Called to create and send a JMS TextMessage to the destination.
* @param content
* @throws JFOSException
*/
public void sendMessage(String content) throws JFOSException {
TextMessage message = null;
try {
message = session.createTextMessage();
if ( message != null ) {
message.setJMSExpiration(timeToLive);
message.setText(content);
sender.send(message);
logger.debug("Sender.sendMessage(): Message sended!");
}
else
logger.error("Sender.sendMessage(): Message not created!");
}
catch (Exception e) {
logger.fatal("Sender.sendMessage()" + e.toString());
JFOSException jfosException = new JFOSException( 1,
"Sender.sendMessage()", e.toString(), e.getMessage() );
throw jfosException;
}
}
/**
* Called to send a JMS TextMessage to the destination.
* @param message
* @throws JFOSException
*/
public void sendMessage(Message message) throws JFOSException {
try {
TextMessage tmsg = null;
if ( message instanceof TextMessage ) {
tmsg = (TextMessage) message;
sender.send(message);
}
}
catch (JMSException e) {
logger.fatal("Sender.sendMessage()" + e.toString());
JFOSException jfosException = new JFOSException( 1,
"Sender.sendMessage()", e.toString(), e.getMessage() );
throw jfosException;
}
}
/**
* Called to close all connection and references.
*/
public void close() {
logger.info("Sender.close() : Cose Session and connection");
try {
if ( session != null ) {
session.close();
}
if ( connection != null ) {
connection.close();
}
}
catch ( Exception e ) {
logger.fatal("Sender.close()");
logger.fatal(e.toString());
}
finally {
session = null;
connection = null;
logger = null;
}
}
/**
* Listen to JFOSException
* @author master
* Sep 1, 2004
* Browser.java
*/
private class MyExceptionListener implements
javax.jms.ExceptionListener {
public void onException( javax.jms.JMSException e ) {
System.out.println(e.getMessage());
int cnt = 0;
while( true ) {
try {
close();
initialize();
break;
}
catch ( JFOSException e1 ) {
logger.fatal("Error :
MyExceptionListener.onException()");
logger.fatal(e1.toString());
try {
Thread.sleep( 10000 );
}
catch ( Exception e2 ) {}
}
}
}
}
}


Thanks for help!
by
robert
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,169
Latest member
ArturoOlne
Top