Как вы отслеживаете / отлаживаете Apache Camel или AOP-модифицированный код? - PullRequest
0 голосов
/ 19 января 2011

Я пытаюсь отладить веб-приложение, используя Apache Camel из Eclipse, и пока я «прослеживаю», я прихожу к точке, где Eclipse говорит, что исходный файл недоступен, и я вижу байт-код, показанный в Eclipse (где обычно Я вижу исходный код), но, по-видимому, я не могу перейти в этот байт-код (я пытаюсь «F6 / Step Over», но ничего не происходит) в любом случае (не то, чтобы это было так полезно по сравнению с исходным кодом).

Так как же ты должен проследить до такого зверя?

Мне интересно, не создают ли все эти уровни генерации кода / перехвата кода больше проблем, чем они пытаются решить. Кажется, что это полезно, пока все работает, но как только возникает проблема, все становится очень трудно диагностировать.

РЕДАКТИРОВАТЬ Я не хочу отслеживать самого Apache Camel . Я просто хочу отследить программу, которая использует Apache Camel, и я понимаю, что все быстро становится очень грязным: в основном вы теряете свою способность трассировки, потому что вы переходите от исходного кода Java к «чему-то».

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Для отладки кода, переданного прокси-сервером CGlib или JDK Proxy, перейдите в отладчик к строке, которая вызывает прокси-код ...

public void foo() {
  serviceWithProxy.bar(); // put breakpoint here
}

... сейчас, прежде чем войти в serviceWithProxy.bar(), нажмите Ctrl+T (Eclipse) и выберите тип, который вы хотите отладить (например, ServiceWithProxyImpl).Поместите точку останова в первую строку ServiceWithProxyImpl#bar (Eclipse проведет вас там автоматически) и нажмите «Продолжить» в отладчике.Это самый простой способ пропустить прокси во время отладки.

1 голос
/ 19 января 2011

Apache Camel не выполняет никаких манипуляций с байт-кодом или контрольно-измерительных приборов. Самое большее, он использует прокси из библиотеки JDK, если вы используете функцию Camel Proxy.

Таким образом, это должны быть другие библиотеки, которые приводят к тому, что отладчик eclipse не может войти в исходный код.

Весь исходный код Apache Camel распространяется в виде JAR-источников с использованием стандарта maven. Если вы используете maven, есть команда maven для загрузки JAR -source, которую, я полагаю, сможет использовать Eclipse.

Я не использую Eclipse, но использую IDEA, которая может автоматически загружать JAR-файлы-источника из репозиториев Maven.

...