There are several places in Wicket which check for the existence of a Session before actually getting a reference to it, e.g. FeedbackCollector:
public final List<FeedbackMessage> collect(final IFeedbackMessageFilter filter)
if (includeSession && Session.exists())
If no one has called Session#get(), all calls to Session#exists() return false although a session might exist in the session store, i.e. it might just not be set to ThreadContext#session already.