You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Simon van Wingerden <sv...@planet.nl> on 2010/11/08 22:31:20 UTC

App not responding

I'm busy to create an application with wicket just for fun and now I've 
got some strange behavior.
After clinking a couple of times the program hangs and after a while I 
get the error message:

ERROR - RequestCycle - org.apache.wicket.WicketRuntimeException: After 1 
minute the Pagemap null is still locked by: Thread[http-8080-24,5,main]

Can it be that the page is to big or something ?

It's a 3 layer app with Wicket, Spring and Hibernate.

Wicket version 1.4.12 and the server is tomcat 6.


Below the code of my HomePage as I think the error is in this page.
I use Panels that are replaced based on the given parameters.


package com.svw;

import com.svw.panels.SinglePagePanel;
import com.svw.panels.PagePanel;
import com.svw.panels.NewPagePanel;
import com.svw.panels.ChangesPanel;
import com.svw.panels.EditPagePanel;
import com.svw.panels.NewCategoryPanel;
import com.svw.model.Category;
import com.svw.panels.SearchPanel;
import com.svw.security.SignInPage;
import com.svw.security.SimWikiSession;
import com.svw.services.CategoriesService;
import com.svw.services.PagesService;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.spring.injection.annot.SpringBean;
import com.svw.services.UsersService;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;

/**
  * Homepage
  */
public class HomePage extends WebPage {

     private Panel panel = null;
     private static final long serialVersionUID = 1L;
     @SpringBean
     protected CategoriesService categoryService;
     @SpringBean
     protected UsersService userService;
     @SpringBean
     protected PagesService pagesService;

     /**
      * Constructor that is invoked when page is invoked without a session.
      *
      * @param parameters
      *            Page parameters
      */
     public HomePage(PageParameters parameters) {
         String categorieFromParameter = parameters.getString("category");
         String actionFromParameter = parameters.getString("action");
         String pageFromParameter = parameters.getString("page");


         List<String> listCategories = new ArrayList<String>();
         for (Category cat : categoryService.getCategories()) {
             listCategories.add(cat.getName());
         }

         createSiteMap();
         createContact();

         createCatories(listCategories);

         Link linkSearch = createSearchPage();

         Link linkChange = createChangesPage();

         Link link = createNewPage();
         securityOnlyAuthorsAndAdmins(link);

         Link linkNewCategory = createNewCategory();
         securityOnlyAdmins(linkNewCategory);


         Link logoutLink = createLogout();
         add(getPanel(categorieFromParameter, actionFromParameter, 
pageFromParameter));


         authorised();

     }

     private void createCatories(List<String> listCategories) {
         ListView listview = new ListView("listview", listCategories) {

             @Override
             protected void populateItem(ListItem item) {
                 PageParameters pp = new PageParameters();
                 pp.add("category", item.getModelObject().toString());
                 BookmarkablePageLink link = new 
BookmarkablePageLink("CategoryLink", HomePage.class, pp);
                 link.add(new Label("CategoriesCaption", item.getModel()));
                 item.add(link);
             }
         };
         add(listview);
     }

