Appendix - Fractal Architecture


The following diagrams aim to describe the composition of the Fractal components of Petals ESB.

By naming convention, if not specified, the default name of the interface 'server' is "service".
To have readable diagrams, some interface links are not drawn:

  • the links between the interfaces "server" of a composite and the interfaces "server" of its internal components,
  • the links between the interfaces "client" of internal components of a composite and the interfaces "client" of the composite.
    Into a composition, only links between internal components are drawn.
The following diagrams, except the legend, are exported as JPEG image from the slides contained in Fractal-Diagrams.odp and then cropped with a image tool (such as gimp). The export is done with following parameters:
  • width: 27.99 cm,
  • height: 21.01 cm,
  • resolution: 37 pixel/cm
  • color: 24bits,
  • quality: 100%
No contributors found for: authors on selected page(s)

Fractal tips

Composite startup

The sub-components of a Fractal composite are started sequentially, so you MUST declare the sub-component in the right order in the Fractal ADL.


Each Fractal diagram is drawn using the following legend:

Petals Composite

System Composite

Container Composite

A component SharedLibraryLifeCycleImpl is instantiated each time a JBI shared library is installed into the JBI container. It is dynamically created.
A component ComponentLifeCycleImpl and Installer is instantiated each time a JBI component is installed into the JBI container. It is dynamically created.
A component ServiceAssemblyLifeCycleImpl is instantiated each time a JBI service assembly is deployed into the JBI container. It is dynamically created.

JBI Management Composite

JBI Messaging Composite

Communication Composite

SharedArea Composite

Transporter Composite


PreExtensionsManager composite

Each pre-extension is instantiated dynamically before internal components when Petals ESB is started according to the content of the Petals ESB classloader.

EmbeddedRegistryOverlay composite

PostExtensionsManager composite

Each post-extension is instantiated dynamically after internal components y when Petals ESB is started according to the content of the Petals ESB classloader.

Autoloader composite

Artifact repository composite

WsApi composite

Known problems

Deadlock when starting a composite


The startup of Petals blocks into the startup of the Fractal composite into the thread "main" with a similar thread dump:

"main" prio=10 tid=0x00007f83d4007800 nid=0x981 in Object.wait() [0x00007f83db58f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000000c038a388> (a org.objectweb.fractal.julia.generated.Cbd2013d7_0)
	at java.lang.Object.wait(
	at org.objectweb.fractal.julia.generated.Cbd2013d7_0.incrementFcInvocationCounter(
	at org.objectweb.fractal.julia.generated.Cec3b28ec_0.startScanner(INTERCEPTOR[DirectoryScanner])
	- locked <0x00000000c038a388> (a org.objectweb.fractal.julia.generated.Cbd2013d7_0)
	at org.objectweb.fractal.julia.generated.Cc2597297_0.startScanner(INTERFACE[DirectoryScanner])
	at org.objectweb.fractal.julia.generated.Cbd2013d7_0.setFcContentState(
	at org.objectweb.fractal.julia.generated.Cbd2013d7_0.setFcStarted(
	- locked <0x00000000c038adc8> (a org.objectweb.fractal.julia.generated.Cbd2013d7_0)
	at org.objectweb.fractal.julia.generated.C18c4c884_0.setFcStarted(INTERFACE[LifeCycleCoordinator])
	at org.objectweb.fractal.julia.generated.C4eddf8e0_0.startFc$$0(
	at org.objectweb.fractal.julia.generated.C4eddf8e0_0.startFc(
	at org.objectweb.fractal.julia.generated.C18c4c884_0.startFc(INTERFACE[LifeCycleCoordinator])
	at org.ow2.petals.kernel.server.FractalHelper.startComponent(
	at org.ow2.petals.kernel.server.PetalsServerImpl.startPetalsComposite(
	at org.ow2.petals.kernel.server.PetalsServerImpl.start(
	at org.ow2.petals.launcher.PetalsLauncher.launchPetalsServer(
	at org.ow2.petals.launcher.PetalsLauncher.main(

Update the ADL of the Fractal composite to set the sub-components in the right order.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.