Struts Action Invocation Framework для Struts 1.3 - PullRequest
0 голосов
/ 24 октября 2010

Я пытаюсь интегрировать плагин SAIF, чтобы перехватить мои действия распорок.Я учусь на http://struts.sourceforge.net/saif/index.html

Я пишу конфигурацию, например:ошибка как это:

javax.servlet.UnavailableException: Specified RequestProcessor not compatible with saif.
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:402)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:966)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3996)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4266)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:448)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

Вы можете помочь мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Цитирование это сообщение из списка рассылки пользователей Struts:

Маловероятно, что SAIF будет работать с конфигурацией S1.3 по умолчанию, так как обработчик запросов другой - вы можно попробовать использовать старый запрос процессор, если ваше приложение не положитесь на него.

AFAICT SAIF не будет работать с ничего, кроме стандартного (старого) обработчик запросов, но это может быть можно взломать так, чтобы было.

1 голос
/ 24 октября 2010

Я раньше не работал с Struts Action Invocation Framework, но сообщение об исключительной ситуации мне знакомо по Tiles.Тайлс выдает сообщение, подобное этому: Specified RequestProcessor not compatible with TilesRequestProcessor, поэтому я думаю, что помимо привычного сообщения (в вашем случае Specified RequestProcessor not compatible with saif) есть также вероятность того, что причина будет той же.

Вот здесь article , который исправляет это в плагине Tiles.Может помочь вам.

Когда сервлет Struts инициализируется, он выполняет инициализацию всех плагинов.Сообщение должно исходить от метода init вашего плагина, и если оно совпадает с Tiles, то причиной должна быть проверка с Class.isAssignableFrom .

EDIT: Посмотрел исходный код для плагина SAIF и нашел его в нем:

protected void initRequestProcessorClass(ActionServlet servlet, ModuleConfig config) throws ServletException {
  .........
  .........
  ControllerConfig ctrlConfig = config.getControllerConfig();
  String configProcessorClassname = ctrlConfig.getProcessorClass();
  .........
  .........
  // Check if specified request processor is compatible with saif.
  try {
    Class saifProcessorClass = SAIFRequestProcessor.class;
    Class saifTilesProcessorClass = SAIFTilesRequestProcessor.class;
    Class configProcessorClass = Class.forName(configProcessorClassname);
    if (!saifProcessorClass.isAssignableFrom(configProcessorClass)
       && !saifTilesProcessorClass.isAssignableFrom(configProcessorClass)) {
      String msg = "Specified RequestProcessor not compatible with saif.";
      throw new ServletException(msg);
    }
  } catch (Exception ex) {
    throw new ServletException(ex);
  } 
  .........
  .........
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...