barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

пятница, 29 августа 2014 г.

Дамп HTTP-запросов tcpdump-ом

Возникла необходимость посмотреть http-заголовки запросов, приходящих на weblogic. Т.к. вывести произвольный заголовок в access-log без написания кода невозможно (http://technotoddle.blogspot.ru/2010/07/logging-more-information-in-http-logs.html), я решил особо не заморачиваться и посмотреть траффик сниффером. На Win обычно использую для подобных целей Wireshark, но здесь я был на linux-сервере без иксов, поэтому первый раз в жизни воспользовался tcpdump-ом. Делается это так:
tcpdump -A -s 0 'tcp dst port 8080 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
(здесь сниффятся входящие запросы на порт 8080, если убрать dst, то получим в дампе и запросы, и ответы)
На выходе получил то, что хотел:
17:17:25.769127 IP xxx >yyy: . 297430808:297432068(1260) ack 1587021758 win 16695
E.....@.....
..I
..5.d....o.^...P.A7....GET /da/component/main?__dmfClientId=1409209083173&__dmfRequestId=__client1~~2&__dmfJumpType=jump&__dmfTzoff=-240 HTTP/1.1
Accept: */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727)
Accept-Encoding: gzip, deflate
Host: 10.2.5.53:8080
Connection: Keep-Alive
Cookie: appname=da;  ...
Спасибо https://sites.google.com/site/jimmyxu101/testing/use-tcpdump-to-monitor-http-traffic

пятница, 22 августа 2014 г.

WSO2 ESB: передача параметра из synapse-окружения в xslt

Задача

Есть некий xslt, выполняемый посредством xslt-медиатора. Есть некое свойство в default synapse-scope, хочется им воспользоваться внутри xslt.

Решение

Просто вызвать xpath-функцию syn:get-property изнутри xstl не получится - получим ругань на то, что функция отсутствует. Но есть другой вариант - через xslt-параметры. В xslt объявляем параметр:
<xsl:stylesheet ...>
<xsl:param name="MyParam" />
<!-- ... -->
</xsl:stylesheet>
А при вызове xslt-медиатора передать нужно значение в этот параметр:
<xslt key="...">
<property name="MyParam" expression="get-property('xxx')"/>
</xslt>

Ошибка java.lang.NullPointerException в классе ClassFinderMetaDataEnumaration при старте веб-приложения на weblogic

Проблема

При старте веб-приложения на weblogic 10.3.5 падает ошибка:
weblogic.application.ModuleException: Failed to load webapp: 'xxx'
at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:393)
at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:176)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:517)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
Truncated. see log file for complete stacktrace
Caused By: java.lang.NullPointerException at weblogic.application.utils.ClassFinderMetaDataEnumaration.hasMoreElements(ClassFinderMetaDataEnumaration.java:32)
at weblogic.servlet.internal.WebAnnotationProcessorImpl.getAnnotatedClasses(WebAnnotationProcessorImpl.java:139)
at weblogic.servlet.internal.War.getAnnotatedClasses(War.java:1038)
at weblogic.servlet.internal.WebAppServletContext$ServletContextWebAppHelper.getAnnotatedClasses(WebAppServletContext.java:3833)
at weblogic.servlet.internal.WebAnnotationProcessorImpl.processAnnotations(WebAnnotationProcessorImpl.java:84)
Truncated. see log file for complete stacktrace
Причина

В приложении был класс класс Settings с вложенным статическим приватным классом Settings.PropertyNames. Не было времени разбираться, что именно мешало weblogic'у, имя класса PropertyNames или же приватный доступ вложенного статического класса, но после того, как я убрал этот класс, приложение начало стартовать.