Caught OgnlException при настройке свойства (Struts 2.0.14 и версия xwork 2.0.7) [дубликат]

Хорошо, чтобы дать некоторую перспективу, позвольте мне сравнить node.js с apache.

Apache - это многопоточный HTTP-сервер, для каждого запроса, который получает сервер, он создает отдельный поток который обрабатывает этот запрос.

Node.js, с другой стороны, управляется событиями, обрабатывая все запросы асинхронно из одного потока.

Когда A и B принимаются на apache, два потока которые обрабатывают запросы. Каждый обрабатывает запрос отдельно, каждый из которых ожидает результатов запроса перед обслуживанием страницы. Страница выполняется только до тех пор, пока запрос не будет завершен. Извлечение запроса блокируется, потому что сервер не может выполнить оставшуюся часть потока до получения результата.

В узле c.query обрабатывается асинхронно, что означает, что c.query извлекает результаты для A, это перескакивает для обработки c.query для B, и когда результаты приходят для A, он отправляет результаты для обратного вызова, который отправляет ответ. Node.js знает, как выполнить обратный вызов при завершении выборки.

На мой взгляд, поскольку это одна модель потока, нет способа переключиться с одного запроса на другой.

На самом деле сервер узлов делает именно это для вас все время.

Редактировать

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

  1. Открыть соединение с db, само соединение может быть выполнено асинхронно.
  2. Как только db подключен, запрос передается на сервер. Запросы могут быть поставлены в очередь.
  3. Основной цикл события получает уведомление о завершении с обратным вызовом или событием.
  4. Основной цикл выполняет ваш обработчик обратного вызова / события.

Обрабатываемые запросы на HTTP-сервер обрабатываются аналогичным образом. Архитектура внутреннего потока выглядит примерно так:

node.js event loop [/g3]

Потоки C ++ - это libuv, которые выполняют асинхронный ввод-вывод (диск или сеть). Цикл основного события продолжает выполняться после отправки запроса в пул потоков. Он может принимать больше запросов, так как он не ждет и не спит. SQL-запросы / HTTP-запросы / файловая система читают все, что происходит.

1
задан Roman C 29 August 2014 в 20:15
поделиться

2 ответа

excludeParams является свойством перехватчика params и должен быть указан как [

<interceptor-ref name="defaultStack">
    <param name="params.excludeParams">.*?checkbox.*</param>
</interceptor-ref>

Примечание. Если вы используете тэг interceptor-ref в действии, он переопределяет перехватчик по умолчанию стек и применимы только к этой конфигурации действий. Для общего использования рассмотрите создание настраиваемого стека перехватчиков и сделайте его по умолчанию для любой конфигурации действий.

Вы можете установить уровень ведения журнала для перехватчиков и OGNL. Используя log4j.properties

log4j.logger.com.opensymphony.xwork2.interceptor=ERROR
log4j.logger.com.opensymphony.xwork2.ognl=ERROR
1
ответ дан Roman C 23 August 2018 в 16:36
поделиться

I finnaly опрокинула ошибку, в то время как у меня было (как видно в вопросе выше парамагета-перехватчика defaultStack-ref, когда я переместил параметр в параметры перехватчика-ref name, он удалил ошибку

<interceptor-stack name="new_default_stack">
  <interceptor-ref name="params">
  <param name="paramNameMaxLength">250</param>
  <param name="excludeParams">.*?checkbox.*</param>
  </interceptor-ref>
  <interceptor-ref name="timeActions"/>
  <interceptor-ref name="defaultStack">

  </interceptor-ref>
  <interceptor-ref name="userProfile"/>
  <interceptor-ref name="valueStackManipulator"/>
  <interceptor-ref name="actionHistoryRecorder"/>
  <interceptor-ref name="cachingHeadersInterceptor"/>
</interceptor-stack>

это было место исключения исключений, которые необходимо было изменить.

0
ответ дан mpop 23 August 2018 в 16:36
поделиться
Другие вопросы по тегам:

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