Wicket
  1. Wicket
  2. WICKET-4034

calls to ResourceStreamLocator.locate() are causing serious performance issues when locating wicket resources

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Not a Problem
    • Affects Version/s: 1.5-RC7
    • Fix Version/s: None
    • Component/s: wicket
    • Environment:
      Linux MInt 11 Katya, JDK 1.6.0_26

      Description

      Calls to ResourceStreamLocator.locate() method for wicket resources (check bellow for searched resources) is causing serious performace issues.

      Resources searched:
      org/apache/wicket/markup/html/wicket-event_en_US.js
      org/apache/wicket/markup/html/wicket-event_en.js
      org/apache/wicket/markup/html/wicket-event.js
      org/apache/wicket/ajax/wicket-ajax_en_US.js
      org/apache/wicket/ajax/wicket-ajax_en.js
      org/apache/wicket/ajax/wicket-ajax.js

      Check quickstart for example (check log):
      run command: "mvn clean jetty:run" to see original performance (on my machine home page renders in 239 ms)
      run command "mvn -Dworkaround=true clean jetty:run" to see the performance with workaround (on my machine home page renders in 60ms)

        Activity

        Hide
        Armando Ota added a comment -

        cool will try ... sorry for jira post

        Show
        Armando Ota added a comment - cool will try ... sorry for jira post
        Hide
        Martin Grigorov added a comment -

        With this code and this description I would consider this ticket as Invalid.
        Wicket by default uses CachingResourceStreamLocator, see org.apache.wicket.settings.def.ResourceSettings.getResourceStreamLocator().
        With the two locators which you have setup in your Application class you don't use it.

        Just replace from:
        class WicketResourceLocator extends ResourceStreamLocator
        to
        class WicketResourceLocator extends CachingResourceStreamLocator
        public WicketResourceLocator()

        { super(new ResourceStreamLocator()); }

        and it should be OK.

        Show
        Martin Grigorov added a comment - With this code and this description I would consider this ticket as Invalid. Wicket by default uses CachingResourceStreamLocator, see org.apache.wicket.settings.def.ResourceSettings.getResourceStreamLocator(). With the two locators which you have setup in your Application class you don't use it. Just replace from: class WicketResourceLocator extends ResourceStreamLocator to class WicketResourceLocator extends CachingResourceStreamLocator public WicketResourceLocator() { super(new ResourceStreamLocator()); } and it should be OK.
        Hide
        Armando Ota added a comment -

        adding quicstart project

        Show
        Armando Ota added a comment - adding quicstart project

          People

          • Assignee:
            Unassigned
            Reporter:
            Armando Ota
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development