     private void createContact() {
         add(new Link("contact") {

             @Override
             public void onClick() {
                 Panel newPanel = new HomePanel("panelContainer", 
"Contact us", "<a href=\"mailto:svwpsv@gmail.com\">mail</a> creator of 
this program for suggestions or bugs.");
                 panel.replaceWith(newPanel);
                 panel = newPanel;
             }
         });
     }

     private void authorised() {
         //if not authorised log in
         if (SimWikiSession.get() == null || 
!SimWikiSession.get().isAuthenticated()) {
             setRedirect(true);
             setResponsePage(SignInPage.class);
         }
     }

     // Authentication roles
     private void securityOnlyAuthorsAndAdmins(Component comp) {
         if (SimWikiSession.get() != null && 
SimWikiSession.get().isAuthenticated()) {
             if (SimWikiSession.get().isReader()) {
                 comp.setVisible(false);
             }
         }
     }

     private void securityOnlyAdmins(Component comp) {
         if (SimWikiSession.get() != null && 
SimWikiSession.get().isAuthenticated()) {
             if (!SimWikiSession.get().isAdmin()) {
                 comp.setVisible(false);
             }
         }
     }

     private Link createNewPage() {
         Link link = new Link("newPage") {

             @Override
             public void onClick() {
                 Panel newPanel = new NewPagePanel("panelContainer");
                 panel.replaceWith(newPanel);
                 panel = newPanel;
             }
         };
         add(link);
         return link;
     }

     private Link createChangesPage() {
         Link link = new Link("changes") {

             @Override
             public void onClick() {
                 Panel newPanel = new ChangesPanel("panelContainer", 
SimWikiSession.get().getUser().getName());
                 panel.replaceWith(newPanel);
                 panel = newPanel;
             }
         };
         add(link);
         return link;
     }

     private Link createSearchPage() {
         Link link = new Link("search") {

             @Override
             public void onClick() {
                 Panel newPanel = new SearchPanel("panelContainer");
                 panel.replaceWith(newPanel);
                 panel = newPanel;
             }
         };
         add(link);
         return link;
     }

     private Link createNewCategory() {
         Link link = new Link("newCategory") {

             @Override
             public void onClick() {
                 Panel newPanel = new NewCategoryPanel("panelContainer");
                 panel.replaceWith(newPanel);
                 panel = newPanel;
             }
         };
         add(link);
         return link;
     }

     //log out
     private Link createLogout() {
         Link logoutLink = new Link("logOut") {

             @Override
             public void onClick() {
                 getSession().invalidate();
                 setRedirect(true);
                 setResponsePage(SignInPage.class);
             }
         };
         add(logoutLink);
         return logoutLink;
     }
     //SiteMap

     private void createSiteMap() {
         add(new Link("sitemap") {

             @Override
             public void onClick() {
                 Panel newPanel = new HomePanel("panelContainer", 
"Sitemap", "Nog niet geimplementeerd");
                 panel.replaceWith(newPanel);
                 panel = newPanel;
             }
         });
     }

     private Panel getPanel(String category, String action, String id) {
         Panel constructPanel = null;

         if (action == null) {
             if (category == null && id == null) {
                 constructPanel = new HomePanel("panelContainer", 
"Home", "Welcome on the simwiki");
             } else if (category == null && id != null) {
                 constructPanel = new SinglePagePanel("panelContainer", id);
             } else if (category != null && id == null) {
                 constructPanel = new PagePanel("panelContainer", category);
             } else if (category != null && id != null) {
             }

         } else if (action.equalsIgnoreCase("delete")) {
             if (category == null && id == null) {
                 //free not used
             } else if (category == null && id != null) {
                 //free not used
             } else if (category != null && id == null) {
                 //free not used
             } else if (category != null && id != null) {
                 //page=7&category=java
                 pagesService.delete(Long.parseLong(id), 
SimWikiSession.get().getUser().getName());
                 constructPanel = new PagePanel("panelContainer", category);
             }


         } else if (action.equalsIgnoreCase("edit")) {
             if (category == null && id == null) {
                 //free not used
             } else if (category == null && id != null) {
                 constructPanel = new EditPagePanel("panelContainer", 
Long.parseLong(id));
             } else if (category != null && id == null) {
                 //free not used
             } else if (category != null && id != null) {
                 //free not used
             }
         }

         if (constructPanel == null) {
             constructPanel = new HomePanel("panelContainer", "Home", 
"Welcome on the simwiki");
         }
         //needed for replace!
         this.panel = constructPanel;

         return panel;
     }
}

Regards,

Simon

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: App not responding

Posted by Igor Vaynberg <ig...@gmail.com>.
profile it and see what code takes more then a minute to complete

-igor

On Mon, Nov 8, 2010 at 1:31 PM, Simon van Wingerden <sv...@planet.nl> wrote:
> I'm busy to create an application with wicket just for fun and now I've got
> some strange behavior.
> After clinking a couple of times the program hangs and after a while I get
> the error message:
>
> ERROR - RequestCycle - org.apache.wicket.WicketRuntimeException: After 1
> minute the Pagemap null is still locked by: Thread[http-8080-24,5,main]
>
> Can it be that the page is to big or something ?
>
> It's a 3 layer app with Wicket, Spring and Hibernate.
>
> Wicket version 1.4.12 and the server is tomcat 6.
>
>
> Below the code of my HomePage as I think the error is in this page.
> I use Panels that are replaced based on the given parameters.
>
>
> package com.svw;
>
> import com.svw.panels.SinglePagePanel;
> import com.svw.panels.PagePanel;
> import com.svw.panels.NewPagePanel;
> import com.svw.panels.ChangesPanel;
> import com.svw.panels.EditPagePanel;
> import com.svw.panels.NewCategoryPanel;
> import com.svw.model.Category;
> import com.svw.panels.SearchPanel;
> import com.svw.security.SignInPage;
> import com.svw.security.SimWikiSession;
> import com.svw.services.CategoriesService;
> import com.svw.services.PagesService;
> import org.apache.wicket.markup.html.basic.Label;
> import org.apache.wicket.markup.html.WebPage;
> import org.apache.wicket.spring.injection.annot.SpringBean;
> import com.svw.services.UsersService;
> import java.util.ArrayList;
> import java.util.List;
> import org.apache.wicket.Component;
> import org.apache.wicket.PageParameters;
> import org.apache.wicket.markup.html.link.BookmarkablePageLink;
> import org.apache.wicket.markup.html.link.Link;
> import org.apache.wicket.markup.html.list.ListItem;
> import org.apache.wicket.markup.html.list.ListView;
> import org.apache.wicket.markup.html.panel.Panel;
>
> /**
>  * Homepage
>  */
> public class HomePage extends WebPage {
>
>    private Panel panel = null;
>    private static final long serialVersionUID = 1L;
>    @SpringBean
>    protected CategoriesService categoryService;
>    @SpringBean
>    protected UsersService userService;
>    @SpringBean
>    protected PagesService pagesService;
>
>    /**
>     * Constructor that is invoked when page is invoked without a session.
>     *
>     * @param parameters
>     *            Page parameters
>     */
>    public HomePage(PageParameters parameters) {
>        String categorieFromParameter = parameters.getString("category");
>        String actionFromParameter = parameters.getString("action");
>        String pageFromParameter = parameters.getString("page");
>
>
>        List<String> listCategories = new ArrayList<String>();
>        for (Category cat : categoryService.getCategories()) {
>            listCategories.add(cat.getName());
>        }
>
>        createSiteMap();
>        createContact();
>
>        createCatories(listCategories);
>
>        Link linkSearch = createSearchPage();
>
>        Link linkChange = createChangesPage();
>
>        Link link = createNewPage();
>        securityOnlyAuthorsAndAdmins(link);
>
>        Link linkNewCategory = createNewCategory();
>        securityOnlyAdmins(linkNewCategory);
>
>
>        Link logoutLink = createLogout();
>        add(getPanel(categorieFromParameter, actionFromParameter,
> pageFromParameter));
>
>
>        authorised();
>
>    }
>
>    private void createCatories(List<String> listCategories) {
>        ListView listview = new ListView("listview", listCategories) {
>
>            @Override
>            protected void populateItem(ListItem item) {
>                PageParameters pp = new PageParameters();
>                pp.add("category", item.getModelObject().toString());
>                BookmarkablePageLink link = new
> BookmarkablePageLink("CategoryLink", HomePage.class, pp);
>                link.add(new Label("CategoriesCaption", item.getModel()));
>                item.add(link);
>            }
>        };
>        add(listview);
>    }
>
>    private void createContact() {
>        add(new Link("contact") {
>
>            @Override
>            public void onClick() {
>                Panel newPanel = new HomePanel("panelContainer", "Contact
> us", "<a href=\"mailto:svwpsv@gmail.com\">mail</a> creator of this program
> for suggestions or bugs.");
>                panel.replaceWith(newPanel);
>                panel = newPanel;
>            }
>        });
>    }
>
>    private void authorised() {
>        //if not authorised log in
>        if (SimWikiSession.get() == null ||
> !SimWikiSession.get().isAuthenticated()) {
>            setRedirect(true);
>            setResponsePage(SignInPage.class);
>        }
>    }
>
>    // Authentication roles
>    private void securityOnlyAuthorsAndAdmins(Component comp) {
>        if (SimWikiSession.get() != null &&
> SimWikiSession.get().isAuthenticated()) {
>            if (SimWikiSession.get().isReader()) {
>                comp.setVisible(false);
>            }
>        }
>    }
>
>    private void securityOnlyAdmins(Component comp) {
>        if (SimWikiSession.get() != null &&
> SimWikiSession.get().isAuthenticated()) {
>            if (!SimWikiSession.get().isAdmin()) {
>                comp.setVisible(false);
>            }
>        }
>    }
>
>    private Link createNewPage() {
>        Link link = new Link("newPage") {
>
>            @Override
>            public void onClick() {
>                Panel newPanel = new NewPagePanel("panelContainer");
>                panel.replaceWith(newPanel);
>                panel = newPanel;
>            }
>        };
>        add(link);
>        return link;
>    }
>
>    private Link createChangesPage() {
>        Link link = new Link("changes") {
>
>            @Override
>            public void onClick() {
>                Panel newPanel = new ChangesPanel("panelContainer",
> SimWikiSession.get().getUser().getName());
>                panel.replaceWith(newPanel);
>                panel = newPanel;
>            }
>        };
>        add(link);
>        return link;
>    }
>
>    private Link createSearchPage() {
>        Link link = new Link("search") {
>
>            @Override
>            public void onClick() {
>                Panel newPanel = new SearchPanel("panelContainer");
>                panel.replaceWith(newPanel);
>                panel = newPanel;
>            }
>        };
>        add(link);
>        return link;
>    }
>
>    private Link createNewCategory() {
>        Link link = new Link("newCategory") {
>
>            @Override
>            public void onClick() {
>                Panel newPanel = new NewCategoryPanel("panelContainer");
>                panel.replaceWith(newPanel);
>                panel = newPanel;
>            }
>        };
>        add(link);
>        return link;
>    }
>
>    //log out
>    private Link createLogout() {
>        Link logoutLink = new Link("logOut") {
>
>            @Override
>            public void onClick() {
>                getSession().invalidate();
>                setRedirect(true);
>                setResponsePage(SignInPage.class);
>            }
>        };
>        add(logoutLink);
>        return logoutLink;
>    }
>    //SiteMap
>
>    private void createSiteMap() {
>        add(new Link("sitemap") {
>
>            @Override
>            public void onClick() {
>                Panel newPanel = new HomePanel("panelContainer", "Sitemap",
> "Nog niet geimplementeerd");
>                panel.replaceWith(newPanel);
>                panel = newPanel;
>            }
>        });
>    }
>
>    private Panel getPanel(String category, String action, String id) {
>        Panel constructPanel = null;
>
>        if (action == null) {
>            if (category == null && id == null) {
>                constructPanel = new HomePanel("panelContainer", "Home",
> "Welcome on the simwiki");
>            } else if (category == null && id != null) {
>                constructPanel = new SinglePagePanel("panelContainer", id);
>            } else if (category != null && id == null) {
>                constructPanel = new PagePanel("panelContainer", category);
>            } else if (category != null && id != null) {
>            }
>
>        } else if (action.equalsIgnoreCase("delete")) {
>            if (category == null && id == null) {
>                //free not used
>            } else if (category == null && id != null) {
>                //free not used
>            } else if (category != null && id == null) {
>                //free not used
>            } else if (category != null && id != null) {
>                //page=7&category=java
>                pagesService.delete(Long.parseLong(id),
> SimWikiSession.get().getUser().getName());
>                constructPanel = new PagePanel("panelContainer", category);
>            }
>
>
>        } else if (action.equalsIgnoreCase("edit")) {
>            if (category == null && id == null) {
>                //free not used
>            } else if (category == null && id != null) {
>                constructPanel = new EditPagePanel("panelContainer",
> Long.parseLong(id));
>            } else if (category != null && id == null) {
>                //free not used
>            } else if (category != null && id != null) {
>                //free not used
>            }
>        }
>
>        if (constructPanel == null) {
>            constructPanel = new HomePanel("panelContainer", "Home", "Welcome
> on the simwiki");
>        }
>        //needed for replace!
>        this.panel = constructPanel;
>
>        return panel;
>    }
> }
>
> Regards,
>
> Simon
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org