Как я могу кэшировать упорядоченный SOAP XML, сгенерированный Apache CXF для конкретного Объекта Java улучшить производительность?

Другой (и, на мой взгляд, правильный) метод - использовать константу __FILE__, если вы не любите полагаться на

Другой (и, на мой взгляд, правильный) метод - использовать константу [111], если вы не любите полагаться на [112] переменных.

$parts = explode(DIRECTORY_SEPARATOR, __FILE__);
$fileName = end($parts);
echo $fileName;

О магии и предопределенных константах: 1 , 2 .

SERVER
переменных.

[110]

О магии и предопределенных константах: 1 , 2 .

5
задан blak3r 16 June 2009 в 16:08
поделиться

3 ответа

В протоколе SOAP нет строгих требований, согласно которым для обработки конечных точек SOAP сервера или клиента необходимо использовать такую ​​структуру, как CXF. Мы просто столкнулись с взаимоблокировками клиентских потоков при использовании клиента SOAP на базе Axis 1.4 для связи с сервером на базе Axis 1.1 и исправили их, отказавшись от Axis и выполняя запросы в написанном вручную коде. Нам пришлось солгать серверу Axis, сказав, что у нас все еще есть клиент Axis, но мы не чувствовали раскаяния! ; -)

Точно так же вы должны иметь возможность обойти CXF и сгенерировать ответы SOAP в вашем собственном рукописном коде Java. Затем вы можете использовать карту для кеширования ваших упорядоченных (не проанализированных, сериализованные) XML-строк и устранить эту точку доступа.

Полностью согласен с Олафом в отношении REST: если вы полностью используете HTTP, то все это кэширование происходит бесплатно во всех промежуточных кэшах между вашим сервером и вашими клиентами. Это определенно то, что нужно учитывать для новых сервисов.

Обновление: CXF имеет понятие настраиваемых цепочек перехватчиков . Один тип исходящего перехватчика предназначен для фазы MARSHAL, поэтому похоже, что вы можете добавить этот кеш туда, не отказываясь от CXF. Может быть, эксперт CXF сможет проверить это для нас?

В CXF есть понятие настраиваемых цепочек перехватчиков . Один тип исходящего перехватчика предназначен для фазы MARSHAL, поэтому похоже, что вы можете добавить этот кеш туда, не отказываясь от CXF. Может быть, эксперт CXF сможет проверить это для нас?

В CXF есть понятие настраиваемых цепочек перехватчиков . Один тип исходящего перехватчика предназначен для фазы MARSHAL, поэтому похоже, что вы можете добавить этот кеш туда, не отказываясь от CXF. Может быть, эксперт CXF сможет проверить это для нас?

0
ответ дан 15 December 2019 в 06:33
поделиться

Хорошо, это не совсем тот ответ, который вы ищете, но в любом случае: причина того, что REST используется в веб-сервисах с высоким трафиком (например, Google), заключается в том, что REST предназначен для кэширования - тогда как SOAP просто НЕ предназначен для кэширования.

SOAP в основном основан на (согласно определению HTTP) не кэшируемых POST-запросах, а REST использует GET, который легко кэшировать.

Вам нужно будет проверить SOAP ( POST), прежде чем он перейдет к фактическому веб-сервису, то есть с использованием прокси. «Стандартные» прокси-серверы обычно не осведомлены о синтаксисе SOAP.

IBM WebSphere Application Server может это делать

С уважением, Олаф

3
ответ дан 15 December 2019 в 06:33
поделиться

Объект Foo маршалируется из нашего объекта Java в ответ SOAP XML с помощью Apache CXF.
.. самый большой потребитель циклов ЦП. и поскольку наш объект Foo меняется не очень часто, повторная сортировка этого объекта каждый раз не требуется.

Нужно ли клиентскому приложению знать об изменениях в Foo немедленно или как можно скорее?

Почему бы не кэшировать его в на стороне потребителя / клиента? Дизайн, в котором вы вызываете один и тот же метод веб-службы сотни раз в секунду, вероятно, не самый лучший.

0
ответ дан 15 December 2019 в 06:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: