Трассировка, откуда пришло сообщение JMS - PullRequest
1 голос
/ 23 ноября 2010

Есть ли способ в javax.jms.Message API, чтобы получить информацию о том, откуда пришло Сообщение (из onMessage (Сообщение msg)) вызов?

ЯЯ имею в виду большой кусок нового кода, и я могу видеть, куда приходят сообщения, но было бы очень полезно найти трассировку стека, откуда приходят сообщения.

Трассировка, которую я получаюэто:

java.lang.Exception: Stack trace
    at java.lang.Thread.dumpStack(Thread.java:1206)
    at aaa.switch.serverobjects.SVSBean.activateDevice(SVSBean.java:377)
    at aaa.serverobjects.DeviceControlAdapter.activate(DeviceControlAdapter.java:659)
    at aaa.voiceswitch.serverobjects.SVSBean.activate(SVSBean.java:352)
    at aaa.service.DeviceControlServiceJMSMessageListener$1.run(DeviceControlServiceJMSMessageListener.java:237)
    at java.lang.Thread.run(Thread.java:619)

Что, очевидно, просто восходит к java.lang.thread, который действительно не помогает.

Ответы [ 2 ]

2 голосов
/ 23 ноября 2010

Я согласен, что это невозможно, но вот что я бы сделал.Если код, отправляющий сообщение, инкапсулирован в одном классе (например, в классе MyJMSSender), просто добавьте специальное свойство сообщения (например, «stacktrace») и поместите туда значение

Arrays.asList (new Throwable (). GetStackTrace ()).replace (",", "\ n")

Вы сможете напечатать это свойство на принимающей стороне и узнать, откуда пришло сообщение.

2 голосов
/ 23 ноября 2010

Нет, если ваша реализация JMS не встроена в вашу текущую JVM и не является однопоточной.Я не знаю ни одной реализации, которая бы работала подобным образом, и это, безусловно, было бы нетипично, поскольку JMS обычно используется для передачи сообщений между приложениями.

Поскольку это типичный случай, ваш стек будет ограничен вашим текущимнить в вашей виртуальной машине.Я не думаю, что есть какой-либо способ заставить стек включать информацию из другого (их) приложения (й) (например, JMS-сервер и отправляющее приложение).

...