Другой (и, на мой взгляд, правильный) метод - использовать константу Другой (и, на мой взгляд, правильный) метод - использовать константу [111], если вы не любите полагаться на [112] переменных. __FILE__
, если вы не любите полагаться на
переменных.
SERVER$parts = explode(DIRECTORY_SEPARATOR, __FILE__);
$fileName = end($parts);
echo $fileName;
[110]
В протоколе 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 сможет проверить это для нас?Хорошо, это не совсем тот ответ, который вы ищете, но в любом случае: причина того, что REST используется в веб-сервисах с высоким трафиком (например, Google), заключается в том, что REST предназначен для кэширования - тогда как SOAP просто НЕ предназначен для кэширования.
SOAP в основном основан на (согласно определению HTTP) не кэшируемых POST-запросах, а REST использует GET, который легко кэшировать.
Вам нужно будет проверить SOAP ( POST), прежде чем он перейдет к фактическому веб-сервису, то есть с использованием прокси. «Стандартные» прокси-серверы обычно не осведомлены о синтаксисе SOAP.
IBM WebSphere Application Server может это делать
С уважением, Олаф
Объект Foo маршалируется из нашего объекта Java в ответ SOAP XML с помощью Apache CXF.
.. самый большой потребитель циклов ЦП. и поскольку наш объект Foo меняется не очень часто, повторная сортировка этого объекта каждый раз не требуется.
Нужно ли клиентскому приложению знать об изменениях в Foo немедленно или как можно скорее?
Почему бы не кэшировать его в на стороне потребителя / клиента? Дизайн, в котором вы вызываете один и тот же метод веб-службы сотни раз в секунду, вероятно, не самый лучший.