Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-tapestry Wiki" 
for change notification.

The following page has been changed by RonPiterman:
http://wiki.apache.org/jakarta-tapestry/Hivemind4Beginners

New page:
= Hivemind for Beginners =
[[TableOfContents]]
== hivemind configuration file location ==
Hivemind is configured through an xml file called {{{hivemodule.xml}}}.
Tapestry configures hivemind to look for this file in three different places. 
All can be used simultaniously or alternatively:

 * {{{ /META-INF }}} hivemind will load all {{{ /META-INF/hivemodule.xml }}} on 
the classpath. this includes all classes directories and jar files.
 * {{{ <context>/WEB-INF/ }}}
 * {{{ <context>/WEB-INF/<app-name>/ }}} practical if you have more than one 
tapestry application in the same context and you don't wish them to share 
certain hivemind configuration.
== creating a service ==
Here is a simple example of the {{{ hivemodule.xml }}}.
{{{
<?xml version="1.0"?>
<module id="moduleid" version ="1.0.0" package="package.name">
  <service-point id="ServiceId"   
    interface="interface.name.relative.to.package.or.absolute">
    <invoke-factory>

      <construct
     class="implementation.class.name.relative.to.package.or.absolute"/>

    </invoke-factory>
  </service-point>
</module>
}}}
alternativley, you can separate {{{<service-point>}}} as an '''empty 
element''', and use the {{{<invoke-factory>}}} element in an...
{{{
<implementation service-id="ServiceId">
  <invoke-factory...
</implementation>
}}}
To use your service in tapestry components or pages you "inject" it, using the 
following syntax (in the {{{.jwc}}} or {{{.page}}} file)
{{{
<inject object="service:moduleid.ServiceId" property="nameOfProperty"/>
}}}
If you want to use annotations, use: 
{{{
@InjectObject("service:moduleid.ServiceId")
public abstract ServiceInterface getXXX();
}}}
=== notes ===
 1. the above syntax creates a singleton service, which means, your service 
will be instanciated once and will be used from all threads of the application. 
Hivemind offers 4 instaciation models. To use them, use the {{{model}}} 
attribute of the {{{<invoke-factory>}}} element. See 
[http://jakarta.apache.org/hivemind/services.html#Defining+Services here] for 
details.
 1. All module/services names are case sensitive.

== Referencing other files from hivemodule.xml ==
{{{
<sub-module descriptor="relative.path.to.another.module.description.xml"/>
}}}

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

Reply via email to