Patrick Heiden pisze:
> Hello again!
> First of all: Big compliment for such an active users-list!

Thanks! :)

> [...]
> To get a bit more specific I am trying to explain what my architecture
> would/should look like at this state of my cocoon-knowledge. I assume, that 
> basic idea
> behind cocoon-blocks is about to create different parts of an application and
> connect those parts for interoperability. So as you suggested to first
> establish basic routings, my way would exactly be to split (separable) 
> functionality
> through different blocks.

Right.

> As far as I can see, there should be some kind of
> 'rootBlock', where I put basic site-rendering.

It shouldn't be root and shouldn't be called root. I mean, you should almost 
always not have any
root block, each block should process browser's request directly. For site 
rendering I would suggest
"shared" block because other block will use it's basic rendering capabilities 
in order to generate
full response with block's specific content.

> Directory structure would look like this:
> 
> ./myProject
>       |-- (maybe) loginBlock
>       |-- rootBlock
>       |-- block 1
>       |-- block 2
>       |-- ...
>       |-- block N
> 
> So maybe after users have logged in via some login-form (wich I would make as
> seperate block as well), they will be routed to my rootBlock. The specific
> sitemap for that block would contain pipelines to render the main-site.

Main site and shared rendering capabilities should be separated.

> After users decision for using a specific app-part in some of the other 
> blocks (by
> clicking some link) the sitemap of that block would be engaged to render
> specific response-content. The trick should be, that this specific block is
> able to use the already defined pipelines from my rootBlock, rendering the
> main-site first. Following little illustration should make clear what I want
> to achieve:
> 
> (after login)
> -------------------> [rootBlock]
>                         | (generates)
> +-- main-site --+       |
> |             |<--------+
> | hello user    |
> +---------------+
>       | (next request)
>       |
>       |                           (uses)
>       +---------> [block foo] ---------->[rootBlock] 
>                         | (generates)
> +-- main-site --+       |
> |             |<--------+
> | hello user    |
> |             |
> | block foo-  |
> | content     |
> +---------------+
> 
> and so on. 

Oh, your picture is much better. It clearly suggests that the it's specific 
block that generates its
response to browser and only uses some shared functionality from rootBlock. 
That is kind of design I
firmly advise.

> Therby each block would define its own flow-scripts to reach some
> part of the domainmodel or global services.
> Is this way advisable, or are there even simpler ways within cocoons
> block-context? Asuming, that all blocks are ready to use, there has to be a
> main webApplicationContext (e.g. within rootBlock?), where I put all beans for
> global usage (db-pooling, userManager and the like). 

You should put such stuff to shared block and make other blocks depend on it. 
Actually, current
implementation is little bit simplistic in this area because there is only one 
Spring's application
context (bean container) so even if you don't declare dependencies (in Maven's 
POM file) correctly
you will be able to use beans from other blocks. However, it's certainly a bad 
practice, because
Cocoon could eventually implement real block isolation in the near future.

If you are wonder who is setting up this global application context: it's job 
of webapp module
(generate from archetype) which is used for packaging Cocoon blocks in a one 
Webappliction ready to
be used in servlet container like Tomcat or Jetty. Anyway, you shouldn't bother 
about such details
too much. Your job, as Cocoon user, is to create blocks, declare dependencies 
between them and
develop all the functionality in blocks.

> So how should
> configuration look like to get all blocks interoperate the above way? You may
> think - and it would be right - that I am still a bit confused on how to put
> blocks inside the game. But maybe after all that explanation you are in better
> position to guide me towards better usage of cocoon.

As I said, you don't need to configure too much. Just declare dependencies 
between blocks in Maven's
POM file and you are done. If you want to use pipelines from other blocks, you 
will need to connect
to other blocks' servlets but you already know how to do this.

I would like to suggest you two nice readings which could probably help you 
understand better
Cocoon's architecture and avoid common pitfalls:
http://article.gmane.org/gmane.text.xml.cocoon.devel/74571
http://thread.gmane.org/gmane.text.xml.cocoon.user/63219 (excellent discussion 
with Rainer Pruy)

Oh, and in your spare time you could probably take a look at this screencast:
http://people.apache.org/~gkossakowski/cocoon-tutorial-rcl-2.html (I plan to 
move it to our main
site as soon as I have some free time)

-- 
Grzegorz Kossakowski

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

Reply via email to