Philipp Schmidt skrev:
Hi,

First off sorry for my poor english.

Seem good enough to me.

Second off if this email is valuable for public discussion I repost it to the [EMAIL PROTECTED] list. I wasn't sure.

We try to keep most discussions public, and an important part of GSoC at Apache is to learn the "Apache way". So I answer at cocoon-dev.

Looks like I choose the most complicated project from cocoon list in the GSoC 2006. That's why I have some questions and I hope one of you could answer them since you are the experts of OGSi and the trunk. :)

Hopefully it is one of the more interesting projects as well :)

So here are my top 10 questions in random order:

1 - The "cocoon-core" represents the core of Cocoon with all the basic functionality like sitemaps, flowscript, etc. Right?

Yes.

2 - The "cocoon-blocks-fw" is needed in order to mount all the other blocks like forms etc. Right?

Yes.

3 - There's no way at the moment to mount a "block" (like forms) and run an example.

Actually it is. cocoon-webapp is working as an OSGi block(at least partly), and it gets all needed components through the Spring bridge. To test it you need to set the start level of cocoon-webapp higher (5 e.g.) than the rest of the bundles. This is needed to make sure that all the needed components from cocoon-core are registered before cocoon-webapp tries to access them.

To make it work you also need change

<map:transform src="welcome.xslt">
 <map:parameter name="contextPath" value="{request:contextPath}"/>
</map:transform>

to have the explicit contextPath value "/cocoon-webapp".

The reason for this is that the standard HttpService is supposed to use Servlet 2.1 which doesn't contain getContextPath() in the request object. And the Equinox implementation of HttpService strictly follow the standard. Now, using Servlet 2.1 is obviously not enough for Cocoon, so the conclusion is that we need another HttpService. The Felix HttpService is less strict and use Servlet 2.4 (it is based on Jetty). I have tried to use the Felix HttpService instead of the Equinox one but this far without success. It seem to start as it should but in some way it seem to affect the behavior of the cocoon-core bundle so that it doesn't start as it should, no idea what is going wrong yet.

There is some work left to do on the Spring bridge though, aliases are not handled yet, non thread safe components are not handled either and I would expect that the pooled components doesn't work completely.

4 - How will the "blocks" be realised? As far as I understood it they will be OGSi bundles like the "cocoon-core" and "cocoon-blocks-fw" are atm.

You understand correctly the blocks will be realized as bundles. cocoon-core is a good example of a block that contributes components (as OSGi services) to the rest of the blocks, and cocoon-webapp shows how a block can use components (services) from other blocks and contribute sitemap (Servlet) functionality.

You can find a description about how the blocks-fw work in http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=114237414521595&w=2.

5 - What do you think would be the best way to integration JMX into Cocoon? (I know it's my duty to figure this out, but I would highly appreciate some advice for the start). After looking at [1] and if 4. is true on way could be another OGSi service with JMX functionality. Possible would also be an extension of the "cocoon-core" which would lack all the fun of switching JMX off and make the core even heavier :)

I don't know much about JMX, so hopefully others can give you some advice on this.

6 - Since JMX only makes sense if you have an graphical interface I depend on the functionality like the forms framework etc.

Maybe you can use some already written JMX console, so that you don't have to solve all the problems in the beginning.

How much work is it to make 3. working?

Hard to say, everything that is needed is implemented, but as indicated above, some functionality might be lacking or buggy. And the debugging isn't particularly easy going.

What is needed for the forms block is to provide a Manifest file, which is fairly easy to do using the PDE in Eclipse. One also need to provide a configuration file for the declarative services that sets up a local OSGi/Spring bridge that use the necessary components from core and expose the form components, cocoon-core and cocoon-webapp can be used as examples.

7 - If you could name 10 things I should read, look at (except [1]) what should that be? Any links, papers, code that's uber important?

The link above with references is a good starting point for the blocks fw.

Learning about the OSGi declarative services (DS) is also a good idea. It is fairly new so I'm afraid that the specification is the main source http://www.osgi.org/osgi_technology/download_specs.asp?section=2. DS is based on the service binder http://gravity.sourceforge.net/servicebinder/, that has more documentation that can be helpful, especially the tutorial http://oscar-osgi.sourceforge.net/tutorial/

There is some old material on the wiki which not is updated http://wiki.apache.org/cocoon/osgi, http://wiki.apache.org/cocoon/Blocks.

Code wise cocoon-blocks-fw-impl together with cocoon-blocks-fw-demo[12] is important. Also take a look at META-INF/components.xml and some of the classes refered to in in them in cocoon-core and cocoon-webapp.

And of course ask on the list, not everything is documented or that easy to follow in the code.

8 - How does the discovery of "bundles" in OGSi work? The question is when I only compile the core, how do I add the forms block to it. I couldn't find information concerning this.

OSGi doesn't discover any bundles, what bundles that are started when you start an OSGi framework is typically described in a configuration file in an implementation dependent way. For Equinox you find documentation here http://www.eclipse.org/equinox/quickstart.html. When the framework is started, bundles can be installed dynamically through the BundleContext.

More specifically when you run the code within Eclipse you should convert the block to a plugin, then it will be available in the GUI for Start... -> Equinox OSGi Framework. You can probably use the c-eclipse Maven plugin, but I don't know the details about how.

9 - Basic functionality of the JMX Cocoon Management Console should be start a block, stop a block, show log file. Since Cocoon uses Spring and Avalon reconfiguration (like cocoon.xconf etc.) is impossible at the moment, as far as I understood it. Right?

It shouldn't be impossible AFAIK, but there is certainly work left to make the blocks reconfigurable.

10 - Could you please read: http://wiki.apache.org/cocoon/OGSiJMXConsole and give me some feedback. Thanks a lot.

An important part that you didn't mention is to configure the blocks using JMX to control the configuration service in OSGi. Besides that you need a design document and an approach.

/Daniel

Reply via email to