sobota 18. února 2012

Cloud Foundry a problém se Spring Security v Grails

Při vývoji jedné aplikace využívám framework Grails a pro autentizaci plugin Spring Security. Při deploymentu na Cloud Foundry (CF) jsem se však setkal s nepříjemnou výjimkou java.lang.IllegalStateException a s takřka nic neříkajícím výpisem: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.
Dlouho jsem netušil jak na to. Nakonec jsem napsal do fóra na CF a odpověď přišla brzy: je to způsobené použitím anotací. Chyba se dala spravit tím, že místo anotací mám použít zbývající dva způsoby: InterceptUrlMap nebo Requestmap. Nakonec jsem zvolil způsob InterceptUrlMap, který spočíval v tom, že zabezpečené URL se namapují v Config.groovy.

Update: tak hurá už to frčí. Dnes (21.2.2012) mi psal jeden z vývojářů CF, že problém byl v pluginu do Grails a pro opravu stačí přidat compile ":webxml:1.4.1" do části plugins v souboru BuildConfig.groovy

2 komentáře:

  1. Díky moc za popis řešení, ušetřilo mi to pár hodin hledání. Díky!

    OdpovědětVymazat
    Odpovědi
    1. Nemáš zač :) jsem ani nečekal, že tohle někdo čte kromě mě :)

      Vymazat