Hi Tim,
Thanks for taking a look at my code. I will give what I think is relevent code
since the entire application is a bit large. Let me know if you need anything
else.
Keep in mind I am in a development and debug mode so the code is a bit sloppy
and inefficient.
destinations-service.xml
<mbean code="org.jboss.jms.server.destination.Queue"
name="jboss.messaging.destination:service=Queue,name=requestQueue"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends
optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer
80000
20000
20000
<mbean code="org.jboss.jms.server.destination.Queue"
name="jboss.messaging.destination:service=Queue,name=responseQueue"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends
optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer
80000
20000
20000
ejb-jar.xml
<message-driven>
<ejb-name>CountySearch</ejb-name>
<ejb-class>com.oss.landex.retrieval.ejb.messagebean.CountySearch</ejb-class>
<transaction-type>Container</transaction-type>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
</message-driven>
jsp that requests data
try
{
String sessionKey = request.getRequestedSessionId() +
(100000 + System.currentTimeMillis()%100000);
int intCounties = cdCountyData.sendDataRequest(sessionKey,
dataRequest);
dataResponse = cdCountyData.getDataResponse(sessionKey,
intCounties);
}
catch (RemoteException e)
{
e.printStackTrace();
}
ejb that sends a message to the request queue and gets data from the response
queue.
public int sendDataRequest(String inputSessionKey, DataRequest
inputDataRequest)
{
int returnValue = 0;
String xmlDataRequest = null;
System.out.print("CountyDataBean.sendDataRequest method started");
if (inputDataRequest == null || inputDataRequest.getName() == null
|| inputDataRequest.getName().equalsIgnoreCase(""))
{
}
else
{
dmcConverter = new DataModelConverter();
xmlDataRequest = dmcConverter
.convertDataRequestObjectToDataRequestXml(inputDataRequest);
returnValue = sendXmlData(inputSessionKey, xmlDataRequest);
}
return returnValue;
}
public int sendXmlData(String inputSessionKey, String inputXmlDataRequest)
{
int returnValue = 0;
System.out.print("CountyDataBean.sendXmlData method started");
!!! --- lot of irrelevant code here --- !!!
try
{
ConnectionFactory connectionFactory = null;
String queueName = "/queue/requestQueue";
InitialContext initialContext = new InitialContext();
Queue queue = (Queue) initialContext.lookup(queueName);
connectionFactory = (ConnectionFactory)
initialContext.lookup("java:/JmsXA");
initialContext.close();
Session session = null;
connection = connectionFactory.createConnection();
connection.start();
// conn = getConnection();
session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(queue);
TextMessage textMessage =
session.createTextMessage(sHttpRequest);
textMessage.setStringProperty("SessionKey", inputSessionKey);
textMessage.setStringProperty("CountyId", sRemoteSiteId);
textMessage.setStringProperty("CountyName",
remRemoteSite.getCounty());
messageProducer.send(textMessage, DeliveryMode.NON_PERSISTENT,
9, 60000);
returnValue = returnValue + 1;
System.out.println("CountyDataBean.sendXmlData -" +
sHttpRequest + " sent to " + queueName);
messageProducer.close();
session.close();
}
catch (NamingException e)
{
e.printStackTrace();
}
catch (JMSException e)
{
e.printStackTrace();
}
finally
{
if (connection != null)
{
try
{
connection.close();
}
catch (JMSException e)
{
e.printStackTrace();
}
}
}
}
return returnValue;
}
public DataResponse getDataResponse(String inputSessionKey, int
inputcounties)
{
DataResponse returnValue = null;
CountySearchResult csrCountySearchResult = null;
CountiesSearchResult csrCountiesSearchResult = null;
returnValue = new DataResponse();
returnValue.setName("CountiesSearchResult");
returnValue.setReturnType("CountiesSearchResult Object");
csrCountiesSearchResult = new CountiesSearchResult();
DataResponse drDataResponse = null;
String responseTextMessageText = null;
javax.jms.Connection connection = null;
try
{
ConnectionFactory connectionFactory = null;
String queueName = "/queue/responseQueue";
InitialContext initialContext = new InitialContext();
Queue queue = (Queue)initialContext.lookup(queueName);
connectionFactory = (ConnectionFactory)
initialContext.lookup("java:/JmsXA");
initialContext.close();
Session session = null;
connection = connectionFactory.createConnection();
connection.start();
// conn = getConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
String messageSelector = "SessionKey='" + inputSessionKey + "'";
// MessageConsumer messageConsumer = session.createConsumer(queue);
MessageConsumer messageConsumer = session.createConsumer(queue,
messageSelector);
javax.jms.Message responseMessage = null;
BytesMessage responseBytesMessage = null;
ObjectMessage responseObjectMessage = null;
TextMessage responseTextMessage = null;
// String responseTextMessageText = null;
long startTime = System.currentTimeMillis();
int messagesExpected = inputcounties;
long waitTime = 60000; // 60 seconds
while(messagesExpected > 0 && waitTime > 0 )
{
responseBytesMessage = null;
responseObjectMessage = null;
responseTextMessage = null;
System.out.println("CountyDataBean.getDataResponse Ready to get
response message");
responseMessage = messageConsumer.receive(waitTime);
System.out.println("CountyDataBean.getDataResponse Ready got
response message");
!!! --- lot of irrelevant code here --- !!!
messageConsumer.close();
session.close();
}
catch (NamingException e)
{
e.printStackTrace();
}
catch (JMSException e)
{
e.printStackTrace();
}
finally
{
if (connection != null)
{
try
{
connection.close();
}
catch (JMSException e)
{
e.printStackTrace();
}
}
}
return returnValue;
}
Message driven bean
public void onMessage(Message inputMessage)
{
System.out.println("CountySearch.onMessage started");
Session session = null;
Connection connection = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
DataOutputStream dataOutputStream = null;
String inputLine = null;
StringBuffer responseMessage = null;
URL urlRemoteSite = null;
HttpURLConnection httpConnection = null;
String sServerUrl = null;
String sPostParameters = null;
TextMessage requestTextMessage = null;
// ObjectMessage responseObjectMessage = null;
TextMessage responseTextMessage = null;
try
{
requestTextMessage = (TextMessage) inputMessage;
String htmlRequest = requestTextMessage.getText();
System.out.println("CountySearch.onMessage - message " + htmlRequest
+ " received");
if (htmlRequest.indexOf("?") == -1)
{
sServerUrl = htmlRequest;
sPostParameters = "";
}
else
{
sServerUrl = htmlRequest.substring(0, htmlRequest
.indexOf("?"));
sPostParameters = htmlRequest.substring(htmlRequest
.indexOf("?") + 1);
if (sPostParameters.indexOf("<") == -1)
{
}
else
{
sPostParameters = sPostParameters.substring(0,
sPostParameters.indexOf("<"))
+ URLEncoder.encode(sPostParameters
.substring(sPostParameters.indexOf("<")),
"UTF-8");
}
}
urlRemoteSite = new URL(sServerUrl);
httpConnection = (HttpURLConnection) urlRemoteSite.openConnection();
httpConnection.setDoInput(true);
httpConnection.setDoOutput(true);
httpConnection.setUseCaches(false);
// set request method
httpConnection.setRequestMethod("POST");
// set request type
httpConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
httpConnection.setRequestProperty("Content-Length", sPostParameters
.length()
+ "");
// Send POST output.
dataOutputStream = new DataOutputStream(httpConnection
.getOutputStream());
dataOutputStream.writeBytes(sPostParameters);
dataOutputStream.flush();
dataOutputStream.close();
inputStreamReader = new InputStreamReader(httpConnection
.getInputStream());
// Get response data.
bufferedReader = new BufferedReader(inputStreamReader);
responseMessage = new StringBuffer("");
while ((inputLine = bufferedReader.readLine()) != null)
{
responseMessage.append(inputLine);
}
bufferedReader.close();
ConnectionFactory connectionFactory = null;
String queueName = "/queue/responseQueue";
InitialContext initialContext = new InitialContext();
Queue queue = (Queue) initialContext.lookup(queueName);
connectionFactory = (ConnectionFactory) initialContext
.lookup("java:/JmsXA");
initialContext.close();
connection = connectionFactory.createConnection();
connection.start();
// conn = getConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(queue);
responseTextMessage =
session.createTextMessage(responseMessage.toString());
responseTextMessage.setStringProperty("SessionKey",
requestTextMessage.getStringProperty("SessionKey"));
responseTextMessage.setStringProperty("CountyId",
requestTextMessage.getStringProperty("CountyId"));
responseTextMessage.setStringProperty("CountyName",
requestTextMessage.getStringProperty("CountyName"));
messageProducer.send(responseTextMessage,
DeliveryMode.NON_PERSISTENT, 9, 60000);
System.out.println("CountySearch.onMessage TextMessage -" +
responseMessage.toString() + " sent to "
+ queueName);
messageProducer.close();
session.close();
}
catch (Exception e)
{
if (messageDrivenContext == null)
{
}
else
{
messageDrivenContext.setRollbackOnly();
}
e.printStackTrace();
System.out.println("The Message Driven Bean failed!");
}
finally
{
if (connection != null)
{
try
{
connection.close();
}
catch (Exception e)
{
System.out.println("Could not close the connection!" + e);
}
}
}
}
Hope this helps.
Let me know what else I can do.
Dennis
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3952717#3952717
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3952717
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user