I'm not sure if there is a more straightforward way, but one way is to store 
the servlet into the request and then pull out the ServletContext from that.

So make a subclass of org.apache.tapestry.ApplicationServlet:
public class MyApplicationServlet extends ApplicationServlet
{
        protected void doService(HttpServletRequest request, 
HttpServletResponse response) throws IOException, ServletException
        {
                request.setAttribute("servlet", this);
                super.doService(request, response);
        }
}

Set it up in web.xml:
<servlet>
        <servlet-name>app</servlet-name>
        <servlet-class>path.to.MyApplicationServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
</servlet>

Then pull out the registry in your base page:
public Registry getRegistry()
{
        return (Registry) ((MyApplicationServlet) 
getRequestCycle().getInfrastructure().getRequest().getAttribute("servlet")).getServletContext().getAttribute("org.apache.tapestry.Registry:app");
}

Ben

-----Original Message-----
From: Numa Schmeder [mailto:[EMAIL PROTECTED] 
Sent: Friday, February 09, 2007 1:08 PM
To: Tapestry users
Subject: Re: Migration to Tap4, accessing the hivemind registry without 
injection

I knew that, but I don't know how to access a context from a Page or  
from the request cycle.
How can you get the servlet context?

Thanks,

Numa
Le 9 févr. 07 à 19:49, Shing Hing Man a écrit :

> A singleton has the advantage of letting you access
> the registry in non-web pages.
> In case you did not know,
> the registry is created in the  ApplicationServlet and
> stored as a context parameter.
>
> // context is the servlet context
> Registry registry = (Registry) context
>
> .getAttribute(ApplicationServlet.REGISTRY_KEY_PREFIX_PUBLIC
>                                                 +
> "(the name of ApplicationServlet given in web.xml");
>
>
> Shing
>
>
> --- Numa Schmeder <[EMAIL PROTECTED]> wrote:
>
>> Nop, but isn't an easier way to just access the
>> registry?
>>
>> Le 9 févr. 07 à 19:33, Shing Hing Man a écrit :
>>
>>> Have you considered implementing the HiveMind
>> registry
>>> as a singleton ?
>>>
>>> The zebra-hivemind subproject in Zebra does
>> exactly
>>> that.
>>> http://zebra.berlios.de/
>>>
>>> Shing
>>>
>>>
>>>
>>>
>>> --- Numa Schmeder <[EMAIL PROTECTED]> wrote:
>>>
>>>> Hello,
>>>>
>>>> I am migrating an application from tap3 to tap4,
>> I
>>>> am hitting a lot
>>>> of problem.
>>>> One of those is getting a reference to the
>> hivemind
>>>> registry from
>>>> java without using injection.
>>>>
>>>> I have a base page who used to provide a
>> DAOFactory
>>>> to all my
>>>> subclassing pages, now the DAOFactory is in the
>>>> hivemind registry.
>>>> I don't want to go to each page specification to
>>>> inject the DAO
>>>> Factory and I can't use annotations.  So I would
>>>> like to access the
>>>> hivemind registry programmatically.
>>>> How can I do, I have checked many docs but
>> couldn't
>>>> find a clue.
>>>>
>>>> Could someone help me please!
>>>>
>>>> Thanks
>>>>
>>>> Numa
>>>>
>>>>
>>>
>>
> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail:
>>>> [EMAIL PROTECTED]
>>>> For additional commands, e-mail:
>>>> [EMAIL PROTECTED]
>>>>
>>>>
>>>
>>>
>>> Home page :
>>>   http://uk.geocities.com/matmsh/index.html
>>>
>>>
>>>             
>>>
>>
> ___________________________________________________________
>>> All New Yahoo! Mail - Tired of unwanted email
>> come-ons? Let our
>>> SpamGuard protect you.
>> http://uk.docs.yahoo.com/nowyoucan.html
>>>
>>>
>>
> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail:
>> [EMAIL PROTECTED]
>>> For additional commands, e-mail:
>> [EMAIL PROTECTED]
>>>
>>>
>>> -- 
>>> This message has been 'sanitized'.  This means
>> that potentially
>>> dangerous content has been rewritten or removed.
>> The following
>>> log describes which actions were taken.
>>>
>>> Sanitizer (start="1171047249"):
>>>   Split unusually long Date: header.
>>>   SanitizeFile (filename="unnamed.txt",
>> mimetype="text/plain"):
>>>     Match (names="unnamed.txt", rule="2"):
>>>       Enforced policy: accept
>>>
>>>   Total modifications so far: 1
>>>
>>>
>>> Anomy 0.0.0 : Sanitizer.pm
>>> $Id: Sanitizer.pm,v 1.90 2005/01/04 20:30:13 bre
>> Exp $
>>>
>>>
>>
>>
>>
> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:
>> [EMAIL PROTECTED]
>> For additional commands, e-mail:
>> [EMAIL PROTECTED]
>>
>>
>
>
> Home page :
>   http://uk.geocities.com/matmsh/index.html
>
>
>               
> ___________________________________________________________
> Now you can scan emails quickly with a reading pane. Get the new  
> Yahoo! Mail. http://uk.docs.yahoo.com/nowyoucan.html
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
> -- 
> This message has been 'sanitized'.  This means that potentially
> dangerous content has been rewritten or removed.  The following
> log describes which actions were taken.
>
> Sanitizer (start="1171048257"):
>   Split unusually long Date: header.
>   SanitizeFile (filename="unnamed.txt", mimetype="text/plain"):
>     Match (names="unnamed.txt", rule="2"):
>       Enforced policy: accept
>
>   Total modifications so far: 1
>
>
> Anomy 0.0.0 : Sanitizer.pm
> $Id: Sanitizer.pm,v 1.90 2005/01/04 20:30:13 bre Exp $
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to