forrest-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ross Gardler <>
Subject Re: Forrest as a Module
Date Tue, 30 Aug 2005 09:45:56 GMT
Lake McManus wrote:
> Alright well if I haven't already made it blatantly obvious, I'm new to the whole Forrest/Cocoon
thing, and the documentation is hardly useful for someone trying to figure out how to use
it and more useful as a reference for someone who already knows it.  I'm also inexperienced
with servlets, containers, and webapps, though I do know Java.  Would you mind explaining
how I would integrate Forrest, along with other components such as PHP, into an Apache server,
using what you mentioned below?  Thank you so much for your help, and for putting up with

Yes, it is true our docs could be imporved considerably. When you 
understand more we would welcome patches and contributions.

The best thing for me to do in answering your questions is to point you 
to docs that *should* answer your questions, you go and read them, 
experiment a little and come back here with more questions as they 
become more focussed on specific problems rather than wide, general issues.

First of all, using Forrest inside a Servlet engine alongside Apache HTTPD:

It is not really within the scope of this user list to get this 
configured. You will find more immediate help on the user list for your 
chosen serlet engine. If you do not currently have one then I recomend 
Apache Tomcat

They have extensive docs on getting tomcat installed and deploying webapps.

Once you have this up and running you can create a webapp from Forrest 
with the command "forrest webapp", deploy the resulting war file in 
tomcat and off you go.

I suggest you first try deploying an unmodified seed site from forrest, 
see for instructions on 
creating a seed site. Just replace step 4 and 5 with the above "forrest 
webapp" steps and you should be working.

Now to integrating PHP.

First of all, consider wether you really want to do this. PHP is an 
adequate language but there are, IMHO, opinion better languages 
available through Cocoon (on which Forrest is bilt). If you still want 
to work with PHP then here is what you do:

Play around with Forrest doing some static pages using XML first. Get 
used to how Forrest works. Integrating PHP is an advanced activity and 
as a newbie you should spend some time understanding Forrest in its 
simplest form first. Start with

Conmfortable? Now re-read the advanced customisations section of the 
above page. This will give an example of how to customise the processing 
within Forrest. The part you are particularly interested in is the 
additions to the sitemap. There is a link to a sitemap reference in that 
section, you must read that reference - it is important background 

By the time you have read all this you should know what to do. Here is a 
hint that you will not understand until you have read all the above:

<map:match pattern="**.php.xml">
     <map:generate src="http://localhost/{1}.php" />
     <map:serialize type="xml"/>

This assumes that you php scripts output XDoc, if not then you will need 
a transformation to convert from the source format to XDoc (we have 
stylesheets and plugins for many formats so if this is the case ask 
before writing).

With this match requests for http:/// will give 
a skinned HTML version of the page, http:/// 
will give PDF etc.

There is *another* way of doing this Cocoon is able to execute PHP pages 
natively. However, I think the generator is deprecated now, so I'm not 
sure if you want to use that route.


> --
> Lake McManus~马雷~レイク・ミクマーナス~ْلَيكْ مِكْمَنُس~लेक्
> E-Mail:
> "Impermanent are all created things; strive on with awareness."
> -----Original Message-----
> From: Ross Gardler [] 
> Sent: 2005 August 27 09:33
> To:
> Subject: Re: Forrest as a Module
> Lake McManus wrote:
>>In my opinion, Forrest would be much more useful as a module.
> Forrest is a webapp for hosting in a Servlet engine. It is a completely 
> different beast to an HTTPD module (I guess that is what you mean by 
> module). Of course, the servlet container itself can be run as an HTTPD 
> module.
>> Despite 
>>what the Forrest website says, I can’t understand how Forrest can be 
>>used for dynamic pages
> See our home page [1] and the docs at [2] which describes the dynamic 
> mode in more detail.
> In short you can do 'forrest run' and point your browser at 
> http://localhost:8888 (the port is of course configurable, and you can 
> poit at it from an external machine if you want to). In a production 
> environment you probably want to do 'forrest webapp' and deploy on your 
> favourite servlet container.
> [1]
> [2]
>>Making it a module would allow this.  That 
>>would make a lot more sense than having to run Forrest every time you 
>>update the site, especially if you’re not running Forrest on the 
>>server.  At first I thought Forrest would be something like that, but it 
>>took me a while to realize, to my dismay, that it wasn’t.
> On the contrary - that is *exactly* what forrest does when you run in 
> dynamic mode. You should also appreciate that Forrest is designed to 
> allow static content to be created since most content is, in fact, 
> static and therefore is much more efficiently served by a web server. If 
> you have dynamic needs then run in dynamic mode.
>> Having 
>>Forrest as a module would also increase functionality with server-site 
>>scripting like PHP.  That way, PHP could produce Forrest-compatible 
>>code, and then Forrest would process it.
> It already can. This is made really easy with the locationmap in 
> 0.8-dev, however, it is still achievable in 0.7 if you write a custom 
> sitemap for your project.
> Furthermore, Forrest is built on top of Cocoon, so we have the full 
> power of Cocoon in the dynamic environment.
>> Is there any effort being made 
>>toward this?  
> Errr... just in case you haven't noticed with my replies above, it 
> already does everything you ask for :-P
>>And is there a reason that it wasn’t developed like a 
>>module or CGI in the first place?
> Because it is much more powerful and efficient as a Cocoon application.
> Ross

View raw message