use of nl.nn.adapterframework.jms.JmsMessageBrowser in project iaf by ibissource.
the class BrowseQueue method putBrowseQueue.
@POST
@RolesAllowed({ "IbisTester" })
@Path("jms/browse")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response putBrowseQueue(LinkedHashMap<String, Object> json) throws ApiException {
initBase(servletConfig);
Map<String, Object> returnMap = new HashMap<String, Object>();
String jmsRealm = null, destination = null, type = null;
for (Entry<String, Object> entry : json.entrySet()) {
String key = entry.getKey();
if (key.equalsIgnoreCase("realm")) {
jmsRealm = entry.getValue().toString();
}
if (key.equalsIgnoreCase("destination")) {
destination = entry.getValue().toString();
}
if (key.equalsIgnoreCase("type")) {
type = entry.getValue().toString();
}
}
if (jmsRealm == null)
throw new ApiException("No realm provided");
if (destination == null)
throw new ApiException("No destination provided");
if (type == null)
throw new ApiException("No type provided");
IMessageBrowsingIterator it = null;
try {
JmsMessageBrowser jmsBrowser = new JmsMessageBrowser();
jmsBrowser.setName("BrowseQueueAction");
jmsBrowser.setJmsRealm(jmsRealm);
jmsBrowser.setDestinationName(destination);
jmsBrowser.setDestinationType(type);
IMessageBrowser browser = jmsBrowser;
it = browser.getIterator();
List<Map<String, Object>> messages = new ArrayList<Map<String, Object>>();
while (it.hasNext()) {
IMessageBrowsingIteratorItem item = it.next();
Map<String, Object> message = new HashMap<String, Object>();
message.put("comment", item.getCommentString());
message.put("correlationId", item.getCorrelationId());
message.put("expiryDate", item.getExpiryDate());
message.put("host", item.getHost());
message.put("id", item.getId());
message.put("insertDate", item.getInsertDate());
message.put("type", item.getType());
message.put("label", item.getLabel());
messages.add(message);
}
log.debug("Browser returned " + messages.size() + " messages");
returnMap.put("numberOfMessages", messages.size());
returnMap.put("messages", messages);
} catch (Exception e) {
throw new ApiException("Error occured browsing messages: " + e.getMessage());
} finally {
try {
if (it != null)
it.close();
} catch (ListenerException e) {
log.error(e);
}
}
return Response.status(Response.Status.OK).entity(returnMap).build();
}
use of nl.nn.adapterframework.jms.JmsMessageBrowser in project iaf by ibissource.
the class BrowseQueueExecute method executeSub.
public ActionForward executeSub(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
// Initialize action
initAction(request);
// -------------------------------
if (isCancelled(request)) {
log.debug("browseQueue was cancelled");
removeFormBean(mapping, request);
return (mapping.findForward("cancel"));
}
// Retrieve form content
// ---------------------
IniDynaActionForm browseQueueForm = (IniDynaActionForm) form;
String form_jmsRealm = (String) browseQueueForm.get("jmsRealm");
String form_destinationName = (String) browseQueueForm.get("destinationName");
String form_destinationType = (String) browseQueueForm.get("destinationType");
boolean form_numberOfMessagesOnly = false;
boolean form_showPayload = false;
if (browseQueueForm.get("numberOfMessagesOnly") != null)
form_numberOfMessagesOnly = ((Boolean) browseQueueForm.get("numberOfMessagesOnly")).booleanValue();
if (browseQueueForm.get("showPayload") != null)
form_showPayload = ((Boolean) browseQueueForm.get("showPayload")).booleanValue();
// initiate MessageSender
JmsMessageBrowser jmsBrowser = new JmsMessageBrowser();
jmsBrowser.setName("BrowseQueueAction");
jmsBrowser.setJmsRealm(form_jmsRealm);
jmsBrowser.setDestinationName(form_destinationName);
jmsBrowser.setDestinationType(form_destinationType);
IMessageBrowser browser = jmsBrowser;
IMessageBrowsingIterator it = null;
try {
it = browser.getIterator();
List messages = new ArrayList();
while (it.hasNext()) {
messages.add(it.next());
}
log.debug("Browser returned " + messages.size() + " messages");
browseQueueForm.set("numberOfMessages", Integer.toString(messages.size()));
if (!form_numberOfMessagesOnly) {
/*
try {
for (int i = 0; i < messages.size(); i++) {
Message msg = (Message) messages.get(i);
if (msg instanceof TextMessage) {
TextMessage tm = (TextMessage) msg;
if (log.isDebugEnabled())
log.debug("Found message " + tm.getText());
}
}
} catch (JMSException je) {
log.error(je);
errors.add(
"",
new ActionError(
"errors.generic",
"error occured browsing messages:" + je.getMessage()));
}
*/
browseQueueForm.set("messages", messages);
} else
browseQueueForm.set("messages", new ArrayList());
} catch (ListenerException e) {
error("Error occured browsing messages", e);
} finally {
try {
if (it != null) {
it.close();
}
} catch (ListenerException e1) {
log.error(e1);
}
}
// Report any errors we have discovered back to the original form
if (!errors.isEmpty()) {
StoreFormData(browseQueueForm);
saveErrors(request, errors);
return (new ActionForward(mapping.getInput()));
}
// Successfull: store cookie
String cookieValue = "";
cookieValue += "jmsRealm=\"" + form_jmsRealm + "\"";
// separator
cookieValue += " ";
cookieValue += "destinationName=\"" + form_destinationName + "\"";
// separator
cookieValue += " ";
cookieValue += "destinationType=\"" + form_destinationType + "\"";
// separator
cookieValue += " ";
cookieValue += "showPayload=\"" + form_showPayload + "\"";
log.debug("*** value : " + AppConstants.getInstance().getString("WEB_QBROWSECOOKIE_NAME", "WEB_QBROWSECOOKIE"));
Cookie sendJmsCookie = new Cookie(AppConstants.getInstance().getString("WEB_QBROWSECOOKIE_NAME", "WEB_QBROWSECOOKIE"), cookieValue);
sendJmsCookie.setMaxAge(Integer.MAX_VALUE);
log.debug("Store cookie for " + request.getServletPath() + " cookieName[" + sendJmsCookie.getName() + "] " + " cookieValue[" + new StringTagger(cookieValue).toString() + "]");
try {
response.addCookie(sendJmsCookie);
} catch (Throwable e) {
log.warn("unable to add cookie to request. cookie value [" + sendJmsCookie.getValue() + "]");
}
// Forward control to the specified success URI
log.debug("forward to success");
return (mapping.findForward("success"));
}
use of nl.nn.adapterframework.jms.JmsMessageBrowser in project iaf by ibissource.
the class ShowConfigurationStatus method mapAdapterReceivers.
private ArrayList<Object> mapAdapterReceivers(Adapter adapter, boolean showPendingMsgCount) {
ArrayList<Object> receivers = new ArrayList<Object>();
Iterator<?> recIt = adapter.getReceiverIterator();
if (recIt.hasNext()) {
while (recIt.hasNext()) {
IReceiver receiver = (IReceiver) recIt.next();
Map<String, Object> receiverInfo = new HashMap<String, Object>();
RunStateEnum receiverRunState = receiver.getRunState();
receiverInfo.put("started", receiverRunState.equals(RunStateEnum.STARTED));
receiverInfo.put("state", receiverRunState.toString().toLowerCase().replace("*", ""));
receiverInfo.put("name", receiver.getName());
receiverInfo.put("class", ClassUtils.nameOf(receiver));
Map<String, Object> messages = new HashMap<String, Object>(3);
messages.put("received", receiver.getMessagesReceived());
messages.put("retried", receiver.getMessagesRetried());
messages.put("rejected", receiver.getMessagesRejected());
receiverInfo.put("messages", messages);
ISender sender = null;
if (receiver instanceof ReceiverBase) {
ReceiverBase rb = (ReceiverBase) receiver;
IListener listener = rb.getListener();
receiverInfo.put("listenerClass", ClassUtils.nameOf(listener));
if (listener instanceof HasPhysicalDestination) {
String pd = ((HasPhysicalDestination) rb.getListener()).getPhysicalDestinationName();
receiverInfo.put("listenerDestination", pd);
}
if (listener instanceof HasSender) {
sender = ((HasSender) listener).getSender();
}
// receiverInfo.put("hasInprocessStorage", ""+(rb.getInProcessStorage()!=null));
ITransactionalStorage ts;
ts = rb.getErrorStorage();
receiverInfo.put("hasErrorStorage", (ts != null));
if (ts != null) {
try {
if (showCountErrorStore) {
receiverInfo.put("errorStorageCount", ts.getMessageCount());
} else {
receiverInfo.put("errorStorageCount", "?");
}
} catch (Exception e) {
log.warn(e);
receiverInfo.put("errorStorageCount", "error");
}
}
ts = rb.getMessageLog();
receiverInfo.put("hasMessageLog", (ts != null));
if (ts != null) {
try {
if (showCountMessageLog) {
receiverInfo.put("messageLogCount", ts.getMessageCount());
} else {
receiverInfo.put("messageLogCount", "?");
}
} catch (Exception e) {
log.warn(e);
receiverInfo.put("messageLogCount", "error");
}
}
boolean isRestListener = (listener instanceof RestListener);
receiverInfo.put("isRestListener", isRestListener);
if (isRestListener) {
RestListener rl = (RestListener) listener;
receiverInfo.put("restUriPattern", rl.getRestUriPattern());
receiverInfo.put("isView", (rl.isView() == null ? false : rl.isView()));
}
if ((listener instanceof JmsListenerBase) && showPendingMsgCount) {
JmsListenerBase jlb = (JmsListenerBase) listener;
JmsMessageBrowser jmsBrowser;
if (StringUtils.isEmpty(jlb.getMessageSelector())) {
jmsBrowser = new JmsMessageBrowser();
} else {
jmsBrowser = new JmsMessageBrowser(jlb.getMessageSelector());
}
jmsBrowser.setName("MessageBrowser_" + jlb.getName());
jmsBrowser.setJmsRealm(jlb.getJmsRealName());
jmsBrowser.setDestinationName(jlb.getDestinationName());
jmsBrowser.setDestinationType(jlb.getDestinationType());
String numMsgs;
try {
int messageCount = jmsBrowser.getMessageCount();
numMsgs = String.valueOf(messageCount);
} catch (Throwable t) {
log.warn(t);
numMsgs = "?";
}
receiverInfo.put("pendingMessagesCount", numMsgs);
}
boolean isEsbJmsFFListener = false;
if (listener instanceof EsbJmsListener) {
EsbJmsListener ejl = (EsbJmsListener) listener;
if (ejl.getMessageProtocol().equalsIgnoreCase("FF")) {
isEsbJmsFFListener = true;
}
if (showPendingMsgCount) {
String esbNumMsgs = EsbUtils.getQueueMessageCount(ejl);
if (esbNumMsgs == null) {
esbNumMsgs = "?";
}
receiverInfo.put("esbPendingMessagesCount", esbNumMsgs);
}
}
receiverInfo.put("isEsbJmsFFListener", isEsbJmsFFListener);
}
if (receiver instanceof HasSender) {
ISender rsender = ((HasSender) receiver).getSender();
if (rsender != null) {
// this sender has preference, but avoid overwriting listeners sender with null
sender = rsender;
}
}
if (sender != null) {
receiverInfo.put("senderName", sender.getName());
receiverInfo.put("senderClass", ClassUtils.nameOf(sender));
if (sender instanceof HasPhysicalDestination) {
String pd = ((HasPhysicalDestination) sender).getPhysicalDestinationName();
receiverInfo.put("senderDestination", pd);
}
}
if (receiver instanceof IThreadCountControllable) {
IThreadCountControllable tcc = (IThreadCountControllable) receiver;
if (tcc.isThreadCountReadable()) {
receiverInfo.put("threadCount", tcc.getCurrentThreadCount());
receiverInfo.put("maxThreadCount", tcc.getMaxThreadCount());
}
if (tcc.isThreadCountControllable()) {
receiverInfo.put("threadCountControllable", "true");
}
}
receivers.add(receiverInfo);
}
}
return receivers;
}
use of nl.nn.adapterframework.jms.JmsMessageBrowser in project iaf by ibissource.
the class ShowConfigurationStatus method toReceiversXml.
private XmlBuilder toReceiversXml(Configuration configurationSelected, Adapter adapter, ShowConfigurationStatusManager showConfigurationStatusManager, ShowConfigurationStatusAdapterManager showConfigurationStatusAdapterManager) {
Iterator recIt = adapter.getReceiverIterator();
if (!recIt.hasNext()) {
return null;
}
XmlBuilder receiversXML = new XmlBuilder("receivers");
while (recIt.hasNext()) {
IReceiver receiver = (IReceiver) recIt.next();
XmlBuilder receiverXML = new XmlBuilder("receiver");
receiversXML.addSubElement(receiverXML);
RunStateEnum receiverRunState = receiver.getRunState();
receiverXML.addAttribute("isStarted", "" + (receiverRunState.equals(RunStateEnum.STARTED)));
receiverXML.addAttribute("state", receiverRunState.toString());
if (receiverRunState.equals(RunStateEnum.STARTING)) {
showConfigurationStatusManager.countReceiverStateStarting++;
} else if ((receiverRunState.equals(RunStateEnum.STARTED))) {
showConfigurationStatusManager.countReceiverStateStarted++;
} else if ((receiverRunState.equals(RunStateEnum.STOPPING))) {
showConfigurationStatusManager.countReceiverStateStopping++;
} else if ((receiverRunState.equals(RunStateEnum.STOPPED))) {
showConfigurationStatusManager.countReceiverStateStopped++;
} else if ((receiverRunState.equals(RunStateEnum.ERROR))) {
showConfigurationStatusManager.countReceiverStateError++;
}
if (!showConfigurationStatusAdapterManager.stateAlert && !(receiverRunState.equals(RunStateEnum.STARTED))) {
showConfigurationStatusAdapterManager.stateAlert = true;
}
receiverXML.addAttribute("name", receiver.getName());
receiverXML.addAttribute("class", ClassUtils.nameOf(receiver));
receiverXML.addAttribute("messagesReceived", "" + receiver.getMessagesReceived());
receiverXML.addAttribute("messagesRetried", "" + receiver.getMessagesRetried());
receiverXML.addAttribute("messagesRejected", "" + receiver.getMessagesRejected());
if (configurationSelected != null) {
ISender sender = null;
if (receiver instanceof ReceiverBase) {
ReceiverBase rb = (ReceiverBase) receiver;
IListener listener = rb.getListener();
receiverXML.addAttribute("listenerClass", ClassUtils.nameOf(listener));
if (listener instanceof HasPhysicalDestination) {
String pd = ((HasPhysicalDestination) rb.getListener()).getPhysicalDestinationName();
receiverXML.addAttribute("listenerDestination", pd);
}
if (listener instanceof HasSender) {
sender = ((HasSender) listener).getSender();
}
ITransactionalStorage ts;
ts = rb.getErrorStorage();
receiverXML.addAttribute("hasErrorStorage", "" + (ts != null));
if (ts != null) {
try {
if (SHOW_COUNT_ERRORSTORE) {
receiverXML.addAttribute("errorStorageCount", ts.getMessageCount());
} else {
receiverXML.addAttribute("errorStorageCount", "?");
}
} catch (Exception e) {
log.warn(e);
receiverXML.addAttribute("errorStorageCount", "error");
}
}
ts = rb.getMessageLog();
receiverXML.addAttribute("hasMessageLog", "" + (ts != null));
if (ts != null) {
try {
if (SHOW_COUNT_MESSAGELOG) {
receiverXML.addAttribute("messageLogCount", ts.getMessageCount());
} else {
receiverXML.addAttribute("messageLogCount", "?");
}
} catch (Exception e) {
log.warn(e);
receiverXML.addAttribute("messageLogCount", "error");
}
}
boolean isRestListener = (listener instanceof RestListener);
receiverXML.addAttribute("isRestListener", isRestListener);
if (isRestListener) {
RestListener rl = (RestListener) listener;
receiverXML.addAttribute("restUriPattern", rl.getRestUriPattern());
receiverXML.addAttribute("isView", (rl.isView() == null ? false : rl.isView()));
String matchingPattern = RestServiceDispatcher.getInstance().findMatchingPattern("/" + rl.getUriPattern());
receiverXML.addAttribute("isAvailable", (matchingPattern == null ? false : true));
}
if (showConfigurationStatusManager.count) {
if (listener instanceof JmsListenerBase) {
JmsListenerBase jlb = (JmsListenerBase) listener;
JmsMessageBrowser jmsBrowser;
if (StringUtils.isEmpty(jlb.getMessageSelector())) {
jmsBrowser = new JmsMessageBrowser();
} else {
jmsBrowser = new JmsMessageBrowser(jlb.getMessageSelector());
}
jmsBrowser.setName("MessageBrowser_" + jlb.getName());
jmsBrowser.setJmsRealm(jlb.getJmsRealName());
jmsBrowser.setDestinationName(jlb.getDestinationName());
jmsBrowser.setDestinationType(jlb.getDestinationType());
String numMsgs;
try {
int messageCount = jmsBrowser.getMessageCount();
numMsgs = String.valueOf(messageCount);
} catch (Throwable t) {
log.warn(t);
numMsgs = "?";
}
receiverXML.addAttribute("pendingMessagesCount", numMsgs);
}
}
boolean isEsbJmsFFListener = false;
if (listener instanceof EsbJmsListener) {
EsbJmsListener ejl = (EsbJmsListener) listener;
if ("FF".equalsIgnoreCase(ejl.getMessageProtocol())) {
isEsbJmsFFListener = true;
}
if (showConfigurationStatusManager.count) {
String esbNumMsgs = EsbUtils.getQueueMessageCount(ejl);
if (esbNumMsgs == null) {
esbNumMsgs = "?";
}
receiverXML.addAttribute("esbPendingMessagesCount", esbNumMsgs);
}
}
receiverXML.addAttribute("isEsbJmsFFListener", isEsbJmsFFListener);
}
if (receiver instanceof HasSender) {
ISender rsender = ((HasSender) receiver).getSender();
if (rsender != null) {
// this sender has preference, but
// avoid overwriting listeners
// sender with null
sender = rsender;
}
}
if (sender != null) {
receiverXML.addAttribute("senderName", sender.getName());
receiverXML.addAttribute("senderClass", ClassUtils.nameOf(sender));
if (sender instanceof HasPhysicalDestination) {
String pd = ((HasPhysicalDestination) sender).getPhysicalDestinationName();
receiverXML.addAttribute("senderDestination", pd);
}
}
if (receiver instanceof IThreadCountControllable) {
IThreadCountControllable tcc = (IThreadCountControllable) receiver;
if (tcc.isThreadCountReadable()) {
receiverXML.addAttribute("threadCount", tcc.getCurrentThreadCount() + "");
receiverXML.addAttribute("maxThreadCount", tcc.getMaxThreadCount() + "");
}
if (tcc.isThreadCountControllable()) {
receiverXML.addAttribute("threadCountControllable", "true");
}
}
}
}
return receiversXML;
}
Aggregations