Author: smumford
Date: 2011-09-27 02:12:04 -0400 (Tue, 27 Sep 2011)
New Revision: 7511
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/Book_Info.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/Revision_History.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/faq/jcr-faq.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container-howto.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jbosscache-configuration-templates.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jbossts-transaction-service.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jta.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/binary-values-processing.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/performance-tuning-guide.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/protocols/ftp.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/repository-creation-service.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/aggregation-rule.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/find-similar-nodes.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/higlight.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/ignore-accent-symbols.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/index-boost-value.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/jcr-query-usecases.bk
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/jcr-query-usecases.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/node-scope-index.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/regexp-indexing-rule.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/searching-repository-content.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/spell-checker.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/synonim-provider.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/statistics.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/cache.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/container-configuration.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/data-source-provider.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/initialcontext-binder-service.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/inversion-of-control.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/jndi-naming.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/job-scheduler-service.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/listener-service.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/logging.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/manageability.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/rpc-service.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/service-configuration-for-beginners.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/service-configuration-in-detail.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/AuthenticationAndIdentity/LDAP.xml
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/AuthenticationAndIdentity/SSO.xml
Log:
Spellcheck and revision bump
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/Book_Info.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++ epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/Book_Info.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,30 +4,30 @@
%BOOK_ENTITIES;
]>
<bookinfo id="book-Reference_Guide-Reference_Guide_eXo_JCR_1.14">
- <title>Reference Guide eXo JCR 1.14</title>
- <subtitle>An in-depth guide to Enterprise Portal Platform
&VZ;</subtitle>
- <productname>JBoss Enterprise Portal Platform</productname>
- <productnumber>5.2</productnumber>
- <edition>5.2.0</edition>
- <pubsnumber>5</pubsnumber>
- <abstract>
- <para>
- This Reference Guide is a high-level usage document. It deals with more advanced
topics than the Installation and User Guides, adding new content or taking concepts
discussed in the earlier documents further. It aims to provide supporting documentation
for advanced users of the JBoss Enterprise Portal Platform product. Its primary focus is
on advanced use of the product and it assumes an intermediate or advanced knowledge of the
technology and terms.
- </para>
+ <title>Reference Guide eXo JCR 1.14</title>
+ <subtitle>An in-depth guide to Enterprise Portal Platform
&VZ;</subtitle>
+ <productname>JBoss Enterprise Portal Platform</productname>
+ <productnumber>5.2</productnumber>
+ <edition>5.2.0</edition>
+ <pubsnumber>1</pubsnumber>
+ <abstract>
+ <para>
+ This Reference Guide is a high-level usage document. It deals with more
advanced topics than the Installation and User Guides, adding new content or taking
concepts discussed in the earlier documents further. It aims to provide supporting
documentation for advanced users of the JBoss Enterprise Portal Platform product. Its
primary focus is on advanced use of the product and it assumes an intermediate or advanced
knowledge of the technology and terms.
+ </para>
- </abstract>
- <corpauthor>
- <inlinemediaobject>
- <imageobject>
- <imagedata fileref="Common_Content/images/title_logo.svg"
format="SVG" />
- </imageobject>
+ </abstract>
+ <corpauthor>
+ <inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="Common_Content/images/title_logo.svg"
format="SVG" />
+ </imageobject>
- </inlinemediaobject>
+ </inlinemediaobject>
- </corpauthor>
- <!-- FOR PUBLICAN --> <xi:include
href="Common_Content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude"> <!-- FOR JDOCBOOK: -->
<xi:fallback
xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include
href="fallback_content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- </xi:fallback>
- </xi:include>
- <xi:include href="Author_Group.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ </corpauthor>
+ <!-- FOR PUBLICAN --> <xi:include
href="Common_Content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude"> <!-- FOR JDOCBOOK: -->
<xi:fallback
xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include
href="fallback_content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ </xi:fallback>
+ </xi:include>
+ <xi:include href="Author_Group.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
</bookinfo>
Modified: epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/Revision_History.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/Revision_History.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/Revision_History.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,48 +4,62 @@
%BOOK_ENTITIES;
]>
<appendix id="appe-Reference_Guide-Revision_History">
- <title>Revision History</title>
- <simpara>
- <revhistory>
- <revision>
- <revnumber>5.2.0-5</revnumber>
- <date>Wed Sep 14 2011</date>
- <author>
- <firstname>Scott</firstname>
- <surname>Mumford</surname>
- <email></email>
+ <title>Revision History</title>
+ <simpara>
+ <revhistory>
+ <revision>
+ <revnumber>5.2.0-1</revnumber>
+ <date>Tue Sep 27 2011</date>
+ <author>
+ <firstname>Scott</firstname>
+ <surname>Mumford</surname>
+ <email></email>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>Incorporated eXo JCR 1.14
documentation.</member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>5.2.0-5</revnumber>
+ <date>Wed Sep 14 2011</date>
+ <author>
+ <firstname>Scott</firstname>
+ <surname>Mumford</surname>
+ <email></email>
- </author>
- <revdescription>
- <simplelist>
- <member>Added Global Portlet Data section.</member>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>Added Global Portlet Data section.</member>
- </simplelist>
+ </simplelist>
- </revdescription>
+ </revdescription>
- </revision>
- <revision>
- <revnumber>5.2.0-1</revnumber>
- <date>Mon Aug 29 2011</date>
- <author>
- <firstname>Scott</firstname>
- <surname>Mumford</surname>
- <email></email>
+ </revision>
+ <revision>
+ <revnumber>5.2.0-1</revnumber>
+ <date>Mon Aug 29 2011</date>
+ <author>
+ <firstname>Scott</firstname>
+ <surname>Mumford</surname>
+ <email></email>
- </author>
- <revdescription>
- <simplelist>
- <member>Updating version and resetting pubs/ed numbers.</member>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>Updating version and resetting pubs/ed
numbers.</member>
- </simplelist>
+ </simplelist>
- </revdescription>
+ </revdescription>
- </revision>
+ </revision>
- </revhistory>
+ </revhistory>
- </simpara>
+ </simpara>
</appendix>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/faq/jcr-faq.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/faq/jcr-faq.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/faq/jcr-faq.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -5,180 +5,184 @@
]>
<section id="sect-Reference_Guide-JCR_FAQ">
<title>JCR FAQ</title>
- <para>
- It's the draft for a future FAQ of JCR usage.
- </para>
+
<section id="sect-Reference_Guide-JCR_FAQ-Kernel">
<title>Kernel</title>
- <section
id="sect-Reference_Guide-Kernel-What_is_the_best_standardized_way_to_get_the_instance_of_a_service_">
- <title>What is the best, standardized way to get the instance of a
service ?</title>
-
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>What is the best, standardized way to get the instance of
a service ?</term>
+ <listitem>
+ <para>
<programlisting language="Java"
role="Java">container.getComponentInstanceOfType(ServiceName.class);</programlisting>
-
+
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_FAQ-JCR">
- <title>JCR</title>
<section id="sect-Reference_Guide-JCR-JCR_core">
<title>JCR core</title>
- <section
id="sect-Reference_Guide-JCR_core-Is_it_better_to_use_Session.getNodeByUUID_or_Session.getItem">
- <title>Is it better to use Session.getNodeByUUID or
Session.getItem?</title>
- <para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>Is it better to use Session.getNodeByUUID or
Session.getItem?</term>
+ <listitem>
+ <para>
Session.getNodeByUUID() about 2.5 times faster of
Session.getItem(String) and only 25% faster of Node.getNode(String). See the daily tests
results for such comparisons, e.g.
- </para>
- <para>
- <ulink
url="http://tests.exoplatform.org/JCR/1.12.2-GA/rev.2442/daily-perfo...
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-Does_it_make_sense_to_have_all_the_node_referencable_to_use_getNodeByUUID_all_the_time">
- <title>Does it make sense to have all the node referencable to use
getNodeByUUID all the time?</title>
- <para>
- Until it's applicable for a business logic it can be. But take in
account the paths are human readable and lets you think in hierarchy. If it's
important a location based approach is preferable.
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-What_should_I_use_to_check_if_an_Item_exists_before_getting_the_Value">
- <title>What should I use to check if an Item exists before getting
the Value?</title>
- <para>
- Use Session.itemExists(String absPath), Node.hasNode(String relPath)
or Property.hasProperty(String name). It's also is possible to check Node.hasNodes()
and Node.hasProprties().
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-How_to_use_Observation_properly">
- <title>How to use Observation properly?</title>
- <para>
- JCR Observation's a way to listen on persistence changes of a
Repository. It provides several options to configure the listener for an interesting only
changes. To use properly, it's important to understand concept of events filtering for
a registered EventListener (8.3.3 Observation Manager). An often confusing part, it's
the <emphasis role="bold">absPath</emphasis>, it's an associated
parent of a location you want to observe events on. I.e. it's a parent of child
node(s) or this parent property(ies); if <emphasis
role="bold">isDeep</emphasis> is true then you'll get events of all
the subtree of child nodes also. The same actual for <emphasis
role="bold">uuid</emphasis> and <emphasis
role="bold">nodeTypeName</emphasis> parameters of
ObservationManager.addEventListener() method.
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-Is_it_better_to_use_queries_that_to_access_the_data_by_the_JCR_API">
- <title>Is it better to use queries that to access the data by the
JCR API?</title>
- <para>
- No, direct access to items via JCR API is more efficient. Search will
consume additional resources for index querying and only then return the items.
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-What_is_default_query_ordering">
- <title>What is default query ordering?</title>
- <para>
- By default (if query do not contains any ordering statements) result
nodes is sorted by document order.
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-Is_ordering_by_jcrpath_or_Item_name_supported">
- <title>Is ordering by jcr:path or Item name
supported?</title>
- <para>
- No, it does not supported. There is two ways to ordering results,
when path may be used as criteria:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Order by property with value type NAME or PATH (jcr supports
it).
</para>
+ <para>
+ <ulink
url="http://tests.exoplatform.org/JCR/1.12.2-GA/rev.2442/daily-perfo...
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Does it make sense to have all the node referenceable to
use getNodeByUUID all the time?</term>
+ <listitem>
+ <para>
+ Until it's applicable for a business logic it can be.
But take in account the paths are human readable and lets you think in hierarchy. If
it's important a location based approach is preferable.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>What should I use to check if an Item exists before
getting the Value?</term>
+ <listitem>
+ <para>
+ Use Session.itemExists(String absPath),
Node.hasNode(String relPath) or Property.hasProperty(String name). It's also is
possible to check Node.hasNodes() and Node.hasProprties().
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>How to use Observation properly?</term>
+ <listitem>
+ <para>
+ JCR Observation's a way to listen on persistence
changes of a Repository. It provides several options to configure the listener for an
interesting only changes. To use properly, it's important to understand concept of
events filtering for a registered EventListener (8.3.3 Observation Manager). An often
confusing part, it's the <emphasis
role="bold">absPath</emphasis>, it's an associated parent of a
location you want to observe events on. I.e. it's a parent of child node(s) or this
parent property(ies); if <emphasis role="bold">isDeep</emphasis> is
true then you'll get events of all the subtree of child nodes also. The same actual
for <emphasis role="bold">uuid</emphasis> and <emphasis
role="bold">nodeTypeName</emphasis> parameters of
ObservationManager.addEventListener() method.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Is it better to use queries that to access the data by
the JCR API?</term>
+ <listitem>
+ <para>
+ No, direct access to items via JCR API is more efficient.
Search will consume additional resources for index querying and only then return the
items.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>What is default query ordering?</term>
+ <listitem>
+ <para>
+ By default (if query do not contains any ordering
statements) result nodes is sorted by document order.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Is ordering by jcr:path or Item name
supported?</term>
+ <listitem>
+ <para>
+ No, it does not supported. There is two ways to ordering
results, when path may be used as criteria:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Order by property with value type NAME or PATH
(jcr supports it).
+ </para>
- </listitem>
- <listitem>
- <para>
- Order by jcr:path - sort by exact path of node (jcr do not
supports it).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Order by jcr:path - sort by exact path of node
(jcr do not supports it).
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Order by jcr:path
- </para>
- <para>
- If no order specification is supplied in the query statement,
implementations may support document order on the result nodes (see 6.6.4.2 Document
Order). And it is sorted by order number.
- </para>
- <para>
- By default, (if query do not contains any ordering statements) result
nodes is sorted by document order.
- </para>
+ </itemizedlist>
+ <para>
+ Order by jcr:path
+ </para>
+ <para>
+ If no order specification is supplied in the query
statement, implementations may support document order on the result nodes (see 6.6.4.2
Document Order). And it is sorted by order number.
+ </para>
+ <para>
+ By default, (if query do not contains any ordering
statements) result nodes is sorted by document order.
+ </para>
<programlisting>SELECT * FROM nt:unstructured WHERE jcr:path LIKE
'testRoot/%'</programlisting>
- <para>
- For specified jcr:path ordering there is different proceeding in
XPath and SQL:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- SQL no matter ascending or descending - query returns result
nodes in random order: {code}SELECT * FROM nt:unstructured WHERE jcr:path LIKE
'testRoot/%' ORDER BY jcr:path{code}
- </para>
+ <para>
+ For specified jcr:path ordering there is different
proceeding in XPath and SQL:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ SQL no matter ascending or descending - query
returns result nodes in random order: {code}SELECT * FROM nt:unstructured WHERE jcr:path
LIKE 'testRoot/%' ORDER BY jcr:path{code}
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- XPath - jcr:path order construction is ignored (so result is
not sorted according path); {code}/testRoot/* <ulink
url="@jcr:primaryType='nt:unstructured'">@jcr:primaryType='nt:unstructured'</ulink>
order by jcr:path{code}
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ XPath - jcr:path order construction is ignored
(so result is not sorted according path); {code}/testRoot/* <ulink
url="@jcr:primaryType='nt:unstructured'">@jcr:primaryType='nt:unstructured'</ulink>
order by jcr:path{code}
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-How_eXo_JCR_indexer_uses_content_encoding">
- <title>How eXo JCR indexer uses content encoding?</title>
- <para>
- 1. Indexer uses jcr:encoding property of nt:resource node (used as
jcr:content child node of nt:file) 2. if no jcr:encoding property set the Document Service
will use the one configured in the service (defaultEncoding) 3. if nothing is configured a
JVM, the default encoding will be used
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-Which_database_server_is_better_for_eXo_JCR">
- <title>Which database server is better for eXo JCR?</title>
- <para>
- If the question is a performance, it's difficult question, as
each database can be configured to be more (and more) faster for each special case. MySQL
with MyISAM engine will be faster. But MySQL has limitations for indexes for multilingual
columns (Item names actually). So, with long Item names (larger ofOracle or PostgreSQL
also are good for performance. DB2 and MSSQL are slower in default configurations. Default
configuration of Sybase leader of slowness. But in this question, take the database server
maintenance in account. MySQL and PostgreSQL are simple in installation and can work even
on limited hardware. Oracle, DB2, MSSQL or Sybase need more efforts. The same actual for
maintenance during the work. Note for Sybase: "check-sns-new-connection" data
container configuration parameter should be set to "true". For testing purpose,
embedded database such as HSQLDB is the best choice. Apache Derby and H2 also supported.
But H2 surprisingly needs "beta!
" feature enabled - MVCC=TRUE in JDBC url.
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-How_to_setup_eXo_JCR_for_mutilingial_content_on_MySQL">
- <title>How to setup eXo JCR for mutilingial content on
MySQL?</title>
- <para>
- To allow multiple character sets to be sent from the client, the
UTF-8 encoding should be used, either by configuring utf8 as the default server character
set, or by configuring the JDBC driver to use UTF-8 through the characterEncoding
property. MySQL database should be created in single-byte encoding, e.g.
"latin1":
- </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>How eXo JCR indexer uses content encoding?</term>
+ <listitem>
+ <para>
+ Indexer uses jcr:encoding property of nt:resource node
(used as jcr:content child node of nt:file) 2. if no jcr:encoding property set the
Document Service will use the one configured in the service (defaultEncoding) 3. if
nothing is configured a JVM, the default encoding will be used.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Which database server is better for eXo
JCR?</term>
+ <listitem>
+ <para>
+ If the question is a performance, it's difficult
question, as each database can be configured to be more (and more) faster for each special
case. MySQL with MyISAM engine will be faster. But MySQL has limitations for indexes for
multilingual columns (Item names actually). So, with long Item names (larger ofOracle or
PostgreSQL also are good for performance. DB2 and MSSQL are slower in default
configurations. Default configuration of Sybase leader of slowness. But in this question,
take the database server maintenance in account. MySQL and PostgreSQL are simple in
installation and can work even on limited hardware. Oracle, DB2, MSSQL or Sybase need more
efforts. The same actual for maintenance during the work. Note for Sybase:
"check-sns-new-connection" data container configuration parameter should be set
to "true". For testing purpose, embedded database such as HSQLDB is the best
choice. Apache Derby and H2 also supported. But H2 surprisingly!
needs "beta" feature enabled - MVCC=TRUE in JDBC url.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>How to setup eXo JCR for mutilingial content on
MySQL?</term>
+ <listitem>
+ <para>
+ To allow multiple character sets to be sent from the
client, the UTF-8 encoding should be used, either by configuring utf8 as the default
server character set, or by configuring the JDBC driver to use UTF-8 through the
characterEncoding property. MySQL database should be created in single-byte encoding, e.g.
"latin1":
+ </para>
+
+ <programlisting>CREATE DATABASE db1 CHARACTER SET latin1 COLLATE
latin1_general_cs;</programlisting>
+ <para>
+ eXo JCR application (e.g. GateIn) should use JCR dialect
"MySQL-UTF8".
+ </para>
+ <para>
+ In other words: MySQL database default encoding and JCR
dialect cannot be UTF8 both. Use single-byte encoding (e.g. "latin1") for
database and "mysql-utf8" dialect for eXo JCR.
+ </para>
+ <para>
+ Notice: "MySQL-UTF8" dialect cannot be
auto-detected, it should be set explicitly in configuration.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Does MySQL have limitation affecting on eXo JCR
features?</term>
+ <listitem>
+ <para>
+ Index's key length of JCR_SITEM (JCR_MITEM) table for
mysql-utf8 dialect is reduced to 765 bytes (or 255 chars).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Does use of Sybase database need special options in eXo
JCR configuration?</term>
+ <listitem>
+ <para>
+ To enable JCR working properly with Sybase, a property
'check-sns-new-connection' with 'false' value is required for each
workspace data container:
+ </para>
-<programlisting>CREATE DATABASE db1 CHARACTER SET latin1 COLLATE
latin1_general_cs;</programlisting>
- <para>
- eXo JCR application (e.g. GateIn) should use JCR dialect
"MySQL-UTF8".
- </para>
- <para>
- In other words: MySQL database default encoding and JCR dialect
cannot be UTF8 both. Use single-byte encoding (e.g. "latin1") for database and
"mysql-utf8" dialect for eXo JCR.
- </para>
- <para>
- Notice: "MySQL-UTF8" dialect cannot be auto-detected, it
should be set explicitly in configuration.
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-Does_MySQL_have_limitation_affecting_on_eXo_JCR_features">
- <title>Does MySQL have limitation affecting on eXo JCR
features?</title>
- <para>
- Index's key length of JCR_SITEM (JCR_MITEM) table for mysql-utf8
dialect is reduced to 765 bytes (or 255 chars).
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-Does_use_of_Sybase_database_need_special_options_in_eXo_JCR_configuration">
- <title>Does use of Sybase database need special options in eXo JCR
configuration?</title>
- <para>
- To enable JCR working properly with Sybase, a property
'check-sns-new-connection' with 'false' value is required for each
workspace data container:
- </para>
-
<programlisting language="XML" role="XML"><container
class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
<properties>
<property name="source-name" value="jdbcjcr" />
@@ -190,12 +194,11 @@
<property name="swap-directory"
value="target/temp/swap/ws" />
<property name="check-sns-new-connection" value="false"
/>
</properties></programlisting>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-How_to_open_and_close_a_session_properly_to_avoid_memory_leaks">
- <title>How to open and close a session properly to avoid memory
leaks?</title>
-
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>How to open and close a session properly to avoid memory
leaks?</term>
+ <listitem>
<programlisting language="Java" role="Java">Session session =
repository.login(credentials);
try
{
@@ -205,41 +208,35 @@
{
session.logout();
}</programlisting>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-Can_I_use_Session_after_loging_out">
- <title>Can I use Session after loging out?</title>
- <para>
- No. Any instance of Session or Node (acquired through session)
shouldn't be used after loging out anymore. At least, it is highly recommended not to
use.
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-Is_JCR_suitable_for_remote_sites_synchronization">
- <title>Is JCR suitable for remote sites\*
synchronization?</title>
- <itemizedlist>
- <listitem>
- <para>
- Remote sites can be visualized as different buildings
seperated by a WAN network.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-How_to_use_lucene_spellchecker">
- <title>How to use lucene spellchecker?</title>
- <para>
- There is few steps:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Enable lucene spellchecker in jcr QueryHandler
configuration:
- </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Can I use Session after loging out?</term>
+ <listitem>
+ <para>
+ No. Any instance of Session or Node (acquired through
session) shouldn't be used after logging out anymore. At least, it is highly
recommended not to use.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Is JCR suitable for remote sites\*
synchronization?</term>
+ <listitem>
+ <para>
+ Remote sites can be visualized as different buildings
separated by a WAN network.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>How to use lucene spellchecker?</term>
+ <listitem>
+ <para>
+ There is few steps:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Enable lucene spellchecker in jcr QueryHandler
configuration:
+ </para>
<programlisting language="XML" role="XML"><query-handler
class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
@@ -249,55 +246,55 @@
</properties>
</query-handler></programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- Execute query with rep:spellcheck function and word that is
checked:
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Execute query with rep:spellcheck function and
word that is checked:
+ </para>
<programlisting language="Java" role="Java">Query query =
qm.createQuery("select rep:spellcheck() from nt:base where " + "jcr:path =
'/' and spellcheck('word that is checked')", Query.SQL);
RowIterator rows = query.execute().getRows();</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- Fetch a result:
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Fetch a result:
+ </para>
<programlisting language="Java" role="Java">Row r =
rows.nextRow();
Value v = r.getValue("rep:spellcheck()");</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- If there is no any results, that means there is no suggestion, so
word is correct or spellcheckers dictionary do not contain any words like the checked
word.
- </para>
+ </itemizedlist>
+ <para>
+ If there is no any results, that means there is no
suggestion, so word is correct or spellcheckers dictionary do not contain any words like
the checked word.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>How can I affect to spellchecker results?</term>
+ <listitem>
+ <para>
+ There is two parameters in jcr QueryHandler
configuration:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Minimal distance between checked word and
proposed suggestion;
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-JCR_core-How_can_I_affect_to_spellchecker_results">
- <title>How can I affect to spellchecker results?</title>
- <para>
- There is two parameters in jcr QueryHandler configuration:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Minimal distance between checked word and proposed
suggestion;
- </para>
-
- </listitem>
- <listitem>
- <para>
- Search for more popular suggestions;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Search for more popular suggestions;
+ </para>
<programlisting language="XML" role="XML"><query-handler
class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
@@ -309,133 +306,156 @@
</properties>
</query-handler></programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Minimal distance is counted as Levenshtein distance between checked
word and spellchecker suggestion.
- </para>
- <para>
- MorePopular paramter affects in next way: If "morePopular"
disabled:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- If the proposed word exists in the directory - no suggestion
given;
- </para>
+ </itemizedlist>
+ <para>
+ Minimal distance is counted as Levenshtein distance
between checked word and spellchecker suggestion.
+ </para>
+ <para>
+ MorePopular paramter affects in next way: If
"morePopular" disabled:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If the proposed word exists in the directory - no
suggestion given;
+ </para>
- </listitem>
- <listitem>
- <para>
- If the proposed word doesn't exist in the directory -
propose the closed word;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the proposed word doesn't exist in the
directory - propose the closed word;
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- If "morePopular" enabled:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- No matter word exists or not, checker will propose the closed
word that is more popular than the checked word.
- </para>
+ </itemizedlist>
+ <para>
+ If "morePopular" enabled:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ No matter word exists or not, checker will
propose the closed word that is more popular than the checked word.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
- </section>
-
-
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term></term>
+ <listitem>
+ <para>
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+
+
+
+ </variablelist>
</section>
<section id="sect-Reference_Guide-JCR-JCR_extensions">
<title>JCR extensions</title>
- <section
id="sect-Reference_Guide-JCR_extensions-How_to_restore_repository_to_existing_repository_">
- <title>How to restore repository to existing repository
?</title>
- <orderedlist>
- <listitem>
- <para>
- Remove existing repository, use:
- </para>
-
-<programlisting language="Java"
role="Java">RepositoryService.removeRepository(String
repositoryName)</programlisting>
+
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>How to restore repository to existing repository
?</term>
+ <listitem>
+ <orderedlist>
+ <listitem>
+ <para>
+ Remove existing repository, use:
+ </para>
+
+ <programlisting language="Java"
role="Java">RepositoryService.removeRepository(String
repositoryName)</programlisting>
- </listitem>
- <listitem>
- <para>
- Restore repository, use
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Restore repository, use
+ </para>
<programlisting language="Java"
role="Java">BackupManager.restore(RepositoryBackupChainLog log,
RepositoryEntry repositoryEntry, boolean asynchronous)</programlisting>
- </listitem>
+ </listitem>
- </orderedlist>
-
- </section>
-
- <section
id="sect-Reference_Guide-JCR_extensions-How_to_restore_workspace_to_existing_worksapce">
- <title>How to restore workspace to existing
worksapce?</title>
- <orderedlist>
- <listitem>
- <para>
- Remove existing workspace, use:
- </para>
+ </orderedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>How to restore workspace to existing
workspace?</term>
+ <listitem>
+ <orderedlist>
+ <listitem>
+ <para>
+ Remove existing workspace, use:
+ </para>
<programlisting language="Java"
role="Java">ManageableRepository.removeWorkspace(String
workspaceName)</programlisting>
- </listitem>
- <listitem>
- <para>
- Restore workspace, use:
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Restore workspace, use:
+ </para>
<programlisting language="Java"
role="Java">BackupManager.restore(BackupChainLog log, String repositoryName,
WorkspaceEntry workspaceEntry, boolean asynchronous)</programlisting>
- </listitem>
+ </listitem>
- </orderedlist>
+ </orderedlist>
- </section>
-
- <section
id="sect-Reference_Guide-JCR_extensions-Does_JCR_support_hot_backup">
- <title>Does JCR support hot backup?</title>
- <para>
- Yes, JCR is support hot backup. Will use
org.exoplatform.services.jcr.ext.backup.BackupManager.
- </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Does JCR support hot backup?</term>
+ <listitem>
+ <para>
+ Yes, JCR is support hot backup. Will use
org.exoplatform.services.jcr.ext.backup.BackupManager.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+
+ </variablelist>
- </section>
-
-
</section>
<section id="sect-Reference_Guide-JCR-WebDAV">
<title>WebDAV</title>
- <section
id="sect-Reference_Guide-WebDAV-I_uploaded_a_file_to_WebDAV_server_using_Mac_OS_Finder_but_the_file_size_is_0_what_is_wrong_">
- <title>I uploaded a file to WebDAV server using Mac OS Finder, but
the file size is '0', what is wrong ?</title>
- <para>
- This is known as a finder bug started from Mac OS v.10.5.3 and not
yet fixed, .
- </para>
- <para>
- For more details follow:&nbsp; <ulink
url="http://discussions.apple.com/thread.jspa?threadID=1538882&a...
Disscussion thread.</ulink>
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-WebDAV-Can_I_manage_cache_control_value_for_different_media_types_from_server_configuration_">
- <title>Can I manage 'cache-control' value for different
media-types from server configuration ?</title>
- <para>
- Use "cache-control" configuration parameter.
- </para>
- <para>
- The value of this parameter must contain colon-separated pairs
"MediaType:cache-control value"
- </para>
- <para>
- For example, if you need to cache all text/xml and text/plain files
for 5 minutes (300 sec.) and other text/\* files for 10 minutes (600 sec.), use the next
configuration:
- </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>I uploaded a file to WebDAV server using Mac OS
Finder, but the file size is '0', what is wrong?</term>
+ <listitem>
+ <para>
+ This is known as a finder bug started from Mac OS
v.10.5.3 and not yet fixed, .
+ </para>
+ <para>
+ For more details follow:&nbsp; <ulink
url="http://discussions.apple.com/thread.jspa?threadID=1538882&a...
Discussion thread.</ulink>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Can I manage 'cache-control' value for
different media-types from server configuration?</term>
+ <listitem>
+ <para>
+ Use "cache-control" configuration
parameter.
+ </para>
+ <para>
+ The value of this parameter must contain
colon-separated pairs "MediaType:cache-control value"
+ </para>
+ <para>
+ For example, if you need to cache all text/xml and
text/plain files for 5 minutes (300 sec.) and other text/\* files for 10 minutes (600
sec.), use the next configuration:
+ </para>
<programlisting language="XML"
role="XML"><component>
<type>org.exoplatform.services.jcr.webdav.WebDavServiceImpl</type>
@@ -447,81 +467,76 @@
<init-params>
<component>
</programlisting>
-
- </section>
-
- <section
id="sect-Reference_Guide-WebDAV-How_to_perform_WebDAV_requests_using_curl_">
- <title>How to perform WebDAV requests using curl ?</title>
- <para>
- Simple Requests
- </para>
- <para>
- For simple request such as: GET, HEAD, MKCOL, COPY, MOVE, DELETE,
CHECKIN, CHECKOUT, UNCHECKOUT, LOCK, UNLOCK, VERSIONCONTROL, OPTIONS
- </para>
- <para>
- perform:
- </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>How to perform WebDAV requests using
curl?</term>
+ <listitem>
+ <para>
+ Simple Requests
+ </para>
+ <para>
+ For simple request such as: GET, HEAD, MKCOL, COPY,
MOVE, DELETE, CHECKIN, CHECKOUT, UNCHECKOUT, LOCK, UNLOCK, VERSIONCONTROL, OPTIONS
+ </para>
+ <para>
+ perform:
+ </para>
<programlisting>curl -i -u 'user:pass' -X 'METHOD_NAME'
'resource_url'</programlisting>
- <para>
- for example to create a folder named test perform:
- </para>
+ <para>
+ for example to create a folder named test perform:
+ </para>
<programlisting>curl -i -u 'root:exo' -X MKCOL
'http://localhost:8080/rest/jcr/repository/production/test</programlisting>
- <para>
- to PUT a test.txt file from your current folder to "test
"folder on server perform:
- </para>
+ <para>
+ to PUT a test.txt file from your current folder to
"test "folder on server perform:
+ </para>
<programlisting>curl -i -u 'root:exo' -X PUT
'http://localhost:8080/rest/jcr/repository/production/test/test.txt' -d
@test.txt</programlisting>
- <para>
- Requests with XML body
- </para>
- <para>
- For requests which contains xml body such as: ORDER, PROPFIND,
PROPPATCH, REPORT, SEARCH
- </para>
- <para>
- add <emphasis role="bold">-d 'xml_body
text'</emphasis> or <emphasis role="bold">-d
@body.xml</emphasis>
- </para>
- <para>
- (body.xml must contain a valid xml request bidy.) to you
curl-command:
- </para>
+ <para>
+ Requests with XML body
+ </para>
+ <para>
+ For requests which contains xml body such as: ORDER,
PROPFIND, PROPPATCH, REPORT, SEARCH
+ </para>
+ <para>
+ add <emphasis role="bold">-d
'xml_body text'</emphasis> or <emphasis role="bold">-d
@body.xml</emphasis>
+ </para>
+ <para>
+ (body.xml must contain a valid xml request body.) to
you curl-command:
+ </para>
<programlisting>curl -i -u 'user:pass' -X 'METHOD_NAME' -H
'Headers' 'resource_url' -d 'xml_body
text'</programlisting>
- <para>
- For example about finding all files containing "test"
perform:
- </para>
+ <para>
+ For example about finding all files containing
"test" perform:
+ </para>
<programlisting>curl -i -u "root:exo" -X "SEARCH"
"http://192.168.0.7:8080/rest/jcr/repository/production/" -d
"<?xml version='1.0' encoding='UTF-8' ?>
<D:searchrequest xmlns:D='DAV:'>
<D:sql>SELECT * FROM nt:base WHERE contains(*,
'text')</D:sql>
</D:searchrequest>"</programlisting>
- <para>
- If you need to add some headers to your request, use \-H key.
- </para>
- <para>
- To have more information about methods parameters, you can find in
<ulink
url="http://www.ietf.org/rfc/rfc2518.txt">HTTP Extensions for
Distributed Authoring</ulink> specification.
- </para>
-
- </section>
-
- <section
id="sect-Reference_Guide-WebDAV-How_eXo_JCR_WebDAV_server_treats_content_encoding">
- <title>How eXo JCR WebDAV server treats content
encoding?</title>
- <para>
- OS client (Windows, Linux etc) doesn't set an encoding in a
request. But eXo JCR WebDAV server looks for an encoding in a Content-Type header and set
it to jcr:encoding. See <ulink
url="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,"&g...
14.17 Content-Type. e.g. Content-Type: text/html; charset=ISO-8859-4 So, if a client will
set Content-Type header, e.g. JS code from a page, it will works for a text file as
expected.
- </para>
- <para>
- If WebDAV request doesn't contain a content encoding, it's
possible to write a dedicated action in a customer application. The action will set
jcr:encoding using its own logic, e.g. based on IP or user preferences.
- </para>
-
- </section>
-
-
+ <para>
+ If you need to add some headers to your request, use
\-H key.
+ </para>
+ <para>
+ To have more information about methods parameters,
you can find in <ulink
url="http://www.ietf.org/rfc/rfc2518.txt">HTTP
Extensions for Distributed Authoring</ulink> specification.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>How eXo JCR WebDAV server treats content
encoding?</term>
+ <listitem>
+ <para>
+ OS client (Windows, Linux etc) doesn't set an
encoding in a request. But eXo JCR WebDAV server looks for an encoding in a Content-Type
header and set it to jcr:encoding. See <ulink
url="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,"&g...
14.17 Content-Type. e.g. Content-Type: text/html; charset=ISO-8859-4 So, if a client will
set Content-Type header, e.g. JS code from a page, it will works for a text file as
expected.
+ </para>
+ <para>
+ If WebDAV request doesn't contain a content
encoding, it's possible to write a dedicated action in a customer application. The
action will set jcr:encoding using its own logic, e.g. based on IP or user preferences.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
-
-
- </section>
-
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,24 +4,24 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Node_Types_and_Namespaces">
- <title>Node Types and Namespaces</title>
- <section
id="sect-Reference_Guide-Node_Types_and_Namespaces-Introduction">
- <title>Introduction</title>
- <para>
- Support of node types and namespaces is required by the JSR-170 specification. Beyond
the methods required by the specification, eXo JCR has its own API extension for the
<xref linkend="sect-Reference_Guide-NodeType_Registration" /> as well as
the ability to declaratively define node types in the Repository at the start-up time.
- </para>
+ <title>Node Types and Namespaces</title>
+ <section
id="sect-Reference_Guide-Node_Types_and_Namespaces-Introduction">
+ <title>Introduction</title>
+ <para>
+ Support of node types and namespaces is required by the JSR-170
specification. Beyond the methods required by the specification, eXo JCR has its own API
extension for the <xref linkend="sect-Reference_Guide-NodeType_Registration"
/> as well as the ability to declaratively define node types in the Repository at the
start-up time.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Node_Types_and_Namespaces-Node_Types_definition">
- <title>Node Types definition</title>
- <para>
- Node type registration extension is declared in
org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager interface
- </para>
- <para>
- Your custom service can register some neccessary predefined node types at the start-up
time. The node definition should be placed in a special XML file (see DTD below) and
declared in the service's configuration file thanks to eXo component plugin mechanism,
described as follows:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Node_Types_and_Namespaces-Node_Types_definition">
+ <title>Node Types definition</title>
+ <para>
+ Node type registration extension is declared in
org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager interface
+ </para>
+ <para>
+ Your custom service can register some necessary predefined node types at the
start-up time. The node definition should be placed in a special XML file (see DTD below)
and declared in the service's configuration file thanks to eXo component plugin
mechanism, described as follows:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<target-component>org.exoplatform.services.jcr.RepositoryService</target-component>
<component-plugin>
@@ -47,13 +47,13 @@
</values-param>
</init-params>
</component-plugin></programlisting>
- <para>
- There are two types of registration. The first type is the registration of node types
in all created repositories, it is configured in values-param with the name <emphasis
role="bold">autoCreatedInNewRepository</emphasis>. The second type is
registration of node types in specified repository and it is configured in values-param
with the name of repository.
- </para>
- <para>
- Node type definition file format:
- </para>
-
+ <para>
+ There are two types of registration. The first type is the registration of
node types in all created repositories, it is configured in values-param with the name
<emphasis role="bold">autoCreatedInNewRepository</emphasis>. The
second type is registration of node types in specified repository and it is configured in
values-param with the name of repository.
+ </para>
+ <para>
+ Node type definition file format:
+ </para>
+
<programlisting language="XML" role="XML"> <?xml
version="1.0" encoding="UTF-8"?>
<!DOCTYPE nodeTypes [
<!ELEMENT nodeTypes (nodeType)*>
@@ -105,17 +105,17 @@
<!ELEMENT requiredPrimaryType (CDATA)>
]></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Node_Types_and_Namespaces-Namespaces_definition">
- <title>Namespaces definition</title>
- <para>
- Default namespaces are registered by repository at the start-up time
- </para>
- <para>
- Your custom service can extend a set of namespaces with some application specific
ones, declaring it in service's configuration file thanks to eXo component plugin
mechanism, described as follows:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Node_Types_and_Namespaces-Namespaces_definition">
+ <title>Namespaces definition</title>
+ <para>
+ Default namespaces are registered by repository at the start-up time
+ </para>
+ <para>
+ Your custom service can extend a set of namespaces with some application
specific ones, declaring it in service's configuration file thanks to eXo component
plugin mechanism, described as follows:
+ </para>
+
<programlisting language="XML" role="XML">
<component-plugin>
<name>add.namespaces</name>
<set-method>addPlugin</set-method>
@@ -128,7 +128,7 @@
</init-params>
</component-plugin></programlisting>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container-howto.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container-howto.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container-howto.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,79 +4,79 @@
%BOOK_ENTITIES;
]>
<section
id="sect-Reference_Guide-How_to_implement_Workspace_Data_Container">
- <title>How-to implement Workspace Data Container</title>
- <section
id="sect-Reference_Guide-How_to_implement_Workspace_Data_Container-Short_intro_about_Workspace_data_container_implementation_practices">
- <title>Short intro about Workspace data container implementation
practices:</title>
- <orderedlist>
- <listitem>
- <para>
- Read a bit about the <xref
linkend="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract"
/>.
- </para>
+ <title>How-to implement Workspace Data Container</title>
+ <section
id="sect-Reference_Guide-How_to_implement_Workspace_Data_Container-Short_intro_about_Workspace_data_container_implementation_practices">
+ <title>Short intro about Workspace data container implementation
practices:</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ Read a bit about the <xref
linkend="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract"
/>.
+ </para>
- </listitem>
- <listitem>
- <para>
- Start new implementation project pom.xml with org.exoplatform.jcr parent. (optional,
but will makes the development easy)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Start new implementation project pom.xml with org.exoplatform.jcr
parent. (optional, but will makes the development easy)
+ </para>
- </listitem>
- <listitem>
- <para>
- Update sources of JCR Core and read JavaDoc on <emphasis
role="bold">org.exoplatform.services.jcr.storage.WorkspaceDataContainer</emphasis>
and <emphasis
role="bold">org.exoplatform.services.jcr.storage.WorkspaceStorageConnection</emphasis>
interfaces. They are the main part for the implemenation.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Update sources of JCR Core and read JavaDoc on <emphasis
role="bold">org.exoplatform.services.jcr.storage.WorkspaceDataContainer</emphasis>
and <emphasis
role="bold">org.exoplatform.services.jcr.storage.WorkspaceStorageConnection</emphasis>
interfaces. They are the main part for the implementation.
+ </para>
- </listitem>
- <listitem>
- <para>
- Look at <emphasis
role="bold">org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager</emphasis>
sourcecode, check how data menager uses container and its connections (see in save()
method)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Look at <emphasis
role="bold">org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager</emphasis>
sourcecode, check how data manager uses container and its connections (see in save()
method)
+ </para>
- </listitem>
- <listitem>
- <para>
- Create <emphasis
role="bold">WorkspaceStorageConnection</emphasis> dummy implementation
class. It's freeform class, but to be close to the eXo JCR, check how to implement
JDBC or SimpleDB containers ( <emphasis
role="bold">org.exoplatform.services.jcr.impl.storage.jdbc.JDBCStorageConnection</emphasis>
and <emphasis
role="bold">org.exoplatform.services.jcr.aws.storage.sdb.SDBWorkspaceStorageConnection</emphasis>).
Take in account usage of <emphasis
role="bold">ValueStoragePluginProvider</emphasis> in both
implementations.Value storage is an useful option for production versions. But leave it to
the end of implementation work.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Create <emphasis
role="bold">WorkspaceStorageConnection</emphasis> dummy implementation
class. It's freeform class, but to be close to the eXo JCR, check how to implement
JDBC or SimpleDB containers ( <emphasis
role="bold">org.exoplatform.services.jcr.impl.storage.jdbc.JDBCStorageConnection</emphasis>
and <emphasis
role="bold">org.exoplatform.services.jcr.aws.storage.sdb.SDBWorkspaceStorageConnection</emphasis>).
Take in account usage of <emphasis
role="bold">ValueStoragePluginProvider</emphasis> in both
implementations.Value storage is an useful option for production versions. But leave it to
the end of implementation work.
+ </para>
- </listitem>
- <listitem>
- <para>
- Create the connection implementation unit tests to play TTD. (optional, but takes
many benefits for the process)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Create the connection implementation unit tests to play TTD.
(optional, but takes many benefits for the process)
+ </para>
- </listitem>
- <listitem>
- <para>
- Implement CRUD starting from the read to write etc. Test the methods by using the
external implementation ways of data read/write in your backend.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Implement CRUD starting from the read to write etc. Test the methods
by using the external implementation ways of data read/write in your backend.
+ </para>
- </listitem>
- <listitem>
- <para>
- When all methods of the connection done start <emphasis
role="bold">WorkspaceDataContainer</emphasis>. Container class is very
simple, it's like a factory for the connections only.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ When all methods of the connection done start <emphasis
role="bold">WorkspaceDataContainer</emphasis>. Container class is very
simple, it's like a factory for the connections only.
+ </para>
- </listitem>
- <listitem>
- <para>
- Care about container reuseConnection(WorkspaceStorageConnection) method logic. For
some backends, it cab be same as openConnection(), but for some others, it's important
to reuse physical backend connection, e.g. to be in the same transaction - see JDBC
container.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Care about container reuseConnection(WorkspaceStorageConnection)
method logic. For some backends, it cab be same as openConnection(), but for some others,
it's important to reuse physical backend connection, e.g. to be in the same
transaction - see JDBC container.
+ </para>
- </listitem>
- <listitem>
- <para>
- It's almost ready to use in data manager. Start another test and go on.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ It's almost ready to use in data manager. Start another test and
go on.
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- <para>
- When the container will be ready to run as JCR persistence storage (e.g. for this
level testing), it should be configured in Repository configuration.
- </para>
- <para>
- Assuming that our new implementation class name is <emphasis
role="bold">org.project.jcr.impl.storage.MyWorkspaceDataContainer</emphasis>.
- </para>
-
+ </orderedlist>
+ <para>
+ When the container will be ready to run as JCR persistence storage (e.g. for
this level testing), it should be configured in Repository configuration.
+ </para>
+ <para>
+ Assuming that our new implementation class name is <emphasis
role="bold">org.project.jcr.impl.storage.MyWorkspaceDataContainer</emphasis>.
+ </para>
+
<programlisting language="XML" role="XML">
<repository-service default-repository="repository">
<repositories>
<repository name="repository"
system-workspace="production" default-workspace="production">
@@ -96,21 +96,21 @@
</container>
</programlisting>
- <para>
- Container can be configured by using set properties.
- </para>
+ <para>
+ Container can be configured by using set properties.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-How_to_implement_Workspace_Data_Container-Notes_on_Value_storage_usage">
- <title>Notes on Value storage usage:</title>
- <para>
- Value storages are pluggable to the container but if they are used, the container
implementation should respect set of interfaces and external storage usage principles.
- </para>
- <para>
- If the container has <emphasis
role="bold">ValueStoragePluginProvider</emphasis> (e.g. via
constructor), it's just a few methods to manipulate external Values data.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-How_to_implement_Workspace_Data_Container-Notes_on_Value_storage_usage">
+ <title>Notes on Value storage usage:</title>
+ <para>
+ Value storages are pluggable to the container but if they are used, the
container implementation should respect set of interfaces and external storage usage
principles.
+ </para>
+ <para>
+ If the container has <emphasis
role="bold">ValueStoragePluginProvider</emphasis> (e.g. via
constructor), it's just a few methods to manipulate external Values data.
+ </para>
+
<programlisting language="Java" role="Java">// get channel for
ValueData write (add or update)
ValueIOChannel channel = valueStorageProvider.getApplicableChannel(data, i);
if (channel == null) {
@@ -133,15 +133,15 @@
ValueData vdata = channel.read(propertyData.getIdentifier(), orderNumber,
maxBufferSize);
</programlisting>
- <important>
- <title>Important</title>
- <para>
- After a sequence of write and/or delete operations on the storage channel, the
channel should be committed (or rolled back on an error). See <emphasis
role="bold">ValueIOChannel.commit()</emphasis> and <emphasis
role="bold">ValueIOChannel.rollback()</emphasis> and how those methods
are used in JDBC container.
- </para>
+ <important>
+ <title>Important</title>
+ <para>
+ After a sequence of write and/or delete operations on the storage
channel, the channel should be committed (or rolled back on an error). See <emphasis
role="bold">ValueIOChannel.commit()</emphasis> and <emphasis
role="bold">ValueIOChannel.rollback()</emphasis> and how those methods
are used in JDBC container.
+ </para>
- </important>
+ </important>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/data-container.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,608 +4,608 @@
%BOOK_ENTITIES;
]>
<section
id="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract">
- <title>JCR Workspace Data Container (architecture contract)</title>
- <section
id="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract-Goals">
- <title>Goals</title>
- <itemizedlist>
- <listitem>
- <para>
- Cover the requirements on Workspace Data Container implementation
- </para>
+ <title>JCR Workspace Data Container (architecture contract)</title>
+ <section
id="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract-Goals">
+ <title>Goals</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Cover the requirements on Workspace Data Container implementation
+ </para>
- </listitem>
- <listitem>
- <para>
- Describe container life cycle
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Describe container life cycle
+ </para>
- </listitem>
- <listitem>
- <para>
- Describe relations between container and high-level DataManagers
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Describe relations between container and high-level DataManagers
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract-Concepts">
- <title>Concepts</title>
- <section id="sect-Reference_Guide-Concepts-Container_and_connection">
- <title>Container and connection</title>
- <para>
- Workspace Data Container (container) serves Repository Workspace persistent storage.
WorkspacePersistentDataManager (data manager) uses container to perform CRUD operation on
the persistent storage. Accessing to the storage in the data manager is implemented via
storage connection obtained from the container (WorkspaceDataContainer interface
implemenatiton). Each connection represents a transaction on the storage. Storage
Connection (connection) should be an implementation of WorkspaceStorageConnection.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Container acts as a factory of a new storage connections. Usually, this method is
designed to be synchronized to avoid possible concurrent issues.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract-Concepts">
+ <title>Concepts</title>
+ <section
id="sect-Reference_Guide-Concepts-Container_and_connection">
+ <title>Container and connection</title>
+ <para>
+ Workspace Data Container (container) serves Repository Workspace
persistent storage. WorkspacePersistentDataManager (data manager) uses container to
perform CRUD operation on the persistent storage. Accessing to the storage in the data
manager is implemented via storage connection obtained from the container
(WorkspaceDataContainer interface implementation). Each connection represents a
transaction on the storage. Storage Connection (connection) should be an implementation of
WorkspaceStorageConnection.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Container acts as a factory of a new storage connections.
Usually, this method is designed to be synchronized to avoid possible concurrent issues.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java"
role="Java">WorkspaceStorageConnection openConnection() throws
RepositoryException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Open read-only WorkspaceStorageConnection. Read-only connections can be potentially
a bit faster in some cases.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Open read-only WorkspaceStorageConnection. Read-only connections
can be potentially a bit faster in some cases.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java"
role="Java">WorkspaceStorageConnection openConnection(boolean readOnly)
throws RepositoryException;
</programlisting>
- <note>
- <title>*EXPERIMENTAL*</title>
- <para>
- Read-only WorkspaceStorageConnection is experimental feature and not currently
handled in JCR. Actually, such connections didn't prove their performance, so JCR Core
doesn't use them.
- </para>
+ <note>
+ <title>*EXPERIMENTAL*</title>
+ <para>
+ Read-only WorkspaceStorageConnection is experimental feature and not
currently handled in JCR. Actually, such connections didn't prove their performance,
so JCR Core doesn't use them.
+ </para>
- </note>
- <itemizedlist>
- <listitem>
- <para>
- Storage connection might also be reused. This means reuse of physical resource
(e.g. JDBC Connection) allocated by one connection in another. This feature is used in a
data manager for saving ordinary and system changes on the system Workspace. But the reuse
is an optional feature and it can work, otherwise a new connection will open.
- </para>
+ </note>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Storage connection might also be reused. This means reuse of
physical resource (e.g. JDBC Connection) allocated by one connection in another. This
feature is used in a data manager for saving ordinary and system changes on the system
Workspace. But the reuse is an optional feature and it can work, otherwise a new
connection will open.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java"
role="Java">WorkspaceStorageConnection
reuseConnection(WorkspaceStorageConnection original) throws RepositoryException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- When checking Same-Name Siblings (SNS) existence, JCR Core can use new connection
or not. This is defined via Workspace Data Container configuration and retrieved by using
a special method.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ When checking Same-Name Siblings (SNS) existence, JCR Core can
use new connection or not. This is defined via Workspace Data Container configuration and
retrieved by using a special method.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">boolean
isCheckSNSNewConnection();
</programlisting>
- <para>
- Container initialization is only based on a configuration. After the container has
been created, it's not possible to change parameters. Configuration consists of
implementation class and set of properties and Value Storages configuration.
- </para>
+ <para>
+ Container initialization is only based on a configuration. After the
container has been created, it's not possible to change parameters. Configuration
consists of implementation class and set of properties and Value Storages configuration.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Concepts-Value_storages">
- <title>Value storages</title>
- <para>
- Container provides optional special mechanism for Value storing. It's possible to
configure external Value Storages via container configuration (available only via
configuration). Value Storage works as fully independent pluggable storage. All required
parameters storage obtains from its configuration. Some storages are possible for one
container. Configuration describes such parameters as ValueStoragePluginimplementation
class, set of implementation specific properties and filters. The filters declares
criteria for Value matching to the storage. Only matched Property Values will be stored.
So, in common case, the storage might contains only the part of the Workspace content.
Value Storages are very useful for BLOB storing. E.g. storing on the File System instead
of a database.
- </para>
- <para>
- Container obtains Values Storages from ValueStoragePluginProvider component. Provider
acts as a factory of Value channels (ValueIOChannel). Channel provides all CRUD operation
for Value Storage respecting the transaction manner of work (how it can be possible due to
implementation specifics of the storages).
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Concepts-Value_storages">
+ <title>Value storages</title>
+ <para>
+ Container provides optional special mechanism for Value storing. It's
possible to configure external Value Storages via container configuration (available only
via configuration). Value Storage works as fully independent pluggable storage. All
required parameters storage obtains from its configuration. Some storages are possible for
one container. Configuration describes such parameters as ValueStoragePluginimplementation
class, set of implementation specific properties and filters. The filters declares
criteria for Value matching to the storage. Only matched Property Values will be stored.
So, in common case, the storage might contains only the part of the Workspace content.
Value Storages are very useful for BLOB storing. E.g. storing on the File System instead
of a database.
+ </para>
+ <para>
+ Container obtains Values Storages from ValueStoragePluginProvider
component. Provider acts as a factory of Value channels (ValueIOChannel). Channel provides
all CRUD operation for Value Storage respecting the transaction manner of work (how it can
be possible due to implementation specifics of the storages).
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Concepts-Lifecycle">
- <title>Lifecycle</title>
- <para>
- Container is used for read and write operations by data manager. Read operations
(getters) uses connection once and close it on the finally. Write operations performs in
commit method as a sequence of creating/ updating calls and final commit (or rollback on
error). Writes uses one connection (or two - another for system workspace) per commit
call. One connection guaranties transaction support for write operations. Commit or
rollback should free/clean all resources consumed by the container (connection).
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Concepts-Lifecycle">
+ <title>Lifecycle</title>
+ <para>
+ Container is used for read and write operations by data manager. Read
operations (getters) uses connection once and close it on the finally. Write operations
performs in commit method as a sequence of creating/ updating calls and final commit (or
rollback on error). Writes uses one connection (or two - another for system workspace) per
commit call. One connection guaranties transaction support for write operations. Commit or
rollback should free/clean all resources consumed by the container (connection).
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Concepts-Value_storage_lifecycle">
- <title>Value storage lifecycle</title>
- <para>
- Value storage is used from the container inside. Reads are related to a container
reads. Writes are commit-related. Container (connection) implementation should use
transaction capabilities of the storages in the same way as for other operations.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Concepts-Value_storage_lifecycle">
+ <title>Value storage lifecycle</title>
+ <para>
+ Value storage is used from the container inside. Reads are related to a
container reads. Writes are commit-related. Container (connection) implementation should
use transaction capabilities of the storages in the same way as for other operations.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract-Requirements">
- <title>Requirements</title>
- <para>
- Connection creation and reuse should be a thread safe operation. Connection provides
CRUD operations support on the storage.
- </para>
- <section id="sect-Reference_Guide-Requirements-Read_operations">
- <title>Read operations</title>
- <itemizedlist>
- <listitem>
- <para>
- Read ItemData from the storage by item identifier.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract-Requirements">
+ <title>Requirements</title>
+ <para>
+ Connection creation and reuse should be a thread safe operation. Connection
provides CRUD operations support on the storage.
+ </para>
+ <section
id="sect-Reference_Guide-Requirements-Read_operations">
+ <title>Read operations</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Read ItemData from the storage by item identifier.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">ItemData
getItemData(String identifier) throws RepositoryException, IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Read ItemData from the storage by using the parent and name of the item, related to
the parent location.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Read ItemData from the storage by using the parent and name of
the item, related to the parent location.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">ItemData
getItemData(NodeData parentData, QPathEntry name) throws
RepositoryException,IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Read List of NodeData from the storage by using the parent location of the item.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Read List of NodeData from the storage by using the parent
location of the item.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java"
role="Java">List<NodeData> getChildNodesData(NodeData parent)
throws RepositoryException, IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Reads List of PropertyData from the storage by using the parent location of the
item.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Reads List of PropertyData from the storage by using the parent
location of the item.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java"
role="Java">List<PropertyData> getChildPropertiesData(NodeData
parent) throws RepositoryException, IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Reads List of PropertyData with empty ValueData from the storage by using the
parent location of the item.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Reads List of PropertyData with empty ValueData from the storage
by using the parent location of the item.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- This methiod specially dedicated for non-content modification operations (e.g. Items
delete).
- </para>
-
+ </itemizedlist>
+ <para>
+ This method specially dedicated for non-content modification operations
(e.g. Items delete).
+ </para>
+
<programlisting language="Java"
role="Java">List<PropertyData> listChildPropertiesData(NodeData
parent) throws RepositoryException, IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Reads List of PropertyData from the storage by using the parent location of the
item.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Reads List of PropertyData from the storage by using the parent
location of the item.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- It's REFERENCE type: Properties referencing Node with given nodeIdentifier. See
more in javax.jcr.Node.getReferences()
- </para>
-
+ </itemizedlist>
+ <para>
+ It's REFERENCE type: Properties referencing Node with given
nodeIdentifier. See more in javax.jcr.Node.getReferences()
+ </para>
+
<programlisting language="Java"
role="Java">List<PropertyData> getReferencesData(String
nodeIdentifier) throws
RepositoryException,IllegalStateException,UnsupportedOperationException;
</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Requirements-Write_operations">
- <title>Write operations</title>
- <itemizedlist>
- <listitem>
- <para>
- Add single NodeData.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Requirements-Write_operations">
+ <title>Write operations</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add single NodeData.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void add(NodeData
data) throws
RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Add single PropertyData.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add single PropertyData.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void
add(PropertyData data) throws
RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Update NodeData.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Update NodeData.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void
update(NodeData data) throws
RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Update PropertyData.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Update PropertyData.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void
update(PropertyData data) throws
RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Rename NodeData by using Node identifier and new name and indexing from the data.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Rename NodeData by using Node identifier and new name and
indexing from the data.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void
rename(NodeData data) throws
RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Delete NodeData.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Delete NodeData.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void
delete(NodeData data) throws
RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Delete PropertyData.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Delete PropertyData.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void
delete(PropertyData data) throws
RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Persist changes and closes connection. It can be database transaction commit for
instance etc.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Persist changes and closes connection. It can be database
transaction commit for instance etc.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void commit()
throws IllegalStateException, RepositoryException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Refuse persistent changes and closes connection. It can be database transaction
rollback for instance etc.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Refuse persistent changes and closes connection. It can be
database transaction rollback for instance etc.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void rollback()
throws IllegalStateException, RepositoryException;
</programlisting>
- <para>
- All methods throw IllegalStateException if connection is closed.
UnsupportedOperationException if the method is not supported (e.g. JCR Level 1
implementation etc). RepositoryException if some errors occur during preparation,
validation or persistence.
- </para>
+ <para>
+ All methods throw IllegalStateException if connection is closed.
UnsupportedOperationException if the method is not supported (e.g. JCR Level 1
implementation etc). RepositoryException if some errors occur during preparation,
validation or persistence.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Requirements-State_operations">
- <title>State operations</title>
- <itemizedlist>
- <listitem>
- <para>
- Return true if connection can be used.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Requirements-State_operations">
+ <title>State operations</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Return true if connection can be used.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">boolean
isOpened();
</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Requirements-Validation_of_write_operations">
- <title>Validation of write operations</title>
- <para>
- Container has to care about storage consistency (JCR constraints) on write
operations: (InvalidItemStateException should be thrown according the spec). At least, the
following checks should be performed:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- On ADD errors
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Parent not found. Condition: Parent ID (Item with ID is not exists).
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Requirements-Validation_of_write_operations">
+ <title>Validation of write operations</title>
+ <para>
+ Container has to care about storage consistency (JCR constraints) on
write operations: (InvalidItemStateException should be thrown according the spec). At
least, the following checks should be performed:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ On ADD errors
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Parent not found. Condition: Parent ID (Item with ID is
not exists).
+ </para>
- </listitem>
- <listitem>
- <para>
- Item already exists. Condition: ID (Item with ID already exists).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Item already exists. Condition: ID (Item with ID already
exists).
+ </para>
- </listitem>
- <listitem>
- <para>
- Item already exists. Condition: Parent ID, Name, Index (Item with parent ID, name
and index already exists).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Item already exists. Condition: Parent ID, Name, Index
(Item with parent ID, name and index already exists).
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- On DELETE errors
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Item not found. Condition ID.
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ On DELETE errors
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Item not found. Condition ID.
+ </para>
- </listitem>
- <listitem>
- <para>
- Can not delete parent till children exists.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Can not delete parent till children exists.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- On UPDATE errors
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Item not found. Condition ID.
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ On UPDATE errors
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Item not found. Condition ID.
+ </para>
- </listitem>
- <listitem>
- <para>
- Item already exists with higher Version. Condition: ID, Version (Some Session had
updated Item with ID prior this update).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Item already exists with higher Version. Condition: ID,
Version (Some Session had updated Item with ID prior this update).
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-Requirements-Consistency_of_save">
- <title>Consistency of save</title>
- <para>
- The container (connection) should implement consistency of Commit (Rollback) in
<emphasis role="bold">transaction manner</emphasis>. I.e. If a set
of operations was performed <emphasis role="bold">before</emphasis>
the future <emphasis role="bold">Commit</emphasis> and another next
operation <emphasis role="bold">fails</emphasis>. <emphasis
role="bold">It should be possible to</emphasis> rollback applied
changes using <emphasis role="bold">Rollback</emphasis> command.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Requirements-Consistency_of_save">
+ <title>Consistency of save</title>
+ <para>
+ The container (connection) should implement consistency of Commit
(Rollback) in <emphasis role="bold">transaction manner</emphasis>.
I.e. If a set of operations was performed <emphasis
role="bold">before</emphasis> the future <emphasis
role="bold">Commit</emphasis> and another next operation <emphasis
role="bold">fails</emphasis>. <emphasis role="bold">It
should be possible to</emphasis> rollback applied changes using <emphasis
role="bold">Rollback</emphasis> command.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract-Value_storages_API">
- <title>Value storages API</title>
- <section
id="sect-Reference_Guide-Value_storages_API-Storages_provider">
- <title>Storages provider:</title>
- <para>
- Container implementation obtains Values Storages option via
ValueStoragePluginProvider component. Provider acts as a factory of Value channels
(ValueIOChannel) and has two methods for this purpose:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Return ValueIOChannel matched this property and valueOrderNumer. Null will be
returned if no channel matches.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Workspace_Data_Container_architecture_contract-Value_storages_API">
+ <title>Value storages API</title>
+ <section
id="sect-Reference_Guide-Value_storages_API-Storages_provider">
+ <title>Storages provider:</title>
+ <para>
+ Container implementation obtains Values Storages option via
ValueStoragePluginProvider component. Provider acts as a factory of Value channels
(ValueIOChannel) and has two methods for this purpose:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Return ValueIOChannel matched this property and valueOrderNumer.
Null will be returned if no channel matches.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">ValueIOChannel
getApplicableChannel(PropertyData property, int valueOrderNumer) throws IOException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Return ValueIOChannel associated with given storageId.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Return ValueIOChannel associated with given storageId.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">ValueIOChannel
getChannel(String storageId) throws IOException, ValueStorageNotFoundException;
</programlisting>
- <para>
- There is also method for consistency check, but this method doesn't used anywhere
and storage implementations has it empty.
- </para>
+ <para>
+ There is also method for consistency check, but this method doesn't
used anywhere and storage implementations has it empty.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Value_storages_API-Value_storage_plugin">
- <title>Value storage plugin</title>
- <para>
- Provider implementation should use ValueStoragePlugin abstract class as a base for
all storage implementations. Plugin provides support for provider implementation methods.
Plugin's methods should be implemented:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Initialize this plugin. Used at start time in ValueStoragePluginProvider.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Value_storages_API-Value_storage_plugin">
+ <title>Value storage plugin</title>
+ <para>
+ Provider implementation should use ValueStoragePlugin abstract class as a
base for all storage implementations. Plugin provides support for provider implementation
methods. Plugin's methods should be implemented:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Initialize this plugin. Used at start time in
ValueStoragePluginProvider.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">public abstract
void init(Properties props, ValueDataResourceHolder resources) throws
RepositoryConfigurationException, IOException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Open ValueIOChannel.Used in
ValueStoragePluginProvider.getApplicableChannel(PropertyData, int) and getChannel(String)
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Open ValueIOChannel.Used in
ValueStoragePluginProvider.getApplicableChannel(PropertyData, int) and getChannel(String)
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">public abstract
ValueIOChannel openIOChannel() throws IOException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Return true if this storage has the same storageId.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Return true if this storage has the same storageId.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">public abstract
boolean isSame(String valueDataDescriptor);
</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Value_storages_API-Value_IO_channel">
- <title>Value I/O channel</title>
- <para>
- Channel should implement ValueIOChannel interface. CRUD operation for Value Storage:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Read Property value.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Value_storages_API-Value_IO_channel">
+ <title>Value I/O channel</title>
+ <para>
+ Channel should implement ValueIOChannel interface. CRUD operation for
Value Storage:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Read Property value.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">ValueData
read(String propertyId, int orderNumber, int maxBufferSize) throws IOException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Add or update Property value.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add or update Property value.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void write(String
propertyId, ValueData data) throws IOException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Delete Property all values.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Delete Property all values.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void delete(String
propertyId) throws IOException;
</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Value_storages_API-Transaction_support_via_channel">
- <title>Transaction support via channel</title>
- <para>
- Modification operations should be applied only when commiting. Rollback is required
for data created cleanup.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Commit channel changes.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Value_storages_API-Transaction_support_via_channel">
+ <title>Transaction support via channel</title>
+ <para>
+ Modification operations should be applied only when committing. Rollback
is required for data created cleanup.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Commit channel changes.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void commit()
throws IOException;
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Rollback channel changes.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Rollback channel changes.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">void rollback()
throws IOException;
</programlisting>
- </section>
-
+ </section>
+
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jbosscache-configuration-templates.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jbosscache-configuration-templates.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jbosscache-configuration-templates.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -66,7 +66,7 @@
<section
id="sect-Reference_Guide-JBoss_Cache_configuration-Shipped_JBoss_Cache_configuration_templates">
<title>Shipped JBoss Cache configuration templates</title>
<para>
- eXo JCR implementation is shipped with ready-to-use JBoss Cache configuration
templates for JCR's components. They are situated in application package in
/conf/porta/ folder.
+ eXo JCR implementation is shipped with ready-to-use JBoss Cache configuration
templates for JCR's components. They are situated in application package in
/conf/portal/ folder.
</para>
<section
id="sect-Reference_Guide-Shipped_JBoss_Cache_configuration_templates-Data_container_template">
<title>Data container template</title>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jbossts-transaction-service.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jbossts-transaction-service.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jbossts-transaction-service.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -11,7 +11,7 @@
JBossTransactionsService implements eXo <xref
linkend="sect-Reference_Guide-TransactionService" /> and provides access to
<ulink
url="http://www.jboss.org/jbosstm/">JBoss Transaction Service
(JBossTS)</ulink> JTA implementation via eXo container dependency.
</para>
<para>
- TransactionService used in JCR cache
<emphasis>org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache</emphasis>
implementaion. See <xref linkend="sect-Reference_Guide-Cluster_Config" />
for example.
+ TransactionService used in JCR cache
<emphasis>org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache</emphasis>
implementation. See <xref linkend="sect-Reference_Guide-Cluster_Config" />
for example.
</para>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jta.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jta.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/jta.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,10 +4,10 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-JTA">
- <!-- This document was created with Syntext Serna Free. -->
<title>JTA</title>
- <para>
- eXo JCR supports the Java Transaction API out of the box. If a
<emphasis>TransactionService</emphasis> has been defined (refer to the section
about the TransactionService for more details) at session save, it checks if a global
transaction is active and if so, it automatically enrolles the JCR session in the global
transaction. If you intend to use a managed data source, you will have to configure the
service <emphasis>DataSourceProvider</emphasis> (for more details please refer
to the corresponding section).
- </para>
+ <!-- This document was created with Syntext Serna Free. -->
<title>JTA</title>
+ <para>
+ eXo JCR supports the Java Transaction API out of the box. If a
<emphasis>TransactionService</emphasis> has been defined (refer to the section
about the TransactionService for more details) at session save, it checks if a global
transaction is active and if so, it automatically enrols the JCR session in the global
transaction. If you intend to use a managed data source, you will have to configure the
service <emphasis>DataSourceProvider</emphasis> (for more details please refer
to the corresponding section).
+ </para>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/binary-values-processing.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/binary-values-processing.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/other/binary-values-processing.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -135,7 +135,7 @@
<programlisting language="Java" role="Java">void
update(InputStream stream, long length, long position) throws
IOException;</programlisting>
<para>
- Set the length of the Value in bytes to the specified size. If the size is
lower than 0, the IOException exception will be thrown. This operation can be used to
extend or truncat the Value size. This method is used internally in the update operation
in case of extending the size to the given position.
+ Set the length of the Value in bytes to the specified size. If the size is
lower than 0, the IOException exception will be thrown. This operation can be used to
extend or truncate the Value size. This method is used internally in the update operation
in case of extending the size to the given position.
</para>
<programlisting language="Java" role="Java">void setLength(long
size) throws IOException;</programlisting>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/performance-tuning-guide.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/performance-tuning-guide.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/performance-tuning-guide.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -160,7 +160,7 @@
</table>
<para>
- <citetitle>Read operaion with more threads</citetitle>:
+ <citetitle>Read operation with more threads</citetitle>:
</para>
<simplelist>
<member>Warm-up iterations: 100</member>
@@ -274,7 +274,7 @@
<section
id="sect-Reference_Guide-Performance_Tuning_Guide-JBoss_AS_Tuning">
<title>JBoss AS Tuning</title>
<para>
- You can use <parameter>maxThreads</parameter> parameter to
increase maximum amount of threads that can be launched in AS instance. This can improve
performance if you need a high level of concurrency. also you can use
<code>-XX:+UseParallelGC</code> java directory to use paralel garbage
collector.
+ You can use <parameter>maxThreads</parameter> parameter to
increase maximum amount of threads that can be launched in AS instance. This can improve
performance if you need a high level of concurrency. also you can use
<code>-XX:+UseParallelGC</code> java directory to use parallel garbage
collector.
</para>
<note>
<title>Note</title>
@@ -308,13 +308,13 @@
<citetitle>Eviction</citetitle>
</para>
<para>
- Manipulations with eviction
<parameter>wakeUpInterval</parameter> value doestn't affect on
performance. Performance results with values from 500 up to 3000 are approximately equal.
+ Manipulations with eviction
<parameter>wakeUpInterval</parameter> value does not affect on performance.
Performance results with values from 500 up to 3000 are approximately equal.
</para>
<para>
<citetitle>Transaction Timeout</citetitle>
</para>
<para>
- Using short timeout for long transactions such as Export/Import, removing
huge subtree defined timeout may cause
<exceptionname>TransactionTimeoutException</exceptionname>. [TODO] put
recomended timeout value
+ Using short timeout for long transactions such as Export/Import, removing
huge subtree defined timeout may cause
<exceptionname>TransactionTimeoutException</exceptionname>.
</para>
</section>
@@ -334,7 +334,7 @@
<citetitle>Write performance in cluster</citetitle>
</para>
<para>
- Exo JCR implementation uses Lucene indexing engine to provide search
capabilities. But Lucene brings some limitations for write operations: it can perform
indexing only in one thread. Thats why write performance in cluster is not higher than in
singleton environment. Data is indexed on coordinator node, so increasing write-load on
cluster may lead to ReplicationTimeout exception. It occurs because writing threads queue
in the indexer and under high load timeout for replication to coordinator will be
exceeded.
+ Exo JCR implementation uses Lucene indexing engine to provide search
capabilities. But Lucene brings some limitations for write operations: it can perform
indexing only in one thread. That is why write performance in cluster is not higher than
in singleton environment. Data is indexed on coordinator node, so increasing write-load on
cluster may lead to ReplicationTimeout exception. It occurs because writing threads queue
in the indexer and under high load timeout for replication to coordinator will be
exceeded.
</para>
<para>
Taking in consideration this fact, it is recommended to exceed
<parameter>replTimeout</parameter> value in cache configurations in case of
high write-load.
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/protocols/ftp.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/protocols/ftp.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/protocols/ftp.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,54 +4,54 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-FTP">
- <title>FTP</title>
- <section id="sect-Reference_Guide-FTP-Introdution">
- <title>Introdution</title>
- <para>
- The JCR-FTP Server represents the standard eXo service, operates as an FTP server with
an access to a content stored in JCR repositories in the form of <emphasis
role="bold">nt:file/nt:folder</emphasis> nodes or their successors. The
client of an executed Server can be any FTP client. The FTP server is supported by a
standard configuration which can be changed as required.
- </para>
+ <title>FTP</title>
+ <section id="sect-Reference_Guide-FTP-Introduction">
+ <title>Introdution</title>
+ <para>
+ The JCR-FTP Server represents the standard eXo service, operates as an FTP
server with an access to a content stored in JCR repositories in the form of <emphasis
role="bold">nt:file/nt:folder</emphasis> nodes or their successors. The
client of an executed Server can be any FTP client. The FTP server is supported by a
standard configuration which can be changed as required.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-FTP-Configuration_Parameters">
- <title>Configuration Parameters</title>
- <section
id="sect-Reference_Guide-Configuration_Parameters-command_port">
- <title>command-port:</title>
-
+ </section>
+
+ <section id="sect-Reference_Guide-FTP-Configuration_Parameters">
+ <title>Configuration Parameters</title>
+ <section
id="sect-Reference_Guide-Configuration_Parameters-command_port">
+ <title>command-port:</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>command-port</name>
<value>21</value>
</value-param></programlisting>
- <para>
- The value of the command channel port. The value '21' is default.
- </para>
- <para>
- When you have already some FTP server installed in your system , this parameter needs
to be changed (2121 for example) to avoid conflicts or if the port is protected.
- </para>
+ <para>
+ The value of the command channel port. The value '21' is
default.
+ </para>
+ <para>
+ When you have already some FTP server installed in your system , this
parameter needs to be changed (2121 for example) to avoid conflicts or if the port is
protected.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Parameters-data_min_port_amp_data_max_port">
- <title>data-min-port & data-max-port</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-data_min_port_amp_data_max_port">
+ <title>data-min-port & data-max-port</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>data-min-port</name>
<value>52000</value>
</value-param></programlisting>
-
+
<programlisting language="XML"
role="XML"><value-param>
<name>data-max-port</name>
<value>53000</value>
</value-param></programlisting>
- <para>
- These two parameters indicate the minimal and maximal values of the range of ports,
used by the server. The usage of the additional data channel is required by the FTP -
protocol, which is used to transfer the contents of files and the listing of catalogues.
This range of ports should be free from listening by other server-programs.
- </para>
+ <para>
+ These two parameters indicate the minimal and maximal values of the range
of ports, used by the server. The usage of the additional data channel is required by the
FTP - protocol, which is used to transfer the contents of files and the listing of
catalogues. This range of ports should be free from listening by other server-programs.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Configuration_Parameters-system">
- <title>system</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-system">
+ <title>system</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>system</name>
@@ -59,15 +59,15 @@
or
<value>UNIX Type: L8</value>
</value-param></programlisting>
- <para>
- Types of formats of listing of catalogues which are supported.
- </para>
+ <para>
+ Types of formats of listing of catalogues which are supported.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Parameters-client_side_encoding">
- <title>client-side-encoding</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-client_side_encoding">
+ <title>client-side-encoding</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>client-side-encoding</name>
@@ -76,105 +76,105 @@
<value>KOI8-R</value>
</value-param></programlisting>
- <para>
- This parameter specifies the coding which is used for dialogue with the client.
- </para>
+ <para>
+ This parameter specifies the coding which is used for dialogue with the
client.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Parameters-def_folder_node_type">
- <title>def-folder-node-type</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-def_folder_node_type">
+ <title>def-folder-node-type</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>def-folder-node-type</name>
<value>nt:folder</value>
</value-param></programlisting>
- <para>
- This parameter specifies the type of a node, when an FTP-folder is created.
- </para>
+ <para>
+ This parameter specifies the type of a node, when an FTP-folder is
created.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Parameters-def_file_node_type">
- <title>def-file-node-type</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-def_file_node_type">
+ <title>def-file-node-type</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>def-file-node-type</name>
<value>nt:file</value>
</value-param></programlisting>
- <para>
- This parameter specifies the type of a node, when an FTP - file is created.
- </para>
+ <para>
+ This parameter specifies the type of a node, when an FTP - file is
created.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Parameters-def_file_mime_type">
- <title>def-file-mime-type</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-def_file_mime_type">
+ <title>def-file-mime-type</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>def-file-mime-type</name>
<value>application/zip</value>
</value-param></programlisting>
- <para>
- The mime type of a created file is chosen by using its file extention. In case, a
server cannot find the corresponding mime type, this value is used.
- </para>
+ <para>
+ The mime type of a created file is chosen by using its file extention. In
case, a server cannot find the corresponding mime type, this value is used.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Parameters-cache_folder_name">
- <title>cache-folder-name</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-cache_folder_name">
+ <title>cache-folder-name</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>cache-folder-name</name>
<value>../temp/ftp_cache</value>
</value-param></programlisting>
- <para>
- The Path of the cache folder.
- </para>
+ <para>
+ The Path of the cache folder.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Parameters-upload_speed_limit">
- <title>upload-speed-limit</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-upload_speed_limit">
+ <title>upload-speed-limit</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>upload-speed-limit</name>
<value>20480</value>
</value-param></programlisting>
- <para>
- Restriction of the upload speed. It is measured in bytes.
- </para>
+ <para>
+ Restriction of the upload speed. It is measured in bytes.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Parameters-download_speed_limit">
- <title>download-speed-limit</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-download_speed_limit">
+ <title>download-speed-limit</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>download-speed-limit</name>
<value>20480</value>
</value-param></programlisting>
- <para>
- Restriction of the download speed. It is measured in bytes.
- </para>
+ <para>
+ Restriction of the download speed. It is measured in bytes.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Configuration_Parameters-timeout">
- <title>timeout</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Parameters-timeout">
+ <title>timeout</title>
+
<programlisting language="XML"
role="XML"><value-param>
<name>timeout</name>
<value>60</value>
</value-param></programlisting>
- <para>
- Defines the value of a timeout.
- </para>
+ <para>
+ Defines the value of a timeout.
+ </para>
- </section>
-
+ </section>
+
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/repository-creation-service.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/repository-creation-service.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/repository-creation-service.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -21,16 +21,16 @@
<itemizedlist>
<listitem>
<para>
- <xref linkend="sect-Reference_Guide-Database_Creator"
/> - DBCreator used to create new database for each unbinded datasource.
+ <!--<xref
linkend="sect-Reference_Guide-Database_Creator" />--> DBCreator used to
create new database for each unbinded datasource.
</para>
</listitem>
- <!--<listitem>
+ <listitem>
<para>
- <xref
linkend="sect-Reference_Guide-eXo_JCR_Backup_Service" /> - BackupManager used
to created repository from backup.
+ <!--<xref
linkend="sect-Reference_Guide-eXo_JCR_Backup_Service" /> --> BackupManager
used to created repository from backup.
</para>
- </listitem>-->
+ </listitem>
<listitem>
<para>
<xref linkend="sect-Reference_Guide-RPC_Service" /> -
RPCService used for communication between cluster-nodes
@@ -53,13 +53,13 @@
</listitem>
<listitem>
<para>
- than user executes createRepository(String backupId, RepositoryEntry
rEntry, String token). Coordinator-node checks the token, and creates Repository.
+ Then user executes createRepository(String backupId, RepositoryEntry
rEntry, String token). Coordinator-node checks the token, and creates Repository.
</para>
</listitem>
<listitem>
<para>
- whan repository become created - user-node broadcast message to all
clusterNodes with RepositoryEntry, so each cluster node starts new Repository.
+ When repository become created - user-node broadcast message to all
clusterNodes with RepositoryEntry, so each cluster node starts new Repository.
</para>
</listitem>
@@ -246,7 +246,7 @@
<section
id="sect-Reference_Guide-RepositoryCreationService-Conclusions_and_restrictions">
<title>Conclusions and restrictions</title>
<para>
- Each datasource in RepositoryEntry of new Repository must have
unbinded datasources. Thats mean, such datasource must have not databases behind them.
This restriction exists to avoid corruption of existing repositories data.
+ Each datasource in RepositoryEntry of new Repository must have
unbinded datasources. That means, such datasource must have not databases behind them.
This restriction exists to avoid corruption of existing repositories data.
</para>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/aggregation-rule.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/aggregation-rule.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/aggregation-rule.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -6,7 +6,7 @@
<section
id="sect-Reference_Guide-Finding_ntfile_node_by_content_of_child_jcrcontent_node">
<title>Finding nt:file node by content of child jcr:content node</title>
<para>
- The node type nt:file represents a file. It requires a single child node, called
jcr:content. This node type represents images and other binary content in a JCRWiki entry.
The node type of jcr:conent is nt:resource which represents the actual content of a file.
+ The node type nt:file represents a file. It requires a single child node, called
jcr:content. This node type represents images and other binary content in a JCRWiki entry.
The node type of jcr:content is nt:resource which represents the actual content of a
file.
</para>
<para>
Find node with the primary type is 'nt:file' and which whose
'jcr:content' child node contains "cats".
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/find-similar-nodes.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/find-similar-nodes.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/find-similar-nodes.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -9,7 +9,7 @@
Find similar nodes to node by path '/baseFile/jcr:content'.
</para>
<para>
- In our example, baseFile will contain text where "terms" word happens
many times. That's a reason why the existanse of this word will be used as a criteria
of node similarity (for node baseFile).
+ In our example, baseFile will contain text where "terms" word happens
many times. That's a reason why the existence of this word will be used as a criteria
of node similarity (for node baseFile).
</para>
<note>
<para>
@@ -91,7 +91,7 @@
<itemizedlist>
<listitem>
<para>
- jcr:content (nt:resource) jcr:data="
<emphasis role="bold">Terms</emphasis> occures here"
+ jcr:content (nt:resource) jcr:data="
<emphasis role="bold">Terms</emphasis> occurs here"
</para>
</listitem>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/higlight.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/higlight.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/higlight.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -29,7 +29,7 @@
Also, remember that we can make indexing rules, as in the example below:
</para>
<para>
- Let's write rule for all nodes with primary node type
'nt:unstructed' where property 'rule' equal to "excerpt" string.
For those nodes, we will exclude property "title" from high-lighting and set
"text" property as highlightable. Indexing-configuration.xml must containt the
next rule:
+ Let's write rule for all nodes with primary node type
'nt:unstructured' where property 'rule' equal to "excerpt"
string. For those nodes, we will exclude property "title" from high-lighting and
set "text" property as highlightable. Indexing-configuration.xml must contain
the next rule:
</para>
<programlisting language="XML" role="XML"><index-rule
nodeType="nt:unstructured"
condition="@rule='excerpt'">
@@ -159,7 +159,7 @@
</table>
<para>
- As you see, words "eXo" and "implamentation" is
highlighted.
+ As you see, words "eXo" and "implementation" is
highlighted.
</para>
<para>
Also, we can get exactly "rep:excerpt" value:
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/ignore-accent-symbols.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/ignore-accent-symbols.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/ignore-accent-symbols.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -29,7 +29,7 @@
<itemizedlist>
<listitem>
<para>
- The second way: Register new Analyzer in QueryHandler configuration (this
one eccepted since 1.12 version);
+ The second way: Register new Analyzer in QueryHandler configuration (this
one accepted since 1.12 version);
</para>
</listitem>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/index-boost-value.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/index-boost-value.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/index-boost-value.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,28 +4,28 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Changing_Priority_of_Node">
- <title>Changing Priority of Node</title>
- <para>
- In this example, we will set different boost values for predefined nodes, and will
check effect by selecting those nodes and order them by jcr:score.
- </para>
- <para>
- The default boost value is 1.0. Higher boost values (a reasonable range is 1.0 - 5.0)
will yield a higher score value and appear as more relevant.
- </para>
- <note>
- <para>
- See 4.2.2 Index Boost Value <xref
linkend="sect-Reference_Guide-Search_Configuration" />
- </para>
+ <title>Changing Priority of Node</title>
+ <para>
+ In this example, we will set different boost values for predefined nodes, and
will check effect by selecting those nodes and order them by jcr:score.
+ </para>
+ <para>
+ The default boost value is 1.0. Higher boost values (a reasonable range is 1.0 -
5.0) will yield a higher score value and appear as more relevant.
+ </para>
+ <note>
+ <para>
+ See 4.2.2 Index Boost Value <xref
linkend="sect-Reference_Guide-Search_Configuration" />
+ </para>
- </note>
- <section
id="sect-Reference_Guide-Changing_Priority_of_Node-Indexing_configuration">
- <title>Indexing configuration</title>
- <para>
- In next configuration, we will set boost values for nt:ustructured nodes
'text' property.
- </para>
- <para>
- indexing-config.xml:
- </para>
-
+ </note>
+ <section
id="sect-Reference_Guide-Changing_Priority_of_Node-Indexing_configuration">
+ <title>Indexing configuration</title>
+ <para>
+ In next configuration, we will set boost values for nt:unstructured nodes
'text' property.
+ </para>
+ <para>
+ indexing-config.xml:
+ </para>
+
<programlisting language="XML" role="XML"><!--
This rule actualy do nothing. 'text' property has default boost value.
-->
@@ -50,52 +50,52 @@
<property boost="3.0">text</property>
</index-rule></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Changing_Priority_of_Node-Repository_structure">
- <title>Repository structure:</title>
- <para>
- Repository contains many nodes with primary type nt:unstructured. Each node contains
'text' property and 'rule' property with different values.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- root
- </para>
- <itemizedlist>
- <listitem>
- <para>
- node1(nt:unstructured) rule='boost1' text='The quick brown fox
jump...'
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Changing_Priority_of_Node-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ Repository contains many nodes with primary type nt:unstructured. Each node
contains 'text' property and 'rule' property with different values.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ root
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ node1(nt:unstructured) rule='boost1' text='The
quick brown fox jump...'
+ </para>
- </listitem>
- <listitem>
- <para>
- node2(nt:unstructured) rule='boost2' text='The quick brown fox
jump...'
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ node2(nt:unstructured) rule='boost2' text='The
quick brown fox jump...'
+ </para>
- </listitem>
- <listitem>
- <para>
- node3(nt:unstructured) rule='boost3' text='The quick brown fox
jump...'
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ node3(nt:unstructured) rule='boost3' text='The
quick brown fox jump...'
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-Changing_Priority_of_Node-Query_execution">
- <title>Query execution</title>
- <para>
- <emphasis role="bold">SQL</emphasis>
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Changing_Priority_of_Node-Query_execution">
+ <title>Query execution</title>
+ <para>
+ <emphasis role="bold">SQL</emphasis>
+ </para>
+
<programlisting language="Java" role="Java">// make SQL query
QueryManager queryManager = workspace.getQueryManager();
// create query
@@ -103,10 +103,10 @@
Query query = queryManager.createQuery(sqlStatement, Query.SQL);
// execute query and fetch result
QueryResult result = query.execute();</programlisting>
- <para>
- <emphasis role="bold">XPath</emphasis>
- </para>
-
+ <para>
+ <emphasis role="bold">XPath</emphasis>
+ </para>
+
<programlisting language="Java" role="Java">// make XPath
query
QueryManager queryManager = workspace.getQueryManager();
// create query
@@ -115,25 +115,25 @@
// execute query and fetch result
QueryResult result = query.execute();</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Changing_Priority_of_Node-Fetching_result">
- <title>Fetching result</title>
- <para>
- Let's get nodes:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Changing_Priority_of_Node-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ Let's get nodes:
+ </para>
+
<programlisting language="Java" role="Java">NodeIterator it =
result.getNodes();
if(it.hasNext())
{
Node findedNode = it.nextNode();
}</programlisting>
- <para>
- NodeIterator will return nodes in next order "node3", "node2",
"node1".
- </para>
+ <para>
+ NodeIterator will return nodes in next order "node3",
"node2", "node1".
+ </para>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/jcr-query-usecases.bk
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/jcr-query-usecases.bk 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/jcr-query-usecases.bk 2011-09-27
06:12:04 UTC (rev 7511)
@@ -182,7 +182,7 @@
</section>
<section>
- <title>Ordering specifing</title>
+ <title>Ordering specifying</title>
<itemizedlist>
<listitem>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/jcr-query-usecases.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/jcr-query-usecases.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/jcr-query-usecases.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,33 +4,33 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-JCR_Query_Usecases">
- <title>JCR Query Usecases</title>
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Intro">
- <title>Intro</title>
- <para>
- JCR supports two query languages - JCR and XPath. A query, whether XPath or SQL,
specifies a subset of nodes within a workspace, called the result set. The result set
constitutes all the nodes in the workspace that meet the constraints stated in the query.
- </para>
+ <title>JCR Query Usecases</title>
+ <section id="sect-Reference_Guide-JCR_Query_Usecases-Intro">
+ <title>Intro</title>
+ <para>
+ JCR supports two query languages - JCR and XPath. A query, whether XPath or
SQL, specifies a subset of nodes within a workspace, called the result set. The result set
constitutes all the nodes in the workspace that meet the constraints stated in the query.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Query_Lifecycle">
- <title>Query Lifecycle</title>
- <section
id="sect-Reference_Guide-Query_Lifecycle-Query_Creation_and_Execution">
- <title>Query Creation and Execution</title>
- <para>
- <emphasis role="bold">SQL</emphasis>
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Query_Usecases-Query_Lifecycle">
+ <title>Query Lifecycle</title>
+ <section
id="sect-Reference_Guide-Query_Lifecycle-Query_Creation_and_Execution">
+ <title>Query Creation and Execution</title>
+ <para>
+ <emphasis role="bold">SQL</emphasis>
+ </para>
+
<programlisting language="Java" role="Java">// get
QueryManager
QueryManager queryManager = workspace.getQueryManager();
// make SQL query
Query query = queryManager.createQuery("SELECT * FROM nt:base ", Query.SQL);
// execute query
QueryResult result = query.execute();</programlisting>
- <para>
- <emphasis role="bold">XPath</emphasis>
- </para>
-
+ <para>
+ <emphasis role="bold">XPath</emphasis>
+ </para>
+
<programlisting language="Java" role="Java">// get
QueryManager
QueryManager queryManager = workspace.getQueryManager();
// make XPath query
@@ -38,22 +38,22 @@
// execute query
QueryResult result = query.execute();</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Query_Lifecycle-Query_Result_Processing">
- <title>Query Result Processing</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Query_Lifecycle-Query_Result_Processing">
+ <title>Query Result Processing</title>
+
<programlisting language="Java" role="Java">// fetch query
result
QueryResult result = query.execute();</programlisting>
- <para>
- Now we can get result in an iterator of nodes:
- </para>
-
+ <para>
+ Now we can get result in an iterator of nodes:
+ </para>
+
<programlisting language="Java" role="Java">NodeIterator it =
result.getNodes();</programlisting>
- <para>
- or we get the result in a table:
- </para>
-
+ <para>
+ or we get the result in a table:
+ </para>
+
<programlisting language="Java" role="Java">// get column
names
String[] columnNames = result.getColumnNames();
// get column rows
@@ -65,334 +65,334 @@
Value[] values = row.getValues();
}</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Query_Lifecycle-Scoring">
- <title>Scoring</title>
- <para>
- The result returns a score for each row in the result set. The score contains a value
that indicates a rating of how well the result node matches the query. A high value means
a better matching than a low value. This score can be used for ordering the result.
- </para>
- <para>
- eXo JCR Scoring is a mapping of Lucene scoring. For a more in-depth understanding,
please study <ulink
url="http://lucene.apache.org/java/2_4_1/scoring.html">Lucene
documentation</ulink>.
- </para>
- <para>
- jcr:score counted in next way - (lucene score)*1000f.
- </para>
- <para>
- Score may be increased for specified nodes, see <xref
linkend="sect-Reference_Guide-Changing_Priority_of_Node" />
- </para>
- <para>
- Also, see an example <xref
linkend="sect-Reference_Guide-Ordering_by_Score" />
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Query_Lifecycle-Scoring">
+ <title>Scoring</title>
+ <para>
+ The result returns a score for each row in the result set. The score
contains a value that indicates a rating of how well the result node matches the query. A
high value means a better matching than a low value. This score can be used for ordering
the result.
+ </para>
+ <para>
+ eXo JCR Scoring is a mapping of Lucene scoring. For a more in-depth
understanding, please study <ulink
url="http://lucene.apache.org/java/2_4_1/scoring.html">Lucene
documentation</ulink>.
+ </para>
+ <para>
+ jcr:score counted in next way - (lucene score)*1000f.
+ </para>
+ <para>
+ Score may be increased for specified nodes, see <xref
linkend="sect-Reference_Guide-Changing_Priority_of_Node" />
+ </para>
+ <para>
+ Also, see an example <xref
linkend="sect-Reference_Guide-Ordering_by_Score" />
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-JCR_Query_Usecases-Query_result_settings">
- <title>Query result settings</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-SetOffset_and_SetLimit" />
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Query_Usecases-Query_result_settings">
+ <title>Query result settings</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-SetOffset_and_SetLimit" />
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-JCR_Query_Usecases-Type_Constraints">
- <title>Type Constraints</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_All_Nodes" />
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Query_Usecases-Type_Constraints">
+ <title>Type Constraints</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Finding_All_Nodes"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_Nodes_by_Primary_Type"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Finding_Nodes_by_Primary_Type" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type" />
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-JCR_Query_Usecases-Property_Constraints">
- <title>Property Constraints</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Property_Comparison" />
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Query_Usecases-Property_Constraints">
+ <title>Property Constraints</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Property_Comparison"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-LIKE_Constraint" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-LIKE_Constraint"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Escaping_in_LIKE_Statements" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Escaping_in_LIKE_Statements" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-NOT_Constraint" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-NOT_Constraint"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-AND_Constraint" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-AND_Constraint"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-OR_Constraint" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-OR_Constraint"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Property_Existence_Constraint"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Property_Existence_Constraint" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Date_Property_Comparison" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Date_Property_Comparison" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Node_Name_Constraint" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Node_Name_Constraint" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multivalue_Property_Comparison"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Multivalue_Property_Comparison" />
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Path_Constraint">
- <title>Path Constraint</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Exact_Path_Constraint" />
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Query_Usecases-Path_Constraint">
+ <title>Path Constraint</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Exact_Path_Constraint" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Child_Node_Constraint" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Child_Node_Constraint" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_All_Descendant_Nodes"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Finding_All_Descendant_Nodes" />
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-JCR_Query_Usecases-Ordering_specifing">
- <title>Ordering specifing</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Sorting_Nodes_by_Property" />
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Query_Usecases-Ordering_specifing">
+ <title>Ordering specifying</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Sorting_Nodes_by_Property" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Ordering_by_Score" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Ordering_by_Score"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Ordering_by_Path_or_Name" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Ordering_by_Path_or_Name" />
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section>
- <title><xref
linkend="sect-Reference_Guide-Fulltext_Search_And_Affecting_Settings"
/></title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Fulltext_Search_by_Property" />
- </para>
+ </section>
+
+ <section>
+ <title><xref
linkend="sect-Reference_Guide-Fulltext_Search_And_Affecting_Settings"
/></title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Fulltext_Search_by_Property" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-Finding_ntfile_node_by_content_of_child_jcrcontent_node"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Finding_ntfile_node_by_content_of_child_jcrcontent_node"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-Ignoring_Accent_Symbols._New_Analyzer_Setting."
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Ignoring_Accent_Symbols._New_Analyzer_Setting."
/>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-JCR_Query_Usecases-Indexing_rules_and_additional_features">
- <title>Indexing rules and additional features</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-Finding_ntfile_node_by_content_of_child_jcrcontent_node"
/>
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Query_Usecases-Indexing_rules_and_additional_features">
+ <title>Indexing rules and additional features</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Finding_ntfile_node_by_content_of_child_jcrcontent_node"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-High_lighting_Result_of_Fulltext_Search" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-High_lighting_Result_of_Fulltext_Search" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Changing_Priority_of_Node" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Changing_Priority_of_Node" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Searching_By_Synonim" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Searching_By_Synonim" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Checking_the_spelling_of_Phrase"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Checking_the_spelling_of_Phrase" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_Similar_Nodes" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-Finding_Similar_Nodes" />
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Query_Examples">
- <title>Query Examples</title>
- <xi:include href="offset-and-limit.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-all-nodes.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-nodes-by-primary-type.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-nodes-by-mixin-type.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="property-comparison.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="like-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="escaping-like-statements.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="not-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="and-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="or-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="property-existance-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-nodes-case-insensitive.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="date-property-comparison.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="node-name-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="multivalue-property-comparison.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="exact-path-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="child-node-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-all-descendant-nodes.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="order-by-property.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="order-by-descendant.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="order-by-score.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="order-by-path-or-name.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="fulltext-search-by-property.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="fulltext-search-by-all-properties.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="ignore-accent-symbols.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="aggregation-rule.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="index-boost-value.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="node-scope-index.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="regexp-indexing-rule.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="higlight.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="synonim-provider.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="spell-checker.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-similar-nodes.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Query_Usecases-Query_Examples">
+ <title>Query Examples</title>
+ <xi:include href="offset-and-limit.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="find-all-nodes.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="find-nodes-by-primary-type.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="find-nodes-by-mixin-type.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="property-comparison.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="like-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="escaping-like-statements.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="not-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="and-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="or-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="property-existance-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="find-nodes-case-insensitive.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="date-property-comparison.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="node-name-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="multivalue-property-comparison.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="exact-path-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="child-node-constraint.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="find-all-descendant-nodes.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="order-by-property.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="order-by-descendant.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="order-by-score.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="order-by-path-or-name.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="fulltext-search-by-property.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="fulltext-search-by-all-properties.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="ignore-accent-symbols.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="aggregation-rule.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="index-boost-value.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="node-scope-index.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="regexp-indexing-rule.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="higlight.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="synonim-provider.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="spell-checker.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="find-similar-nodes.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- </section>
-
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Tips_and_tricks">
- <title>Tips and tricks</title>
- <xi:include href="tip-nodename-with-number.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ </section>
+
+ <section
id="sect-Reference_Guide-JCR_Query_Usecases-Tips_and_tricks">
+ <title>Tips and tricks</title>
+ <xi:include href="tip-nodename-with-number.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/node-scope-index.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/node-scope-index.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/node-scope-index.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -6,7 +6,7 @@
<section
id="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope">
<title>Removing Nodes Property From Indexing Scope</title>
<para>
- In this example, we will exclude some 'text' property of nt:unstructured
node from indexind. And, therefore, node will not be found by the content of this
property, even if it accepts all constraints.
+ In this example, we will exclude some 'text' property of nt:unstructured
node from indexing. And, therefore, node will not be found by the content of this
property, even if it accepts all constraints.
</para>
<para>
First of all, add rules to indexing-configuration.xml:
@@ -52,7 +52,7 @@
</listitem>
<listitem>
<para>
- node3 (nt:unstructured) text="The quick brown fox
..." // as you see this node not mentioned in indexing-coniguration
+ node3 (nt:unstructured) text="The quick brown fox
..." // as you see this node not mentioned in indexing-configuration
</para>
</listitem>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/regexp-indexing-rule.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/regexp-indexing-rule.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/regexp-indexing-rule.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -6,7 +6,7 @@
<section
id="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules">
<title>Regular Expression as Property Name in Indexing Rules</title>
<para>
- In this example, we want to configure indexind in the next way. All properties of
nt:unstructured nodes must be excluded from search, except properties whoes names ends
with 'Text' string. First of all, add rules to indexing-configuration.xml:
+ In this example, we want to configure indexing in the next way. All properties of
nt:unstructured nodes must be excluded from search, except properties whoes names ends
with 'Text' string. First of all, add rules to indexing-configuration.xml:
</para>
<programlisting language="XML" role="XML"><index-rule
nodeType="nt:unstructured"">
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/searching-repository-content.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/searching-repository-content.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/searching-repository-content.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,45 +4,45 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Searching_Repository_Content">
- <title>Searching Repository Content</title>
- <section
id="sect-Reference_Guide-Searching_Repository_Content-Introduction">
- <title>Introduction</title>
- <para>
- You can find the JCR configuration file here:
.../portal/WEB-INF/conf/jcr/repository-configuration.xml. Please read also <xref
linkend="sect-Reference_Guide-Search_Configuration" /> for more information
about index configuration.
- </para>
+ <title>Searching Repository Content</title>
+ <section
id="sect-Reference_Guide-Searching_Repository_Content-Introduction">
+ <title>Introduction</title>
+ <para>
+ You can find the JCR configuration file here:
.../portal/WEB-INF/conf/jcr/repository-configuration.xml. Please read also <xref
linkend="sect-Reference_Guide-Search_Configuration" /> for more information
about index configuration.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Searching_Repository_Content-Bi_directional_RangeIterator_since_1.9">
- <title>Bi-directional RangeIterator (since 1.9)</title>
- <para>
- QueryResult.getNodes() will return bi-directional NodeIterator implementation.
- </para>
- <note>
- <para>
- Bi-directional NodeIterator is <emphasis role="bold">not
supported</emphasis> in two cases:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- SQL query: select * from nt:base
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Searching_Repository_Content-Bi_directional_RangeIterator_since_1.9">
+ <title>Bi-directional RangeIterator (since 1.9)</title>
+ <para>
+ QueryResult.getNodes() will return bi-directional NodeIterator
implementation.
+ </para>
+ <note>
+ <para>
+ Bi-directional NodeIterator is <emphasis role="bold">not
supported</emphasis> in two cases:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ SQL query: select * from nt:base
+ </para>
- </listitem>
- <listitem>
- <para>
- XPath query: //* .
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ XPath query: //* .
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </note>
- <para>
- TwoWayRangeIterator interface:
- </para>
-
+ </note>
+ <para>
+ TwoWayRangeIterator interface:
+ </para>
+
<programlisting language="Java" role="Java">/**
* Skip a number of elements in the iterator.
*
@@ -51,10 +51,10 @@
* in the iterator.
*/
public void skipBack(long skipNum);</programlisting>
- <para>
- Usage:
- </para>
-
+ <para>
+ Usage:
+ </para>
+
<programlisting language="Java" role="Java">NodeIterator iter =
queryResult.getNodes();
while (iter.hasNext()) {
if (skipForward) {
@@ -66,39 +66,39 @@
.......
}</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Searching_Repository_Content-Fuzzy_Searches_since_1.0">
- <title>Fuzzy Searches (since 1.0)</title>
- <para>
- JCR supports such features as Lucene Fuzzy Searches <ulink
url="http://lucene.apache.org/java/2_3_2/queryparsersyntax.html"...
Lucene - Query Parser Syntax</ulink>.
- </para>
- <para>
- To use it, you have to form a query like the one described below:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Searching_Repository_Content-Fuzzy_Searches_since_1.0">
+ <title>Fuzzy Searches (since 1.0)</title>
+ <para>
+ JCR supports such features as Lucene Fuzzy Searches <ulink
url="http://lucene.apache.org/java/2_3_2/queryparsersyntax.html"...
Lucene - Query Parser Syntax</ulink>.
+ </para>
+ <para>
+ To use it, you have to form a query like the one described below:
+ </para>
+
<programlisting language="Java" role="Java">QueryManager qman =
session.getWorkspace().getQueryManager();
Query q = qman.createQuery("select * from nt:base where contains(field,
'ccccc~')", Query.SQL);
QueryResult res = q.execute();</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Searching_Repository_Content-SynonymSearch_since_1.9">
- <title>SynonymSearch (since 1.9)</title>
- <para>
- Searching with synonyms is integrated in the jcr:contains() function and uses the same
syntax as synonym searches in Google. If a search term is prefixed by a tilde symbol ( ~
), also synonyms of the search term are taken into consideration. For example:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Searching_Repository_Content-SynonymSearch_since_1.9">
+ <title>SynonymSearch (since 1.9)</title>
+ <para>
+ Searching with synonyms is integrated in the jcr:contains() function and uses
the same syntax as synonym searches in Google. If a search term is prefixed by a tilde
symbol ( ~ ), also synonyms of the search term are taken into consideration. For example:
+ </para>
+
<programlisting>SQL: select * from nt:resource where contains(.,
'~parameter')
XPath: //element(*, nt:resource)[jcr:contains(.,
'~parameter')</programlisting>
- <para>
- This feature is disabled by default and you need to add a configuration parameter to
the query-handler element in your jcr configuration file to enable it.
- </para>
-
+ <para>
+ This feature is disabled by default and you need to add a configuration
parameter to the query-handler element in your jcr configuration file to enable it.
+ </para>
+
<programlisting language="XML" role="XML"><param
name="synonymprovider-config-path" value="..you path to configuration
file....."/>
<param name="synonymprovider-class"
value="org.exoplatform.services.jcr.impl.core.query.lucene.PropertiesSynonymProvider"/></programlisting>
-
+
<programlisting language="XML" role="XML">/**
* <code>SynonymProvider</code> defines an interface for a
component that
* returns synonyms for a given term.
@@ -129,29 +129,29 @@
public String[] getSynonyms(String term);
}</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Searching_Repository_Content-High_lighting_Since_1.9">
- <title>High-lighting (Since 1.9)</title>
- <para>
- An ExcerptProvider retrieves text excerpts for a node in the query result and marks up
the words in the text that match the query terms.
- </para>
- <para>
- By default highlighting words matched the query is disabled because this feature
requires that additional information is written to the search index. To enable this
feature, you need to add a configuration parameter to the query-handler element in your
jcr configuration file to enable it.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Searching_Repository_Content-High_lighting_Since_1.9">
+ <title>High-lighting (Since 1.9)</title>
+ <para>
+ An ExcerptProvider retrieves text excerpts for a node in the query result and
marks up the words in the text that match the query terms.
+ </para>
+ <para>
+ By default highlighting words matched the query is disabled because this
feature requires that additional information is written to the search index. To enable
this feature, you need to add a configuration parameter to the query-handler element in
your jcr configuration file to enable it.
+ </para>
+
<programlisting language="XML" role="XML"><param
name="support-highlighting"
value="true"/></programlisting>
- <para>
- Additionally, there is a parameter that controls the format of the excerpt created. In
JCR 1.9, the default is set to
org.exoplatform.services.jcr.impl.core.query.lucene.DefaultHTMLExcerpt. The configuration
parameter for this setting is:
- </para>
-
+ <para>
+ Additionally, there is a parameter that controls the format of the excerpt
created. In JCR 1.9, the default is set to
org.exoplatform.services.jcr.impl.core.query.lucene.DefaultHTMLExcerpt. The configuration
parameter for this setting is:
+ </para>
+
<programlisting language="XML" role="XML"><param
name="excerptprovider-class"
value="org.exoplatform.services.jcr.impl.core.query.lucene.DefaultXMLExcerpt"/></programlisting>
- <section
id="sect-Reference_Guide-High_lighting_Since_1.9-DefaultXMLExcerpt">
- <title>DefaultXMLExcerpt</title>
- <para>
- This excerpt provider creates an XML fragment of the following form:
- </para>
-
+ <section
id="sect-Reference_Guide-High_lighting_Since_1.9-DefaultXMLExcerpt">
+ <title>DefaultXMLExcerpt</title>
+ <para>
+ This excerpt provider creates an XML fragment of the following form:
+ </para>
+
<programlisting language="XML"
role="XML"><excerpt>
<fragment>
<highlight>exoplatform</highlight> implements both
the mandatory
@@ -163,14 +163,14 @@
</fragment>
</excerpt></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-High_lighting_Since_1.9-DefaultHTMLExcerpt">
- <title>DefaultHTMLExcerpt</title>
- <para>
- This excerpt provider creates an HTML fragment of the following form:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-High_lighting_Since_1.9-DefaultHTMLExcerpt">
+ <title>DefaultHTMLExcerpt</title>
+ <para>
+ This excerpt provider creates an HTML fragment of the following form:
+ </para>
+
<programlisting language="HTML"
role="HTML"><div>
<span>
<strong>exoplatform</strong> implements both the
mandatory XPath
@@ -182,14 +182,14 @@
</span>
</div></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-High_lighting_Since_1.9-How_to_use_it">
- <title>How to use it</title>
- <para>
- If you are using XPath, you must use the rep:excerpt() function in the last location
step, just like you would select properties:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-High_lighting_Since_1.9-How_to_use_it">
+ <title>How to use it</title>
+ <para>
+ If you are using XPath, you must use the rep:excerpt() function in the
last location step, just like you would select properties:
+ </para>
+
<programlisting language="Java" role="Java">QueryManager qm =
session.getWorkspace().getQueryManager();
Query q = qm.createQuery("//*[jcr:contains(.,
'exoplatform')]/(@Title|rep:excerpt(.))", Query.XPATH);
QueryResult result = q.execute();
@@ -198,19 +198,19 @@
Value title = r.getValue("Title");
Value excerpt = r.getValue("rep:excerpt(.)");
}</programlisting>
- <para>
- The above code searches for nodes that contain the word exoplatform and then gets the
value of the Title property and an excerpt for each result node.
- </para>
- <para>
- It is also possible to use a relative path in the call Row.getValue() while the query
statement still remains the same. Also, you may use a relative path to a string property.
The returned value will then be an excerpt based on string value of the property.
- </para>
- <para>
- Both available excerpt provider will create fragments of about 150 characters and up
to 3 fragments.
- </para>
- <para>
- In SQL, the function is called excerpt() without the rep prefix, but the column in
the RowIterator will nonetheless be labled rep:excerpt(.)!
- </para>
-
+ <para>
+ The above code searches for nodes that contain the word exoplatform and
then gets the value of the Title property and an excerpt for each result node.
+ </para>
+ <para>
+ It is also possible to use a relative path in the call Row.getValue()
while the query statement still remains the same. Also, you may use a relative path to a
string property. The returned value will then be an excerpt based on string value of the
property.
+ </para>
+ <para>
+ Both available excerpt provider will create fragments of about 150
characters and up to 3 fragments.
+ </para>
+ <para>
+ In SQL, the function is called excerpt() without the rep prefix, but the
column in the RowIterator will nonetheless be labelled rep:excerpt(.)!
+ </para>
+
<programlisting language="Java" role="Java">QueryManager qm =
session.getWorkspace().getQueryManager();
Query q = qm.createQuery("select excerpt(.) from nt:resource where contains(.,
'exoplatform')", Query.SQL);
QueryResult result = q.execute();
@@ -219,73 +219,73 @@
Value excerpt = r.getValue("rep:excerpt(.)");
}</programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Searching_Repository_Content-SpellChecker">
- <title>SpellChecker</title>
- <para>
- The lucene based query handler implementation supports a pluggable spell checker
mechanism. By default, spell checking is not available and you have to configure it first.
See parameter spellCheckerClass on page <xref
linkend="sect-Reference_Guide-Search_Configuration" /> JCR currently provides
an implementation class , which uses the <ulink
url="http://wiki.apache.org/jakarta-lucene/SpellChecker">luc...
to contribute . The dictionary is derived from the fulltext indexed content of the
workspace and updated periodically. You can configure the refresh interval by picking one
of the available inner classes of
org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- OneMinuteRefreshInterval
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Searching_Repository_Content-SpellChecker">
+ <title>SpellChecker</title>
+ <para>
+ The lucene based query handler implementation supports a pluggable spell
checker mechanism. By default, spell checking is not available and you have to configure
it first. See parameter spellCheckerClass on page <xref
linkend="sect-Reference_Guide-Search_Configuration" /> JCR currently provides
an implementation class , which uses the <ulink
url="http://wiki.apache.org/jakarta-lucene/SpellChecker">luc...
to contribute . The dictionary is derived from the fulltext indexed content of the
workspace and updated periodically. You can configure the refresh interval by picking one
of the available inner classes of
org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ OneMinuteRefreshInterval
+ </para>
- </listitem>
- <listitem>
- <para>
- FiveMinutesRefreshInterval
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ FiveMinutesRefreshInterval
+ </para>
- </listitem>
- <listitem>
- <para>
- ThirtyMinutesRefreshInterval
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ ThirtyMinutesRefreshInterval
+ </para>
- </listitem>
- <listitem>
- <para>
- OneHourRefreshInterval
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ OneHourRefreshInterval
+ </para>
- </listitem>
- <listitem>
- <para>
- SixHoursRefreshInterval
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ SixHoursRefreshInterval
+ </para>
- </listitem>
- <listitem>
- <para>
- TwelveHoursRefreshInterval
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ TwelveHoursRefreshInterval
+ </para>
- </listitem>
- <listitem>
- <para>
- OneDayRefreshInterval
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ OneDayRefreshInterval
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- For example, if you want a refresh interval of six hours, the class name is:
org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker$SixHoursRefreshInterval.
If you use org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker,
the refresh interval will be one hour.
- </para>
- <para>
- The spell checker dictionary is stored as a lucene index under <emphasis
role="bold">"index-dir"/spellchecker</emphasis>. If it does
not exist, a background thread will create it on startup. Similarly, the dictionary
refresh is also done in a background thread to not block regular queries.
- </para>
- <section id="sect-Reference_Guide-SpellChecker-How_do_I_use_it">
- <title>How do I use it?</title>
- <para>
- You can spell check a fulltext statement either with an XPath or a SQL query:
- </para>
-
+ </itemizedlist>
+ <para>
+ For example, if you want a refresh interval of six hours, the class name is:
org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker$SixHoursRefreshInterval.
If you use org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker,
the refresh interval will be one hour.
+ </para>
+ <para>
+ The spell checker dictionary is stored as a lucene index under <emphasis
role="bold">"index-dir"/spellchecker</emphasis>. If it does
not exist, a background thread will create it on startup. Similarly, the dictionary
refresh is also done in a background thread to not block regular queries.
+ </para>
+ <section
id="sect-Reference_Guide-SpellChecker-How_do_I_use_it">
+ <title>How do I use it?</title>
+ <para>
+ You can spell check a fulltext statement either with an XPath or a SQL
query:
+ </para>
+
<programlisting language="Java" role="Java">//
rep:spellcheck('explatform') will always evaluate to true
Query query =
qm.createQuery("/jcr:root[rep:spellcheck('explatform')]/(rep:spellcheck())",
Query.XPATH);
RowIterator rows = query.execute().getRows();
@@ -299,10 +299,10 @@
} else {
String suggestion = v.getString();
}</programlisting>
- <para>
- And the same using SQL:
- </para>
-
+ <para>
+ And the same using SQL:
+ </para>
+
<programlisting language="Java" role="Java">//
SPELLCHECK('exoplatform') will always evaluate to true
Query query = qm.createQuery("SELECT rep:spellcheck() FROM nt:base WHERE jcr:path =
'/' AND SPELLCHECK('explatform')", Query.SQL);
RowIterator rows = query.execute().getRows();
@@ -317,67 +317,67 @@
String suggestion = v.getString();
}</programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Searching_Repository_Content-Similarity_Since_1.12">
- <title>Similarity (Since 1.12)</title>
- <para>
- Starting with version, 1.12 JCR allows you to search for nodes that are similar to an
existing node.
- </para>
- <para>
- Similarity is determined by looking up terms that are common to nodes. There are some
conditions that must be met for a term to be considered. This is required to limit the
number possibly relevant terms.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Only terms with at least 4 characters are considered.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Searching_Repository_Content-Similarity_Since_1.12">
+ <title>Similarity (Since 1.12)</title>
+ <para>
+ Starting with version, 1.12 JCR allows you to search for nodes that are
similar to an existing node.
+ </para>
+ <para>
+ Similarity is determined by looking up terms that are common to nodes. There
are some conditions that must be met for a term to be considered. This is required to
limit the number possibly relevant terms.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Only terms with at least 4 characters are considered.
+ </para>
- </listitem>
- <listitem>
- <para>
- Only terms that occur at least 2 times in the source node are considered.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Only terms that occur at least 2 times in the source node are
considered.
+ </para>
- </listitem>
- <listitem>
- <para>
- Only terms that occur in at least 5 nodes are considered.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Only terms that occur in at least 5 nodes are considered.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Note: The similarity functionality requires that the support Hightlighting is enabled.
Please make sure that you have the following parameter set for the query handler in your
workspace.xml.
- </para>
-
+ </itemizedlist>
+ <para>
+ Note: The similarity functionality requires that the support Hightlighting is
enabled. Please make sure that you have the following parameter set for the query handler
in your workspace.xml.
+ </para>
+
<programlisting language="XML" role="XML"><param
name="support-highlighting"
value="true"/></programlisting>
- <para>
- The functions are called rep:similar() (in XPath) and similar() (in SQL) and have two
arguments:
- </para>
- <para>
- relativePath: a relative path to a descendant node or . for the current node.
absoluteStringPath: a string literal that contains the path to the node for which to find
similar nodes.
- </para>
- <warning>
- <para>
- Relative path is not supported yet.
- </para>
+ <para>
+ The functions are called rep:similar() (in XPath) and similar() (in SQL) and
have two arguments:
+ </para>
+ <para>
+ relativePath: a relative path to a descendant node or . for the current node.
absoluteStringPath: a string literal that contains the path to the node for which to find
similar nodes.
+ </para>
+ <warning>
+ <para>
+ Relative path is not supported yet.
+ </para>
- </warning>
- <para>
- Examples:
- </para>
-
+ </warning>
+ <para>
+ Examples:
+ </para>
+
<programlisting>//element(*, nt:resource)[rep:similar(.,
'/parentnode/node.txt/jcr:content')]</programlisting>
- <para>
- Finds nt:resource nodes, which are similar to node by path
/parentnode/node.txt/jcr:content.
- </para>
+ <para>
+ Finds nt:resource nodes, which are similar to node by path
/parentnode/node.txt/jcr:content.
+ </para>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/spell-checker.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/spell-checker.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/spell-checker.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,23 +4,23 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Checking_the_spelling_of_Phrase">
- <title>Checking the spelling of Phrase</title>
- <para>
- Check the correct spelling of phrase 'quik OR (-foo bar)' according to data
already stored in index.
- </para>
- <note>
- <para>
- See also about SpellChecker configuration - <xref
linkend="sect-Reference_Guide-Searching_Repository_Content" />
- </para>
+ <title>Checking the spelling of Phrase</title>
+ <para>
+ Check the correct spelling of phrase 'quik OR (-foo bar)' according to
data already stored in index.
+ </para>
+ <note>
+ <para>
+ See also about SpellChecker configuration - <xref
linkend="sect-Reference_Guide-Searching_Repository_Content" />
+ </para>
- </note>
- <para>
- SpellChecker must be settled in query-handler config.
- </para>
- <para>
- test-jcr-config.xml:
- </para>
-
+ </note>
+ <para>
+ SpellChecker must be settled in query-handler config.
+ </para>
+ <para>
+ test-jcr-config.xml:
+ </para>
+
<programlisting language="XML" role="XML"><query-handler
class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
...
@@ -28,41 +28,41 @@
...
</properties>
</query-handler></programlisting>
- <section
id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Repository_structure">
- <title>Repository structure:</title>
- <para>
- Repository contains node, with string property "The quick brown fox jumps over
the lazy dog."
- </para>
- <itemizedlist>
- <listitem>
- <para>
- root
- </para>
- <itemizedlist>
- <listitem>
- <para>
- node1 property="The quick brown fox jumps over the lazy dog."
- </para>
+ <section
id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ Repository contains node, with string property "The quick brown fox
jumps over the lazy dog."
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ root
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ node1 property="The quick brown fox jumps over the lazy
dog."
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Query_execution">
- <title>Query execution</title>
- <para>
- Query looks only for root node, because spell checker looks for suggestions by full
index. So complicated query is redundant.
- </para>
- <para>
- <emphasis role="bold">SQL</emphasis>
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Query_execution">
+ <title>Query execution</title>
+ <para>
+ Query looks only for root node, because spell checker looks for suggestions
by full index. So complicated query is redundant.
+ </para>
+ <para>
+ <emphasis role="bold">SQL</emphasis>
+ </para>
+
<programlisting language="Java" role="Java">// make SQL query
QueryManager queryManager = workspace.getQueryManager();
// create query
@@ -70,10 +70,10 @@
Query query = queryManager.createQuery(sqlStatement, Query.SQL);
// execute query and fetch result
QueryResult result = query.execute();</programlisting>
- <para>
- <emphasis role="bold">XPath</emphasis>
- </para>
-
+ <para>
+ <emphasis role="bold">XPath</emphasis>
+ </para>
+
<programlisting language="Java" role="Java">// make XPath
query
QueryManager queryManager = workspace.getQueryManager();
// create query
@@ -82,23 +82,23 @@
// execute query and fetch result
QueryResult result = query.execute();</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Fetching_result">
- <title>Fetching result</title>
- <para>
- Get suggestion of coorect spelling our phrase:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ Get suggestion of correct spelling our phrase:
+ </para>
+
<programlisting language="Java" role="Java">RowIterator it =
result.getRows();
Row r = rows.nextRow();
Value v = r.getValue("rep:spellcheck()");
String correctPhrase = v.getString();</programlisting>
- <para>
- So, correct spelling for phrase "quik OR (-foo bar)" is "quick OR (-fox
bar)".
- </para>
+ <para>
+ So, correct spelling for phrase "quik OR (-foo bar)" is "quick
OR (-fox bar)".
+ </para>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/synonim-provider.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/synonim-provider.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/searching/synonim-provider.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -3,21 +3,21 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
-<section id="sect-Reference_Guide-Searching_By_Synonim">
- <title>Searching By Synonim</title>
- <para>
- Find all mix:title nodes where title contains synonims to 'fast' word.
- </para>
- <note>
- <para>
- See also about synonim propvider configuration - <xref
linkend="sect-Reference_Guide-Searching_Repository_Content" />
- </para>
+<section id="sect-Reference_Guide-Searching_By_Synonym">
+ <title>Searching By Synonym</title>
+ <para>
+ Find all mix:title nodes where title contains synonyms to 'fast' word.
+ </para>
+ <note>
+ <para>
+ See also about synonym provider configuration - <xref
linkend="sect-Reference_Guide-Searching_Repository_Content" />
+ </para>
- </note>
- <para>
- Synonim provider must be configured in indexing-configuration.xml :
- </para>
-
+ </note>
+ <para>
+ Synonym provider must be configured in indexing-configuration.xml :
+ </para>
+
<programlisting language="XML" role="XML"><query-handler
class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
...
@@ -26,45 +26,45 @@
...
</properties>
</query-handler></programlisting>
- <para>
- File synonim.properties contains next synonims list:
- </para>
-
+ <para>
+ File synonym.properties contains next synonyms list:
+ </para>
+
<programlisting>ASF=Apache Software Foundation
quick=fast
sluggish=lazy</programlisting>
- <section
id="sect-Reference_Guide-Searching_By_Synonim-Repository_structure">
- <title>Repository structure:</title>
- <para>
- Repository contains mix:title nodes, where jcr:title has different values.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- root
- </para>
- <itemizedlist>
- <listitem>
- <para>
- document1 (mix:title) jcr:title="The quick brown fox jumps over the lazy
dog."
- </para>
+ <section
id="sect-Reference_Guide-Searching_By_synonym-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ Repository contains mix:title nodes, where jcr:title has different values.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ root
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ document1 (mix:title) jcr:title="The quick brown fox
jumps over the lazy dog."
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-Searching_By_Synonim-Query_execution">
- <title>Query execution</title>
- <para>
- <emphasis role="bold">SQL</emphasis>
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Searching_By_synonym-Query_execution">
+ <title>Query execution</title>
+ <para>
+ <emphasis role="bold">SQL</emphasis>
+ </para>
+
<programlisting language="Java" role="Java">// make SQL query
QueryManager queryManager = workspace.getQueryManager();
// create query
@@ -72,10 +72,10 @@
Query query = queryManager.createQuery(sqlStatement, Query.SQL);
// execute query and fetch result
QueryResult result = query.execute();</programlisting>
- <para>
- <emphasis role="bold">XPath</emphasis>
- </para>
-
+ <para>
+ <emphasis role="bold">XPath</emphasis>
+ </para>
+
<programlisting language="Java" role="Java">// make XPath
query
QueryManager queryManager = workspace.getQueryManager();
// create query
@@ -84,25 +84,25 @@
// execute query and fetch result
QueryResult result = query.execute();</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Searching_By_Synonim-Fetching_result">
- <title>Fetching result</title>
- <para>
- Let's get nodes:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Searching_By_synonym-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ Let's get nodes:
+ </para>
+
<programlisting language="Java" role="Java">NodeIterator it =
result.getNodes();
if(it.hasNext())
{
Node findedNode = it.nextNode();
}</programlisting>
- <para>
- NodeIterator will return expected document1. This is a purpose of synonim providers.
Find by specified word, but return by all synonims to.
- </para>
+ <para>
+ NodeIterator will return expected document1. This is a purpose of synonym
providers. Find by specified word, but return by all synonyms to.
+ </para>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/statistics.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/statistics.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/jcr/statistics.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,280 +4,280 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-eXo_JCR_statistics">
- <title>eXo JCR statistics</title>
- <section
id="sect-Reference_Guide-eXo_JCR_statistics-Statistics_on_the_Database_Access_Layer">
- <title>Statistics on the Database Access Layer</title>
- <para>
- In order to have a better idea of the time spent into the database access layer, it
can be interesting to get some statistics on that part of the code, knowing that most of
the time spent into eXo JCR is mainly the database access. This statistics will then allow
you to identify without using any profiler what is normally slow in this layer, which
could help to fix the problem quickly.
- </para>
- <para>
- In case you use
<envar>org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer</envar>
or
<envar>org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer</envar>
as <envar>WorkspaceDataContainer</envar>, you can get statistics on the time
spent into the database access layer. The database access layer (in eXo JCR) is
represented by the methods of the interface
<envar>org.exoplatform.services.jcr.storage.WorkspaceStorageConnection</envar>,
so for all the methods defined in this interface, we can have the following figures:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- The minimum time spent into the method.
- </para>
+ <title>eXo JCR statistics</title>
+ <section
id="sect-Reference_Guide-eXo_JCR_statistics-Statistics_on_the_Database_Access_Layer">
+ <title>Statistics on the Database Access Layer</title>
+ <para>
+ In order to have a better idea of the time spent into the database access
layer, it can be interesting to get some statistics on that part of the code, knowing that
most of the time spent into eXo JCR is mainly the database access. This statistics will
then allow you to identify without using any profiler what is normally slow in this layer,
which could help to fix the problem quickly.
+ </para>
+ <para>
+ In case you use
<envar>org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer</envar>
or
<envar>org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer</envar>
as <envar>WorkspaceDataContainer</envar>, you can get statistics on the time
spent into the database access layer. The database access layer (in eXo JCR) is
represented by the methods of the interface
<envar>org.exoplatform.services.jcr.storage.WorkspaceStorageConnection</envar>,
so for all the methods defined in this interface, we can have the following figures:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The minimum time spent into the method.
+ </para>
- </listitem>
- <listitem>
- <para>
- The maximum time spent into the method.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The maximum time spent into the method.
+ </para>
- </listitem>
- <listitem>
- <para>
- The average time spent into the method.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The average time spent into the method.
+ </para>
- </listitem>
- <listitem>
- <para>
- The total amount of time spent into the method.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The total amount of time spent into the method.
+ </para>
- </listitem>
- <listitem>
- <para>
- The total amount of time the method has been called.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The total amount of time the method has been called.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Those figures are also available globaly for all the methods which gives us the global
behavior of this layer.
- </para>
- <para>
- If you want to enable the statistics, you just need to set the JVM parameter called
<emphasis>JDBCWorkspaceDataContainer.statistics.enabled</emphasis> to
<emphasis>true</emphasis>. The corresponding CSV file is
<emphasis>StatisticsJDBCStorageConnection-${creation-timestamp}.csv</emphasis>
for more details about how the csv files are managed, please refer to the section
dedicated to the statistics manager.
- </para>
- <para>
- The format of each column header is ${method-alias}-${metric-alias}. The metric alias
are described in the statistics manager section.
- </para>
- <para>
- The name of the category of statistics corresponding to these statistics is
<emphasis>JDBCStorageConnection</emphasis>, this name is mostly needed to
access to the statistics through JMX.
- </para>
- <table
id="tabl-Reference_Guide-Statistics_on_the_Database_Access_Layer-Method_Alias">
- <title>Method Alias</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- global
- </entry>
- <entry>
- This is the alias for all the methods.
- </entry>
+ </itemizedlist>
+ <para>
+ Those figures are also available globaly for all the methods which gives us
the global behavior of this layer.
+ </para>
+ <para>
+ If you want to enable the statistics, you just need to set the JVM parameter
called <emphasis>JDBCWorkspaceDataContainer.statistics.enabled</emphasis> to
<emphasis>true</emphasis>. The corresponding CSV file is
<emphasis>StatisticsJDBCStorageConnection-${creation-timestamp}.csv</emphasis>
for more details about how the csv files are managed, please refer to the section
dedicated to the statistics manager.
+ </para>
+ <para>
+ The format of each column header is ${method-alias}-${metric-alias}. The
metric alias are described in the statistics manager section.
+ </para>
+ <para>
+ The name of the category of statistics corresponding to these statistics is
<emphasis>JDBCStorageConnection</emphasis>, this name is mostly needed to
access to the statistics through JMX.
+ </para>
+ <table
id="tabl-Reference_Guide-Statistics_on_the_Database_Access_Layer-Method_Alias">
+ <title>Method Alias</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ global
+ </entry>
+ <entry>
+ This is the alias for all the methods.
+ </entry>
- </row>
- <row>
- <entry>
- getItemDataById
- </entry>
- <entry>
- This is the alias for the method <emphasis>getItemData(String
identifier).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ getItemDataById
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>getItemData(String identifier).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- getItemDataByNodeDataNQPathEntry
- </entry>
- <entry>
- This is the alias for the method <emphasis>getItemData(NodeData parentData,
QPathEntry name).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ getItemDataByNodeDataNQPathEntry
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>getItemData(NodeData parentData, QPathEntry name).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- getChildNodesData
- </entry>
- <entry>
- This is the alias for the method <emphasis>getChildNodesData(NodeData
parent).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ getChildNodesData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>getChildNodesData(NodeData parent).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- getChildNodesCount
- </entry>
- <entry>
- This is the alias for the method <emphasis>getChildNodesCount(NodeData
parent).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ getChildNodesCount
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>getChildNodesCount(NodeData parent).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- getChildPropertiesData
- </entry>
- <entry>
- This is the alias for the method <emphasis>getChildPropertiesData(NodeData
parent).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ getChildPropertiesData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>getChildPropertiesData(NodeData parent).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- listChildPropertiesData
- </entry>
- <entry>
- This is the alias for the method <emphasis>listChildPropertiesData(NodeData
parent).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ listChildPropertiesData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>listChildPropertiesData(NodeData parent).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- getReferencesData
- </entry>
- <entry>
- This is the alias for the method <emphasis>getReferencesData(String
nodeIdentifier).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ getReferencesData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>getReferencesData(String nodeIdentifier).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- commit
- </entry>
- <entry>
- This is the alias for the method <emphasis>commit().</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ commit
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>commit().</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- addNodeData
- </entry>
- <entry>
- This is the alias for the method <emphasis>add(NodeData
data).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ addNodeData
+ </entry>
+ <entry>
+ This is the alias for the method <emphasis>add(NodeData
data).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- addPropertyData
- </entry>
- <entry>
- This is the alias for the method <emphasis>add(PropertyData
data).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ addPropertyData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>add(PropertyData data).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- updateNodeData
- </entry>
- <entry>
- This is the alias for the method <emphasis>update(NodeData
data).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ updateNodeData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>update(NodeData data).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- updatePropertyData
- </entry>
- <entry>
- This is the alias for the method <emphasis>update(PropertyData
data).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ updatePropertyData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>update(PropertyData data).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- deleteNodeData
- </entry>
- <entry>
- This is the alias for the method <emphasis>delete(NodeData
data).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ deleteNodeData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>delete(NodeData data).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- deletePropertyData
- </entry>
- <entry>
- This is the alias for the method <emphasis>delete(PropertyData
data).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ deletePropertyData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>delete(PropertyData data).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- renameNodeData
- </entry>
- <entry>
- This is the alias for the method <emphasis>rename(NodeData
data).</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ renameNodeData
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>rename(NodeData data).</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- rollback
- </entry>
- <entry>
- This is the alias for the method <emphasis>rollback().</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ rollback
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>rollback().</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- isOpened
- </entry>
- <entry>
- This is the alias for the method <emphasis>isOpened().</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ isOpened
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>isOpened().</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- close
- </entry>
- <entry>
- This is the alias for the method <emphasis>close().</emphasis>
- </entry>
+ </row>
+ <row>
+ <entry>
+ close
+ </entry>
+ <entry>
+ This is the alias for the method
<emphasis>close().</emphasis>
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
+ </table>
- </section>
-
- <section
id="sect-Reference_Guide-eXo_JCR_statistics-Statistics_on_the_JCR_API_accesses">
- <title>Statistics on the JCR API accesses</title>
- <para>
- In order to know exactly how your application uses eXo JCR, it can be interesting to
register all the JCR API accesses in order to easily create real life test scenario based
on pure JCR calls and also to tune your eXo JCR to better fit your requirements.
- </para>
- <para>
- In order to allow you to specify the configuration which part of eXo JCR needs to be
monitored whithout applying any changes in your code and/or building anything, we choose
to rely on the Load-time Weaving proposed by AspectJ.
- </para>
- <para>
- To enable this feature, you will have to add in your classpath the following jar
files:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>exo.jcr.component.statistics-X.Y.Z</emphasis>.jar
corresponding to your eXo JCR version that you can get from the jboss maven repository
<ulink
url="http://repository.jboss.com/maven2/org/exoplatform/jcr/exo.jcr....;.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-eXo_JCR_statistics-Statistics_on_the_JCR_API_accesses">
+ <title>Statistics on the JCR API accesses</title>
+ <para>
+ In order to know exactly how your application uses eXo JCR, it can be
interesting to register all the JCR API accesses in order to easily create real life test
scenario based on pure JCR calls and also to tune your eXo JCR to better fit your
requirements.
+ </para>
+ <para>
+ In order to allow you to specify the configuration which part of eXo JCR
needs to be monitored without applying any changes in your code and/or building anything,
we choose to rely on the Load-time Weaving proposed by AspectJ.
+ </para>
+ <para>
+ To enable this feature, you will have to add in your classpath the following
jar files:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+
<emphasis>exo.jcr.component.statistics-X.Y.Z</emphasis>.jar corresponding to
your eXo JCR version that you can get from the jboss maven repository <ulink
url="http://repository.jboss.com/maven2/org/exoplatform/jcr/exo.jcr....;.
+ </para>
- </listitem>
- <listitem>
- <para>
- aspectjrt-1.6.8.jar that you can get from the main maven repository <ulink
url="http://repo2.maven.org/maven2/org/aspectj/aspectjrt">&l...;.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ aspectjrt-1.6.8.jar that you can get from the main maven repository
<ulink
url="http://repo2.maven.org/maven2/org/aspectj/aspectjrt">&l...;.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- You will also need to get aspectjweaver-1.6.8.jar from the main maven repository
<ulink
url="http://repo2.maven.org/maven2/org/aspectj/aspectjweaver"&g...;.
At this stage, to enable the statistics on the JCR API accesses, you will need to add the
JVM parameter
<emphasis>-javaagent:${pathto}/aspectjweaver-1.6.8.jar</emphasis> to your
command line, for more details please refer to <ulink
url="http://www.eclipse.org/aspectj/doc/released/devguide/ltw-config...;.
- </para>
- <para>
- By default, the configuration will collect statistcs on all the methods of the
internal interfaces
<emphasis>org.exoplatform.services.jcr.core.ExtendedSession</emphasis> and
<emphasis>org.exoplatform.services.jcr.core.ExtendedNode</emphasis>, and the
JCR API interface <emphasis>javax.jcr.Property</emphasis>. To add and/or
remove some interfaces to monitor, you have two configuration files to change that are
bundled into the jar
<emphasis>exo.jcr.component.statistics-X.Y.Z</emphasis>.jar, which are
<emphasis>conf/configuration.xml</emphasis> and
<emphasis>META-INF/aop.xml</emphasis>.
- </para>
- <para>
- The file content below is the content of
<emphasis>conf/configuration.xml</emphasis> that you will need to modify to
add and/or remove the full qualified name of the interfaces to monitor, into the list of
parameter values of the init param called
<emphasis>targetInterfaces</emphasis>.
- </para>
-
+ </itemizedlist>
+ <para>
+ You will also need to get aspectjweaver-1.6.8.jar from the main maven
repository <ulink
url="http://repo2.maven.org/maven2/org/aspectj/aspectjweaver"&g...;.
At this stage, to enable the statistics on the JCR API accesses, you will need to add the
JVM parameter
<emphasis>-javaagent:${pathto}/aspectjweaver-1.6.8.jar</emphasis> to your
command line, for more details please refer to <ulink
url="http://www.eclipse.org/aspectj/doc/released/devguide/ltw-config...;.
+ </para>
+ <para>
+ By default, the configuration will collect statistics on all the methods of
the internal interfaces
<emphasis>org.exoplatform.services.jcr.core.ExtendedSession</emphasis> and
<emphasis>org.exoplatform.services.jcr.core.ExtendedNode</emphasis>, and the
JCR API interface <emphasis>javax.jcr.Property</emphasis>. To add and/or
remove some interfaces to monitor, you have two configuration files to change that are
bundled into the jar
<emphasis>exo.jcr.component.statistics-X.Y.Z</emphasis>.jar, which are
<emphasis>conf/configuration.xml</emphasis> and
<emphasis>META-INF/aop.xml</emphasis>.
+ </para>
+ <para>
+ The file content below is the content of
<emphasis>conf/configuration.xml</emphasis> that you will need to modify to
add and/or remove the full qualified name of the interfaces to monitor, into the list of
parameter values of the init param called
<emphasis>targetInterfaces</emphasis>.
+ </para>
+
<programlisting language="XML" role="XML"><configuration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd
http://www.exoplaform.org/xml/ns/kernel_1_0.xsd"
xmlns="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd">
@@ -293,10 +293,10 @@
</init-params>
</component>
</configuration></programlisting>
- <para>
- The file content below is the content of
<emphasis>META-INF/aop.xml</emphasis> that you will to need to modify to add
and/or remove the full qualified name of the interfaces to monitor, into the expression
filter of the pointcut called <emphasis>JCRAPIPointcut</emphasis>. As you can
see below, by default only JCR API calls from the exoplatform packages are took into
account, don't hesistate to modify this filter to add your own package names.
- </para>
-
+ <para>
+ The file content below is the content of
<emphasis>META-INF/aop.xml</emphasis> that you will to need to modify to add
and/or remove the full qualified name of the interfaces to monitor, into the expression
filter of the pointcut called <emphasis>JCRAPIPointcut</emphasis>. As you can
see below, by default only JCR API calls from the exoplatform packages are took into
account, do not hesitate to modify this filter to add your own package names.
+ </para>
+
<programlisting language="XML"
role="XML"><aspectj>
<aspects>
<concrete-aspect
name="org.exoplatform.services.jcr.statistics.JCRAPIAspectImpl"
extends="org.exoplatform.services.jcr.statistics.JCRAPIAspect">
@@ -308,169 +308,169 @@
<include within="org.exoplatform..*" />
</weaver>
</aspectj></programlisting>
- <para>
- The corresponding CSV files are of type
<emphasis>Statistics${interface-name}-${creation-timestamp}.csv</emphasis> for
more details about how the csv files are managed, please refer to the section dedicated to
the statistics manager.
- </para>
- <para>
- The format of each column header is ${method-alias}-${metric-alias}. The method alias
will be of type ${method-name}(list of parameter types separeted by ; to be compatible
with the CSV format).
- </para>
- <para>
- The metric alias are described in the statistics manager section.
- </para>
- <para>
- The name of the category of statistics corresponding to these statistics is the simple
name of the monitored interface (e.g. ExtendedSession for
org.exoplatform.services.jcr.core.ExtendedSession), this name is mostly needed to access
to the statistics through JMX.
- </para>
- <remark>Please note that this feature will affect the performances of eXo JCR so
it must be used with caution.</remark>
+ <para>
+ The corresponding CSV files are of type
<emphasis>Statistics${interface-name}-${creation-timestamp}.csv</emphasis> for
more details about how the csv files are managed, please refer to the section dedicated to
the statistics manager.
+ </para>
+ <para>
+ The format of each column header is ${method-alias}-${metric-alias}. The
method alias will be of type ${method-name}(list of parameter types separated by ; to be
compatible with the CSV format).
+ </para>
+ <para>
+ The metric alias are described in the statistics manager section.
+ </para>
+ <para>
+ The name of the category of statistics corresponding to these statistics is
the simple name of the monitored interface (e.g. ExtendedSession for
org.exoplatform.services.jcr.core.ExtendedSession), this name is mostly needed to access
to the statistics through JMX.
+ </para>
+ <remark>Please note that this feature will affect the performances of eXo
JCR so it must be used with caution.</remark>
- </section>
-
- <section
id="sect-Reference_Guide-eXo_JCR_statistics-Statistics_Manager">
- <title>Statistics Manager</title>
- <para>
- The statistics manager manages all the statistics provided by eXo JCR, it is
responsible of printing the data into the CSV files and also exposing the statistics
through JMX and/or Rest.
- </para>
- <para>
- The statistics manager will create all the CSV files for each category of statistics
that it manages, the format of those files is
<emphasis>Statistics${category-name}-${creation-timestamp}.csv</emphasis>.
Those files will be created into the user directory if it is possible otherwise it will
create them into the temporary directory. The format of those files is
<envar>CSV</envar> (i.e. Comma-Seperated Values), one new line will be added
regularily (every 5 seconds by default) and one last line will be added at JVM exit. Each
line, will be composed of the 5 figures described below for each method and globaly for
all the methods.
- </para>
- <para>
- <table id="tabl-Reference_Guide-Statistics_Manager-Metric_Alias">
- <title>Metric Alias</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- Min
- </entry>
- <entry>
- The minimum time spent into the method expressed in milliseconds.
- </entry>
+ </section>
+
+ <section
id="sect-Reference_Guide-eXo_JCR_statistics-Statistics_Manager">
+ <title>Statistics Manager</title>
+ <para>
+ The statistics manager manages all the statistics provided by eXo JCR, it is
responsible of printing the data into the CSV files and also exposing the statistics
through JMX and/or Rest.
+ </para>
+ <para>
+ The statistics manager will create all the CSV files for each category of
statistics that it manages, the format of those files is
<emphasis>Statistics${category-name}-${creation-timestamp}.csv</emphasis>.
Those files will be created into the user directory if it is possible otherwise it will
create them into the temporary directory. The format of those files is
<envar>CSV</envar> (i.e. Comma-Separated Values), one new line will be added
regularly (every 5 seconds by default) and one last line will be added at JVM exit. Each
line, will be composed of the 5 figures described below for each method and globally for
all the methods.
+ </para>
+ <para>
+ <table
id="tabl-Reference_Guide-Statistics_Manager-Metric_Alias">
+ <title>Metric Alias</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ Min
+ </entry>
+ <entry>
+ The minimum time spent into the method expressed in
milliseconds.
+ </entry>
- </row>
- <row>
- <entry>
- Max
- </entry>
- <entry>
- The maximum time spent into the method expressed in milliseconds.
- </entry>
+ </row>
+ <row>
+ <entry>
+ Max
+ </entry>
+ <entry>
+ The maximum time spent into the method expressed in
milliseconds.
+ </entry>
- </row>
- <row>
- <entry>
- Total
- </entry>
- <entry>
- The total amount of time spent into the method expressed in milliseconds.
- </entry>
+ </row>
+ <row>
+ <entry>
+ Total
+ </entry>
+ <entry>
+ The total amount of time spent into the method expressed
in milliseconds.
+ </entry>
- </row>
- <row>
- <entry>
- Avg
- </entry>
- <entry>
- The average time spent into the method expressed in milliseconds.
- </entry>
+ </row>
+ <row>
+ <entry>
+ Avg
+ </entry>
+ <entry>
+ The average time spent into the method expressed in
milliseconds.
+ </entry>
- </row>
- <row>
- <entry>
- Times
- </entry>
- <entry>
- The total amount of times the method has been called.
- </entry>
+ </row>
+ <row>
+ <entry>
+ Times
+ </entry>
+ <entry>
+ The total amount of times the method has been called.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- You can disable the persistence of the statistics by setting the JVM parameter called
<emphasis>JCRStatisticsManager.persistence.enabled</emphasis> to
<emphasis>false</emphasis>, by default, it is set to
<emphasis>true</emphasis>. You can aslo define the period of time between each
record (i.e. line of data into the file) by setting the JVM parameter called
<emphasis>JCRStatisticsManager.persistence.timeout</emphasis> to your expected
value expressed in milliseconds, by default it is set to
<emphasis>5000</emphasis>.
- </para>
- <para>
- You can also access to the statistics thanks to JMX, the available methods are the
following:
- </para>
- <para>
- <table id="tabl-Reference_Guide-Statistics_Manager-JMX_Methods">
- <title>JMX Methods</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- getMin
- </entry>
- <entry>
- Give the minimum time spent into the method corresponding to the given category
name and statistics name. The expected arguments are the name of the category of
statistics (e.g. JDBCStorageConnection) and the name of the expected method or global for
the global value.
- </entry>
+ </table>
+ You can disable the persistence of the statistics by setting the JVM
parameter called <emphasis>JCRStatisticsManager.persistence.enabled</emphasis>
to <emphasis>false</emphasis>, by default, it is set to
<emphasis>true</emphasis>. You can also define the period of time between each
record (i.e. line of data into the file) by setting the JVM parameter called
<emphasis>JCRStatisticsManager.persistence.timeout</emphasis> to your expected
value expressed in milliseconds, by default it is set to
<emphasis>5000</emphasis>.
+ </para>
+ <para>
+ You can also access to the statistics thanks to JMX, the available methods
are the following:
+ </para>
+ <para>
+ <table
id="tabl-Reference_Guide-Statistics_Manager-JMX_Methods">
+ <title>JMX Methods</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ getMin
+ </entry>
+ <entry>
+ Give the minimum time spent into the method corresponding
to the given category name and statistics name. The expected arguments are the name of the
category of statistics (e.g. JDBCStorageConnection) and the name of the expected method or
global for the global value.
+ </entry>
- </row>
- <row>
- <entry>
- getMax
- </entry>
- <entry>
- Give the maximum time spent into the method corresponding to the given category
name and statistics name. The expected arguments are the name of the category of
statistics (e.g. JDBCStorageConnection) and the name of the expected method or global for
the global value.
- </entry>
+ </row>
+ <row>
+ <entry>
+ getMax
+ </entry>
+ <entry>
+ Give the maximum time spent into the method corresponding
to the given category name and statistics name. The expected arguments are the name of the
category of statistics (e.g. JDBCStorageConnection) and the name of the expected method or
global for the global value.
+ </entry>
- </row>
- <row>
- <entry>
- getTotal
- </entry>
- <entry>
- Give the total amount of time spent into the method corresponding to the given
category name and statistics name. The expected arguments are the name of the category of
statistics (e.g. JDBCStorageConnection) and the name of the expected method or global for
the global value.
- </entry>
+ </row>
+ <row>
+ <entry>
+ getTotal
+ </entry>
+ <entry>
+ Give the total amount of time spent into the method
corresponding to the given category name and statistics name. The expected arguments are
the name of the category of statistics (e.g. JDBCStorageConnection) and the name of the
expected method or global for the global value.
+ </entry>
- </row>
- <row>
- <entry>
- getAvg
- </entry>
- <entry>
- Give the average time spent into the method corresponding to the given category
name and statistics name. The expected arguments are the name of the category of
statistics (e.g. JDBCStorageConnection) and the name of the expected method or global for
the global value.
- </entry>
+ </row>
+ <row>
+ <entry>
+ getAvg
+ </entry>
+ <entry>
+ Give the average time spent into the method corresponding
to the given category name and statistics name. The expected arguments are the name of the
category of statistics (e.g. JDBCStorageConnection) and the name of the expected method or
global for the global value.
+ </entry>
- </row>
- <row>
- <entry>
- getTimes
- </entry>
- <entry>
- Give the total amount of times the method has been called corresponding to the
given ,category name and statistics name. The expected arguments are the name of the
category of statistics (e.g. JDBCStorageConnection) and the name of the expected method or
global for the global value.
- </entry>
+ </row>
+ <row>
+ <entry>
+ getTimes
+ </entry>
+ <entry>
+ Give the total amount of times the method has been called
corresponding to the given ,category name and statistics name. The expected arguments are
the name of the category of statistics (e.g. JDBCStorageConnection) and the name of the
expected method or global for the global value.
+ </entry>
- </row>
- <row>
- <entry>
- reset
- </entry>
- <entry>
- Reset the statistics for the given category name and statistics name. The
expected arguments are the name of the category of statistics (e.g. JDBCStorageConnection)
and the name of the expected method or global for the global value.
- </entry>
+ </row>
+ <row>
+ <entry>
+ reset
+ </entry>
+ <entry>
+ Reset the statistics for the given category name and
statistics name. The expected arguments are the name of the category of statistics (e.g.
JDBCStorageConnection) and the name of the expected method or global for the global
value.
+ </entry>
- </row>
- <row>
- <entry>
- resetAll
- </entry>
- <entry>
- Reset all the statistics for the given category name. The expected argument is
the name of the category of statistics (e.g. JDBCStorageConnection).
- </entry>
+ </row>
+ <row>
+ <entry>
+ resetAll
+ </entry>
+ <entry>
+ Reset all the statistics for the given category name. The
expected argument is the name of the category of statistics (e.g. JDBCStorageConnection).
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- The full name of the related MBean is <emphasis>exo:service=statistic,
view=jcr</emphasis>.
- </para>
+ </table>
+ The full name of the related MBean is <emphasis>exo:service=statistic,
view=jcr</emphasis>.
+ </para>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/cache.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/cache.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/cache.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -160,7 +160,7 @@
<section
id="sect-Reference_Guide-Advanced_concepts-Invalidation">
<title>Invalidation</title>
<para>
- In case, you have big values or non serializable values and you need a
replicated cache to at list invalidate the data when it is needed, you can use the
invalidation mode that will work on top of any replicated cache implementations. This is
possible thanks to the class <emphasis>InvalidationExoCache</emphasis> which
is actually a decorator whose idea is to replicate the the hash code of the value in order
to know if it is needed or not to invalidate the local data, if the new hash code of the
value is the same as the old value, we assume that it is the same value so we don't
invalidate the old value. This is required to avoid the following infinite loop that we
will face with invalidation mode proposed out of the box by JBoss Cache for example:
+ In case, you have big values or non serializable values and you need a
replicated cache to at list invalidate the data when it is needed, you can use the
invalidation mode that will work on top of any replicated cache implementations. This is
possible thanks to the class <emphasis>InvalidationExoCache</emphasis> which
is actually a decorator whose idea is to replicate the hash code of the value in order to
know if it is needed or not to invalidate the local data, if the new hash code of the
value is the same as the old value, we assume that it is the same value so we don't
invalidate the old value. This is required to avoid the following infinite loop that we
will face with invalidation mode proposed out of the box by JBoss Cache for example:
</para>
<orderedlist>
<listitem>
@@ -737,7 +737,7 @@
<section
id="sect-Reference_Guide-Defining_a_cache-How_to_define_a_distributed_or_a_local_cache">
<title>How to define a distributed or a local cache?</title>
<para>
- Actually, if you use a custom configuration for your cache as
described in a previous section, we will use the cache mode definde in your configuration
file.
+ Actually, if you use a custom configuration for your cache as
described in a previous section, we will use the cache mode define in your configuration
file.
</para>
<para>
In case, you decide to use the default configuration template, we use
the field <emphasis>distributed</emphasis> of your
<envar>ExoCacheConfig</envar> to decide. In other words, if the value of this
field is false (the default value), the cache will be a local cache, otherwise it will be
the cache mode defined in your default configuration template that should be distributed.
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/container-configuration.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/container-configuration.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/container-configuration.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,27 +4,27 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Container_Configuration">
- <title>Container Configuration</title>
- <section id="sect-Reference_Guide-Container_Configuration-Intro">
- <title>Intro</title>
- <para>
- eXo Portal uses PicoContainer, which implements the Inversion of Control (IoC) design
pattern. All eXo containers inherit from a PicoContainer. There are mainly two eXo
containers used, each of them can provide one or several services. Each container service
is delivered in a JAR file. This JAR file may contain a default configuration. The use of
default configurations is recommended and most services provide it.
- </para>
- <para>
- When a Pico Container searches for services and its configurations, each configurable
service may be reconfigured to override default values or set additional parameters. If
the service is configured in two or more places the configuration override mechanism will
be used.
- </para>
- <para>
- Confused? - You might be interested in the <xref
linkend="sect-Reference_Guide-Service_Configuration_for_Beginners" />
article, which explains the basics.
- </para>
+ <title>Container Configuration</title>
+ <section id="sect-Reference_Guide-Container_Configuration-Intro">
+ <title>Intro</title>
+ <para>
+ eXo Portal uses PicoContainer, which implements the Inversion of Control
(IoC) design pattern. All eXo containers inherit from a PicoContainer. There are mainly
two eXo containers used, each of them can provide one or several services. Each container
service is delivered in a JAR file. This JAR file may contain a default configuration. The
use of default configurations is recommended and most services provide it.
+ </para>
+ <para>
+ When a Pico Container searches for services and its configurations, each
configurable service may be reconfigured to override default values or set additional
parameters. If the service is configured in two or more places the configuration override
mechanism will be used.
+ </para>
+ <para>
+ Confused? - You might be interested in the <xref
linkend="sect-Reference_Guide-Service_Configuration_for_Beginners" />
article, which explains the basics.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Container_Configuration-Kernel_configuration_namespace">
- <title>Kernel configuration namespace</title>
- <para>
- To be effective, the namespace URI
<
uri>http://www.exoplaform.org/xml/ns/kernel_1_2.xsd</uri> must be target
namespace of the XML configuration file.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Container_Configuration-Kernel_configuration_namespace">
+ <title>Kernel configuration namespace</title>
+ <para>
+ To be effective, the namespace URI
<
uri>http://www.exoplaform.org/xml/ns/kernel_1_2.xsd</uri> must be target
namespace of the XML configuration file.
+ </para>
+
<programlisting language="XML" role="XML"><configuration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd
http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
@@ -32,11 +32,11 @@
...
</configuration></programlisting>
- <note>
- <para>
- Any values in the configuration files can be created thanks to variables since the
eXo kernel resolves them, for example the following configuration will be well
interpreted:
- </para>
-
+ <note>
+ <para>
+ Any values in the configuration files can be created thanks to variables
since the eXo kernel resolves them, for example the following configuration will be well
interpreted:
+ </para>
+
<programlisting language="XML"
role="XML"><configuration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd
http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
@@ -47,233 +47,233 @@
<import>simple.xml</import>
</configuration></programlisting>
- <para>
- The variables that are supported, are System properties and variables that are
specific to your portal container, see next sections for more details.
- </para>
+ <para>
+ The variables that are supported, are System properties and variables
that are specific to your portal container, see next sections for more details.
+ </para>
- </note>
+ </note>
- </section>
-
- <section
id="sect-Reference_Guide-Container_Configuration-Understanding_how_configuration_files_are_loaded">
- <title>Understanding how configuration files are loaded</title>
- <para>
- eXo Portal uses PicoContainer, which implements the Inversion of Control (IoC) design
pattern. All eXo containers inherit from a PicoContainer. There are mainly two eXo
containers used, each of them can provide one or several services. Each container service
is delivered in a JAR file. This JAR file may contain a default configuration. The use of
default configurations is recommended and most of services provide it.
- </para>
- <para>
- When a Pico Container searches for services and its configurations, each configurable
service may be reconfigured to override default values or set additional parameters. If
the service is configured in two or more places, the configuration override mechanism will
be used.
- </para>
- <section
id="sect-Reference_Guide-Understanding_how_configuration_files_are_loaded-Configuration_Retrieval">
- <title>Configuration Retrieval</title>
- <para>
- The container performs the following steps to make eXo Container configuration
retrieval, depending on the container type.
- </para>
- <section
id="sect-Reference_Guide-Configuration_Retrieval-Configuration_retrieval_order_for_the_PortalContainer">
- <title>Configuration retrieval order for the
<envar>PortalContainer</envar></title>
- <para>
- The container is initialized by looking into different locations. This container is
used by portal applications. Configurations are overloaded in the following lookup
sequence:
- </para>
- <orderedlist>
- <listitem>
- <para>
- Services default <envar>RootContainer</envar> configurations from JAR
files <emphasis>/conf/configuration.xml</emphasis>
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Container_Configuration-Understanding_how_configuration_files_are_loaded">
+ <title>Understanding how configuration files are loaded</title>
+ <para>
+ eXo Portal uses PicoContainer, which implements the Inversion of Control
(IoC) design pattern. All eXo containers inherit from a PicoContainer. There are mainly
two eXo containers used, each of them can provide one or several services. Each container
service is delivered in a JAR file. This JAR file may contain a default configuration. The
use of default configurations is recommended and most of services provide it.
+ </para>
+ <para>
+ When a Pico Container searches for services and its configurations, each
configurable service may be reconfigured to override default values or set additional
parameters. If the service is configured in two or more places, the configuration override
mechanism will be used.
+ </para>
+ <section
id="sect-Reference_Guide-Understanding_how_configuration_files_are_loaded-Configuration_Retrieval">
+ <title>Configuration Retrieval</title>
+ <para>
+ The container performs the following steps to make eXo Container
configuration retrieval, depending on the container type.
+ </para>
+ <section
id="sect-Reference_Guide-Configuration_Retrieval-Configuration_retrieval_order_for_the_PortalContainer">
+ <title>Configuration retrieval order for the
<envar>PortalContainer</envar></title>
+ <para>
+ The container is initialized by looking into different locations.
This container is used by portal applications. Configurations are overloaded in the
following lookup sequence:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Services default <envar>RootContainer</envar>
configurations from JAR files <emphasis>/conf/configuration.xml</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- External <envar>RootContainer</envar> configuration can be found at
<emphasis>$AS_HOME/exo-conf/configuration.xml</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ External <envar>RootContainer</envar>
configuration can be found at
<emphasis>$AS_HOME/exo-conf/configuration.xml</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- Services default <envar>PortalContainer</envar> configurations from
JAR files <emphasis>/conf/portal/configuration.xml</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Services default <envar>PortalContainer</envar>
configurations from JAR files
<emphasis>/conf/portal/configuration.xml</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- Web applications configurations from WAR files
<emphasis>/WEB-INF/conf/configuration.xml</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Web applications configurations from WAR files
<emphasis>/WEB-INF/conf/configuration.xml</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- External configuration for services of named portal can be found at
<emphasis>$AS_HOME/exo-conf/portal/$PORTAL_NAME/configuration.xml</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ External configuration for services of named portal can be
found at
<emphasis>$AS_HOME/exo-conf/portal/$PORTAL_NAME/configuration.xml</emphasis>
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
+ </orderedlist>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Retrieval-Configuration_retrieval_for_a_StandaloneContainer">
- <title>Configuration retrieval for a
<envar>StandaloneContainer</envar></title>
- <para>
- The container is initialized by looking into different locations. This container is
used by non portal applications. Configurations are overloaded in the following lookup
sequence:
- </para>
- <orderedlist>
- <listitem>
- <para>
- Services default <envar>RootContainer</envar> configurations from JAR
files <emphasis>/conf/configuration.xml</emphasis>
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Retrieval-Configuration_retrieval_for_a_StandaloneContainer">
+ <title>Configuration retrieval for a
<envar>StandaloneContainer</envar></title>
+ <para>
+ The container is initialized by looking into different locations.
This container is used by non portal applications. Configurations are overloaded in the
following lookup sequence:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Services default <envar>RootContainer</envar>
configurations from JAR files <emphasis>/conf/configuration.xml</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- External <envar>RootContainer</envar> configuration can be found at
<emphasis>$AS_HOME/exo-conf/configuration.xml</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ External <envar>RootContainer</envar>
configuration can be found at
<emphasis>$AS_HOME/exo-conf/configuration.xml</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- Services default <envar>StandaloneContainer</envar> configurations
from JAR files <emphasis>/conf/portal/configuration.xml</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Services default
<envar>StandaloneContainer</envar> configurations from JAR files
<emphasis>/conf/portal/configuration.xml</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- Web applications configurations from WAR files
<emphasis>/WEB-INF/conf/configuration.xml</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Web applications configurations from WAR files
<emphasis>/WEB-INF/conf/configuration.xml</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- Then depending on the <envar>StandaloneContainer</envar> configuration
URL initialization:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- if configuration URL was initialized to be added to services defaults, as
below:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Then depending on the
<envar>StandaloneContainer</envar> configuration URL initialization:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ if configuration URL was initialized to be added to
services defaults, as below:
+ </para>
+
<programlisting language="Java" role="Java">// add
configuration to the default services configurations from JARs/WARs
StandaloneContainer.addConfigurationURL(containerConf);</programlisting>
- <para>
- Configuration from added URL <emphasis>containerConf</emphasis> will
override only services configured in the file
- </para>
+ <para>
+ Configuration from added URL
<emphasis>containerConf</emphasis> will override only services configured in
the file
+ </para>
- </listitem>
- <listitem>
- <para>
- if configuration URL not initialized at all, it will be found at
<emphasis>$AS_HOME/exo-configuration.xml</emphasis>. If
<emphasis>$AS_HOME/exo-configuration.xml</emphasis> doesn't exist the
container will try find it at
<emphasis>$AS_HOME/exo-conf/exo-configuration.xml</emphasis> location and if
it's still not found and the <envar>StandaloneContainer</envar> instance
obtained with the dedicated configuration <envar>ClassLoader</envar> the
container will try to retrieve the resource
<emphasis>conf/exo-configuration.xml</emphasis> within the given
<envar>ClassLoader</envar>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ if configuration URL not initialized at all, it will
be found at <emphasis>$AS_HOME/exo-configuration.xml</emphasis>. If
<emphasis>$AS_HOME/exo-configuration.xml</emphasis> doesn't exist the
container will try find it at
<emphasis>$AS_HOME/exo-conf/exo-configuration.xml</emphasis> location and if
it's still not found and the <envar>StandaloneContainer</envar> instance
obtained with the dedicated configuration <envar>ClassLoader</envar> the
container will try to retrieve the resource
<emphasis>conf/exo-configuration.xml</emphasis> within the given
<envar>ClassLoader</envar>.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </orderedlist>
+ </orderedlist>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Retrieval-General_notes_about_the_configuration_retrieval">
- <title>General notes about the configuration retrieval</title>
- <note>
- <para>
- <emphasis>$AS_HOME</emphasis> - application server home directory, or
<emphasis>user.dir</emphasis> JVM system property value in case of Java
Standalone application. The application server home is:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- For <envar>Jonas</envar>, the value of the variable
<emphasis>${jonas.base}.</emphasis>
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Retrieval-General_notes_about_the_configuration_retrieval">
+ <title>General notes about the configuration
retrieval</title>
+ <note>
+ <para>
+ <emphasis>$AS_HOME</emphasis> - application server
home directory, or <emphasis>user.dir</emphasis> JVM system property value in
case of Java Standalone application. The application server home is:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For <envar>Jonas</envar>, the value of the
variable <emphasis>${jonas.base}.</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- For <envar>Jetty</envar>, the value of the variable
<emphasis>${jetty.home}.</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For <envar>Jetty</envar>, the value of the
variable <emphasis>${jetty.home}.</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- For <envar>Websphere</envar>, the value of the variable
<emphasis>${was.install.root}.</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For <envar>Websphere</envar>, the value of
the variable <emphasis>${was.install.root}.</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- For <envar>Weblogic</envar>, the value of the variable
<emphasis>${wls.home}</emphasis>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For <envar>Weblogic</envar>, the value of the
variable <emphasis>${wls.home}</emphasis>.
+ </para>
- </listitem>
- <listitem>
- <para>
- For <envar>Glassfish</envar>, the value of the variable
<emphasis>${com.sun.aas.instanceRoot}</emphasis>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For <envar>Glassfish</envar>, the value of
the variable <emphasis>${com.sun.aas.instanceRoot}</emphasis>.
+ </para>
- </listitem>
- <listitem>
- <para>
- For <envar>Tomcat</envar>, the value of the variable
<emphasis>${catalina.home}</emphasis>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For <envar>Tomcat</envar>, the value of the
variable <emphasis>${catalina.home}</emphasis>.
+ </para>
- </listitem>
- <listitem>
- <para>
- For <envar>JBoss AS</envar>, the value of the variable
<emphasis>${jboss.server.config.url}</emphasis> if the exo-conf directory can
be found there otherwise it will be the value of the variable
<emphasis>${jboss.home.dir}</emphasis>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For <envar>JBoss AS</envar>, the value of the
variable <emphasis>${jboss.server.config.url}</emphasis> if the exo-conf
directory can be found there otherwise it will be the value of the variable
<emphasis>${jboss.home.dir}</emphasis>.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </note>
- <note>
- <para>
- <emphasis>$PORTAL_NAME</emphasis> - portal web application name.
- </para>
+ </note>
+ <note>
+ <para>
+ <emphasis>$PORTAL_NAME</emphasis> - portal web
application name.
+ </para>
- </note>
- <note>
- <para>
- External configuration location can be overridden with System property
<emphasis>exo.conf.dir</emphasis>. If the property exists, its value will be
used as path to eXo configuration directory, i.e. to
<emphasis>$AS_HOME/exo-conf</emphasis> alternative. E.g. put property in
command line java <emphasis>-Dexo.conf.dir=/path/to/exo/conf</emphasis>. In
this particular use case, you do not need to use any prefix to import other files. For
instance, if your configuration file is
<emphasis>$AS_HOME/exo-conf/portal/PORTAL_NAME/configuration.xml</emphasis>
and you want to import the configuration file
<emphasis>$AS_HOME/exo-conf/portal/PORTAL_NAME/mySubConfDir/myConfig.xml</emphasis>,
you can do it by adding
<emphasis><import>mySubConfDir/myConfig.xml</import></emphasis>
to your configuration file.
- </para>
+ </note>
+ <note>
+ <para>
+ External configuration location can be overridden with System
property <emphasis>exo.conf.dir</emphasis>. If the property exists, its value
will be used as path to eXo configuration directory, i.e. to
<emphasis>$AS_HOME/exo-conf</emphasis> alternative. E.g. put property in
command line java <emphasis>-Dexo.conf.dir=/path/to/exo/conf</emphasis>. In
this particular use case, you do not need to use any prefix to import other files. For
instance, if your configuration file is
<emphasis>$AS_HOME/exo-conf/portal/PORTAL_NAME/configuration.xml</emphasis>
and you want to import the configuration file
<emphasis>$AS_HOME/exo-conf/portal/PORTAL_NAME/mySubConfDir/myConfig.xml</emphasis>,
you can do it by adding
<emphasis><import>mySubConfDir/myConfig.xml</import></emphasis>
to your configuration file.
+ </para>
- </note>
- <note>
- <para>
- The name of the configuration folder that is by default
<emphasis>"exo-conf"</emphasis>, can be changed thanks to the System
property <emphasis>exo.conf.dir.name</emphasis>.
- </para>
+ </note>
+ <note>
+ <para>
+ The name of the configuration folder that is by default
<emphasis>"exo-conf"</emphasis>, can be changed thanks to the System
property <emphasis>exo.conf.dir.name</emphasis>.
+ </para>
- </note>
- <note>
- <para>
- The search looks for a configuration file in each JAR/WAR available from the
classpath using the current thread context classloader. During the search these
configurations are added to a set. If the service was configured previously and the
current JAR contains a new configuration of that service the latest (from the current
JAR/WAR) will replace the previous one. The last one will be applied to the service during
the services start phase.
- </para>
+ </note>
+ <note>
+ <para>
+ The search looks for a configuration file in each JAR/WAR
available from the classpath using the current thread context classloader. During the
search these configurations are added to a set. If the service was configured previously
and the current JAR contains a new configuration of that service the latest (from the
current JAR/WAR) will replace the previous one. The last one will be applied to the
service during the services start phase.
+ </para>
- </note>
- <warning>
- <para>
- Take care to have no dependencies between configurations from JAR files
(<emphasis>/conf/portal/configuration.xml</emphasis> and
<emphasis>/conf/configuration.xml</emphasis>) since we have no way to know in
advance the loading order of those configurations. In other words, if you want to overload
some configuration located in the file
<emphasis>/conf/portal/configuration.xml</emphasis> of a given JAR file, you
must not do it from the file
<emphasis>/conf/portal/configuration.xml</emphasis> of another JAR file but
from another configuration file loaded after configurations from JAR files
<emphasis>/conf/portal/configuration.xml.</emphasis>
- </para>
+ </note>
+ <warning>
+ <para>
+ Take care to have no dependencies between configurations from JAR
files (<emphasis>/conf/portal/configuration.xml</emphasis> and
<emphasis>/conf/configuration.xml</emphasis>) since we have no way to know in
advance the loading order of those configurations. In other words, if you want to overload
some configuration located in the file
<emphasis>/conf/portal/configuration.xml</emphasis> of a given JAR file, you
must not do it from the file
<emphasis>/conf/portal/configuration.xml</emphasis> of another JAR file but
from another configuration file loaded after configurations from JAR files
<emphasis>/conf/portal/configuration.xml.</emphasis>
+ </para>
- </warning>
- <para>
- After the processing of all configurations available in system, the container will
initialize it and start each service in order of the dependency injection (DI).
- </para>
- <para>
- The user/developer should be careful when configuring the same service in different
configuration files. It's recommended to configure a service in its own JAR only. Or,
in case of a portal configuration, strictly reconfigure the services in portal WAR files
or in an external configuration.
- </para>
- <para>
- There are services that can be (or should be) configured more than one time. This
depends on business logic of the service. A service may initialize the same resource
(shared with other services) or may add a particular object to a set of objects (shared
with other services too). In the first case, it's critical who will be the last, i.e.
whose configuration will be used. In the second case, it's no matter who is the first
and who is the last (if the parameter objects are independent).
- </para>
+ </warning>
+ <para>
+ After the processing of all configurations available in system, the
container will initialize it and start each service in order of the dependency injection
(DI).
+ </para>
+ <para>
+ The user/developer should be careful when configuring the same
service in different configuration files. It's recommended to configure a service in
its own JAR only. Or, in case of a portal configuration, strictly reconfigure the services
in portal WAR files or in an external configuration.
+ </para>
+ <para>
+ There are services that can be (or should be) configured more than
one time. This depends on business logic of the service. A service may initialize the same
resource (shared with other services) or may add a particular object to a set of objects
(shared with other services too). In the first case, it's critical who will be the
last, i.e. whose configuration will be used. In the second case, it's no matter who is
the first and who is the last (if the parameter objects are independent).
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Retrieval-Configuration_retrieval_log">
- <title>Configuration retrieval log</title>
- <para>
- In case of problems with service configuration, it's important to know from
which JAR/WAR it comes. For that purpose, the JVM system property
<emphasis>org.exoplatform.container.configuration.debug</emphasis> can be
used.
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Retrieval-Configuration_retrieval_log">
+ <title>Configuration retrieval log</title>
+ <para>
+ In case of problems with service configuration, it's important to
know from which JAR/WAR it comes. For that purpose, the JVM system property
<emphasis>org.exoplatform.container.configuration.debug</emphasis> can be
used.
<programlisting>java -Dorg.exoplatform.container.configuration.debug
...</programlisting>
- </para>
- <para>
- If the property is enabled, the container configuration manager will log the
configuration adding process at <emphasis>INFO</emphasis> level.
+ </para>
+ <para>
+ If the property is enabled, the container configuration manager will
log the configuration adding process at <emphasis>INFO</emphasis> level.
<programlisting>......
Add configuration
jar:file:/D:/Projects/eXo/dev/exo-working/exo-tomcat/lib/exo.kernel.container-trunk.jar!/conf/portal/configuration.xml
Add configuration
jar:file:/D:/Projects/eXo/dev/exo-working/exo-tomcat/lib/exo.kernel.component.cache-trunk.jar!/conf/portal/configuration.xml
@@ -283,35 +283,35 @@
import
jndi:/localhost/portal/WEB-INF/conf/ecm/jcr-component-plugins-configuration.xml
import jndi:/localhost/portal/WEB-INF/conf/jcr/jcr-configuration.xml
......</programlisting>
- </para>
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_Retrieval-Getting_the_effective_configuration_at_Runtime">
- <title>Getting the effective configuration at Runtime</title>
- <para>
- The effective configuration of the StandaloneContainer, RootContainer and/or
PortalContainer can be known thanks to the method
<emphasis>getConfigurationXML</emphasis>() that is exposed through JMX at the
container's level. This method will give you the effective configuration in XML format
that has been really interpreted by the kernel. This could be helpful to understand how a
given component or plugin has been initialized.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_Retrieval-Getting_the_effective_configuration_at_Runtime">
+ <title>Getting the effective configuration at
Runtime</title>
+ <para>
+ The effective configuration of the StandaloneContainer, RootContainer
and/or PortalContainer can be known thanks to the method
<emphasis>getConfigurationXML</emphasis>() that is exposed through JMX at the
container's level. This method will give you the effective configuration in XML format
that has been really interpreted by the kernel. This could be helpful to understand how a
given component or plugin has been initialized.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Understanding_how_configuration_files_are_loaded-Advanced_concepts_for_the_PortalContainers">
- <title>Advanced concepts for the
<emphasis>PortalContainers</emphasis></title>
- <para>
- Since eXo JCR 1.12, we added a set of new features that have been designed to extend
portal applications such as GateIn.
- </para>
- <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Add_new_configuration_files_from_a_WAR_file">
- <title>Add new configuration files from a WAR file</title>
- <para>
- A <envar>ServletContextListener</envar> called
<envar>org.exoplatform.container.web.PortalContainerConfigOwner</envar> has
been added in order to notify the application that a given web application provides some
configuration to the portal container, and this configuration file is the file
<emphasis>WEB-INF/conf/configuration.xml</emphasis> available in the web
application itself.
- </para>
- <para>
- If your war file contains some configuration to add to the
<envar>PortalContainer</envar> simply add the following lines in your
<emphasis>web.xml</emphasis> file.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Understanding_how_configuration_files_are_loaded-Advanced_concepts_for_the_PortalContainers">
+ <title>Advanced concepts for the
<emphasis>PortalContainers</emphasis></title>
+ <para>
+ Since eXo JCR 1.12, we added a set of new features that have been
designed to extend portal applications such as GateIn.
+ </para>
+ <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Add_new_configuration_files_from_a_WAR_file">
+ <title>Add new configuration files from a WAR file</title>
+ <para>
+ A <envar>ServletContextListener</envar> called
<envar>org.exoplatform.container.web.PortalContainerConfigOwner</envar> has
been added in order to notify the application that a given web application provides some
configuration to the portal container, and this configuration file is the file
<emphasis>WEB-INF/conf/configuration.xml</emphasis> available in the web
application itself.
+ </para>
+ <para>
+ If your war file contains some configuration to add to the
<envar>PortalContainer</envar> simply add the following lines in your
<emphasis>web.xml</emphasis> file.
+ </para>
+
<programlisting language="XML" role="XML"><?xml
version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
@@ -326,33 +326,33 @@
...
</web-app></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Creating_your_PortalContainers_from_a_WAR_file">
- <title>Creating your <emphasis>PortalContainers</emphasis> from a
WAR file</title>
- <para>
- A <envar>ServletContextListener</envar> called
<envar>org.exoplatform.container.web.PortalContainerCreator</envar> has been
added in order to create the current portal containers that have been registered. We
assume that all the web applications have already been loaded before calling
<envar>PortalContainerCreator.contextInitialized.</envar>
- </para>
- <para>
- <note>
- <para>
- In GateIn, the <envar>PortalContainerCreator</envar> is already
managed by the file <emphasis>starter.war/ear.</emphasis>
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Creating_your_PortalContainers_from_a_WAR_file">
+ <title>Creating your
<emphasis>PortalContainers</emphasis> from a WAR file</title>
+ <para>
+ A <envar>ServletContextListener</envar> called
<envar>org.exoplatform.container.web.PortalContainerCreator</envar> has been
added in order to create the current portal containers that have been registered. We
assume that all the web applications have already been loaded before calling
<envar>PortalContainerCreator.contextInitialized.</envar>
+ </para>
+ <para>
+ <note>
+ <para>
+ In GateIn, the
<envar>PortalContainerCreator</envar> is already managed by the file
<emphasis>starter.war/ear.</emphasis>
+ </para>
- </note>
- </para>
+ </note>
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Defining_a_PortalContainer_with_its_dependencies_and_its_settings">
- <title>Defining a <emphasis>PortalContainer</emphasis> with its
dependencies and its settings</title>
- <para>
- Now we can define precisely a portal container and its dependencies and settings
thanks to the <envar>PortalContainerDefinition</envar> that currently contains
the name of the portal container, the name of the rest context, the name of the realm, the
web application dependencies ordered by loading priority (i.e. the first dependency must
be loaded at first and so on..) and the settings.
- </para>
- <para>
- To be able to define a <envar>PortalContainerDefinition</envar>, we need
to ensure first of all that a <envar>PortalContainerConfig</envar> has been
defined at the <envar>RootContainer</envar> level, see an example below:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Defining_a_PortalContainer_with_its_dependencies_and_its_settings">
+ <title>Defining a <emphasis>PortalContainer</emphasis>
with its dependencies and its settings</title>
+ <para>
+ Now we can define precisely a portal container and its dependencies
and settings thanks to the <envar>PortalContainerDefinition</envar> that
currently contains the name of the portal container, the name of the rest context, the
name of the realm, the web application dependencies ordered by loading priority (i.e. the
first dependency must be loaded at first and so on..) and the settings.
+ </para>
+ <para>
+ To be able to define a
<envar>PortalContainerDefinition</envar>, we need to ensure first of all that
a <envar>PortalContainerConfig</envar> has been defined at the
<envar>RootContainer</envar> level, see an example below:
+ </para>
+
<programlisting language="XML" role="XML">
<component>
<!-- The full qualified name of the PortalContainerConfig -->
<type>org.exoplatform.container.definition.PortalContainerConfig</type>
@@ -433,87 +433,87 @@
</object-param>
</init-params>
</component></programlisting>
- <table
id="tabl-Reference_Guide-Defining_a_PortalContainer_with_its_dependencies_and_its_settings-Descriptions_of_the_fields_of_PortalContainerConfig">
- <title>Descriptions of the fields of
<envar>PortalContainerConfig</envar></title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- default.portal.container (*)
- </entry>
- <entry>
- The name of the default portal container. This field is optional.
- </entry>
+ <table
id="tabl-Reference_Guide-Defining_a_PortalContainer_with_its_dependencies_and_its_settings-Descriptions_of_the_fields_of_PortalContainerConfig">
+ <title>Descriptions of the fields of
<envar>PortalContainerConfig</envar></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ default.portal.container (*)
+ </entry>
+ <entry>
+ The name of the default portal container. This field
is optional.
+ </entry>
- </row>
- <row>
- <entry>
- default.rest.context (*)
- </entry>
- <entry>
- The name of the default rest <envar>ServletContext</envar>. This
field is optional.
- </entry>
+ </row>
+ <row>
+ <entry>
+ default.rest.context (*)
+ </entry>
+ <entry>
+ The name of the default rest
<envar>ServletContext</envar>. This field is optional.
+ </entry>
- </row>
- <row>
- <entry>
- default.realm.name (*)
- </entry>
- <entry>
- The name of the default realm. This field is optional.
- </entry>
+ </row>
+ <row>
+ <entry>
+ default.realm.name (*)
+ </entry>
+ <entry>
+ The name of the default realm. This field is
optional.
+ </entry>
- </row>
- <row>
- <entry>
- ignore.unregistered.webapp (*)
- </entry>
- <entry>
- Indicates whether the unregistered webapps have to be ignored. If a webapp has
not been registered as a dependency of any portal container, the application will use the
value of this parameter to know what to do:
- <itemizedlist>
- <listitem>
- <para>
- If it is set to <emphasis>false</emphasis>, this webapp will be
considered by default as a dependency of all the portal containers.
- </para>
+ </row>
+ <row>
+ <entry>
+ ignore.unregistered.webapp (*)
+ </entry>
+ <entry>
+ Indicates whether the unregistered webapps have to be
ignored. If a webapp has not been registered as a dependency of any portal container, the
application will use the value of this parameter to know what to do:
+ <itemizedlist>
+ <listitem>
+ <para>
+ If it is set to
<emphasis>false</emphasis>, this webapp will be considered by default as a
dependency of all the portal containers.
+ </para>
- </listitem>
- <listitem>
- <para>
- If it is set to <emphasis>true</emphasis>, this webapp won't
be considered by default as a dependency of any portal container, it will be simply
ignored.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If it is set to
<emphasis>true</emphasis>, this webapp won't be considered by default as a
dependency of any portal container, it will be simply ignored.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- This field is optional and by default this parameter is set to
<emphasis>false</emphasis>.
- </entry>
+ </itemizedlist>
+ This field is optional and by default this parameter
is set to <emphasis>false</emphasis>.
+ </entry>
- </row>
- <row>
- <entry>
- default.portal.definition
- </entry>
- <entry>
- The definition of the default portal container. This field is optional. The
expected type is
<envar>org.exoplatform.container.definition.PortalContainerDefinition</envar>
that is described below. Allow the parameters defined in this default
<envar>PortalContainerDefinition</envar> will be the default values.
- </entry>
+ </row>
+ <row>
+ <entry>
+ default.portal.definition
+ </entry>
+ <entry>
+ The definition of the default portal container. This
field is optional. The expected type is
<envar>org.exoplatform.container.definition.PortalContainerDefinition</envar>
that is described below. Allow the parameters defined in this default
<envar>PortalContainerDefinition</envar> will be the default values.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <note>
- <para>
- All the value of the parameters marked with a (*) can be defined thanks to System
properties like any values in configuration files but also thanks to variables loaded by
the <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
default, it would be all the variables defined in the file
<emphasis>configuration.properties</emphasis>.
- </para>
+ </table>
+ <note>
+ <para>
+ All the value of the parameters marked with a (*) can be defined
thanks to System properties like any values in configuration files but also thanks to
variables loaded by the <emphasis>PropertyConfigurator</emphasis>. For example
in GateIn by default, it would be all the variables defined in the file
<emphasis>configuration.properties</emphasis>.
+ </para>
- </note>
- <para>
- A new <envar>PortalContainerDefinition</envar> can be defined at the
<envar>RootContainer</envar> level thanks to an external plugin, see an
example below:
- </para>
-
+ </note>
+ <para>
+ A new <envar>PortalContainerDefinition</envar> can be
defined at the <envar>RootContainer</envar> level thanks to an external
plugin, see an example below:
+ </para>
+
<programlisting language="XML" role="XML">
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -608,393 +608,393 @@
</init-params>
</component-plugin>
</external-component-plugins></programlisting>
- <table
id="tabl-Reference_Guide-Defining_a_PortalContainer_with_its_dependencies_and_its_settings-Descriptions_of_the_fields_of_a_PortalContainerDefinition_when_it_is_used_to_define_a_new_portal_container">
- <title>Descriptions of the fields of a
<envar>PortalContainerDefinition</envar> when it is used to define a new
portal container</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- name (*)
- </entry>
- <entry>
- The name of the portal container. This field is mandatory .
- </entry>
+ <table
id="tabl-Reference_Guide-Defining_a_PortalContainer_with_its_dependencies_and_its_settings-Descriptions_of_the_fields_of_a_PortalContainerDefinition_when_it_is_used_to_define_a_new_portal_container">
+ <title>Descriptions of the fields of a
<envar>PortalContainerDefinition</envar> when it is used to define a new
portal container</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ name (*)
+ </entry>
+ <entry>
+ The name of the portal container. This field is
mandatory .
+ </entry>
- </row>
- <row>
- <entry>
- restContextName (*)
- </entry>
- <entry>
- The name of the context name of the rest web application. This field is
optional. The default value will be defined at the
<envar>PortalContainerConfig</envar> level.
- </entry>
+ </row>
+ <row>
+ <entry>
+ restContextName (*)
+ </entry>
+ <entry>
+ The name of the context name of the rest web
application. This field is optional. The default value will be defined at the
<envar>PortalContainerConfig</envar> level.
+ </entry>
- </row>
- <row>
- <entry>
- realmName (*)
- </entry>
- <entry>
- The name of the realm. This field is optional. The default value will be defined
at the <envar>PortalContainerConfig</envar> level.
- </entry>
+ </row>
+ <row>
+ <entry>
+ realmName (*)
+ </entry>
+ <entry>
+ The name of the realm. This field is optional. The
default value will be defined at the <envar>PortalContainerConfig</envar>
level.
+ </entry>
- </row>
- <row>
- <entry>
- dependencies
- </entry>
- <entry>
- All the dependencies of the portal container ordered by loading priority. This
field is optional. The default value will be defined at the
<envar>PortalContainerConfig</envar> level. The dependencies are in fact the
list of the context names of the web applications from which the portal container depends.
This field is optional. The dependency order is really crucial since it will be
interpreted the same way by several components of the platform. All those components, will
consider the 1st element in the list less important than the second element and so on. It
is currently used to:
- <itemizedlist>
- <listitem>
- <para>
- Know the loading order of all the dependencies.
- </para>
+ </row>
+ <row>
+ <entry>
+ dependencies
+ </entry>
+ <entry>
+ All the dependencies of the portal container ordered
by loading priority. This field is optional. The default value will be defined at the
<envar>PortalContainerConfig</envar> level. The dependencies are in fact the
list of the context names of the web applications from which the portal container depends.
This field is optional. The dependency order is really crucial since it will be
interpreted the same way by several components of the platform. All those components, will
consider the 1st element in the list less important than the second element and so on. It
is currently used to:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Know the loading order of all the
dependencies.
+ </para>
- </listitem>
- <listitem>
- <para>
- If we have several <envar>PortalContainerConfigOwner</envar>
- <itemizedlist>
- <listitem>
- <para>
- The <envar>ServletContext</envar> of all the
<envar>PortalContainerConfigOwner</envar> will be unified, if we use the
unified <envar>ServletContext</envar>
(<emphasis>PortalContainer.getPortalContext()</emphasis>) to get a resource,
it will try to get the resource in the <envar>ServletContext</envar> of the
most important <envar>PortalContainerConfigOwner</envar> (i.e. last in the
dependency list) and if it cans find it, it will try with the second most important
<envar>PortalContainerConfigOwner</envar> and so on.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If we have several
<envar>PortalContainerConfigOwner</envar>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The
<envar>ServletContext</envar> of all the
<envar>PortalContainerConfigOwner</envar> will be unified, if we use the
unified <envar>ServletContext</envar>
(<emphasis>PortalContainer.getPortalContext()</emphasis>) to get a resource,
it will try to get the resource in the <envar>ServletContext</envar> of the
most important <envar>PortalContainerConfigOwner</envar> (i.e. last in the
dependency list) and if it cans find it, it will try with the second most important
<envar>PortalContainerConfigOwner</envar> and so on.
+ </para>
- </listitem>
- <listitem>
- <para>
- The <envar>ClassLoader</envar> of all the
<envar>PortalContainerConfigOwner</envar> will be unified, if we use the
unified <envar>ClassLoader</envar>
(<emphasis>PortalContainer.getPortalClassLoader()</emphasis>) to get a
resource, it will try to get the resource in the <envar>ClassLoader</envar> of
the most important <envar>PortalContainerConfigOwner</envar> (i.e. last in the
dependency list) and if it can find it, it will try with the second most important
<envar>PortalContainerConfigOwner</envar> and so on.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The
<envar>ClassLoader</envar> of all the
<envar>PortalContainerConfigOwner</envar> will be unified, if we use the
unified <envar>ClassLoader</envar>
(<emphasis>PortalContainer.getPortalClassLoader()</emphasis>) to get a
resource, it will try to get the resource in the <envar>ClassLoader</envar> of
the most important <envar>PortalContainerConfigOwner</envar> (i.e. last in the
dependency list) and if it can find it, it will try with the second most important
<envar>PortalContainerConfigOwner</envar> and so on.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- </para>
+ </itemizedlist>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- </entry>
+ </itemizedlist>
+ </entry>
- </row>
- <row>
- <entry>
- settings
- </entry>
- <entry>
- A <envar>java.util.Map</envar> of internal parameters that we would
like to tie the portal container. Those parameters could have any type of value. This
field is optional. If some internal settings are defined at the
<envar>PortalContainerConfig</envar> level, the two maps of settings will be
merged. If a setting with the same name is defined in both maps, it will keep the value
defined at the <envar>PortalContainerDefinition</envar> level.
- </entry>
+ </row>
+ <row>
+ <entry>
+ settings
+ </entry>
+ <entry>
+ A <envar>java.util.Map</envar> of
internal parameters that we would like to tie the portal container. Those parameters could
have any type of value. This field is optional. If some internal settings are defined at
the <envar>PortalContainerConfig</envar> level, the two maps of settings will
be merged. If a setting with the same name is defined in both maps, it will keep the value
defined at the <envar>PortalContainerDefinition</envar> level.
+ </entry>
- </row>
- <row>
- <entry>
- externalSettingsPath
- </entry>
- <entry>
- The path of the external properties file to load as default settings to the
portal container. This field is optional. If some external settings are defined at the
<envar>PortalContainerConfig</envar> level, the two maps of settings will be
merged. If a setting with the same name is defined in both maps, it will keep the value
defined at the <envar>PortalContainerDefinition</envar> level. The external
properties files can be either of type "properties" or of type "xml".
The path will be interpreted as follows:
- <orderedlist>
- <listitem>
- <para>
- The path doesn't contain any prefix of type "classpath:",
"jar:" or "file:", we assume that the file could be externalized so we
apply the following rules:
- <orderedlist>
- <listitem>
- <para>
- A file exists at
<emphasis>${exo-conf-dir}/portal/${portalContainerName}/${externalSettingsPath}</emphasis>,
we will load this file.
- </para>
+ </row>
+ <row>
+ <entry>
+ externalSettingsPath
+ </entry>
+ <entry>
+ The path of the external properties file to load as
default settings to the portal container. This field is optional. If some external
settings are defined at the <envar>PortalContainerConfig</envar> level, the
two maps of settings will be merged. If a setting with the same name is defined in both
maps, it will keep the value defined at the
<envar>PortalContainerDefinition</envar> level. The external properties files
can be either of type "properties" or of type "xml". The path will be
interpreted as follows:
+ <orderedlist>
+ <listitem>
+ <para>
+ The path doesn't contain any prefix
of type "classpath:", "jar:" or "file:", we assume that the
file could be externalized so we apply the following rules:
+ <orderedlist>
+ <listitem>
+ <para>
+ A file exists at
<emphasis>${exo-conf-dir}/portal/${portalContainerName}/${externalSettingsPath}</emphasis>,
we will load this file.
+ </para>
- </listitem>
- <listitem>
- <para>
- No file exists at the previous path, we then assume that the path cans be
interpreted by the <envar>ConfigurationManager</envar>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ No file exists at the
previous path, we then assume that the path cans be interpreted by the
<envar>ConfigurationManager</envar>.
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- </para>
+ </orderedlist>
+ </para>
- </listitem>
- <listitem>
- <para>
- The path contains a prefix, we then assume that the path cans be interpreted
by the <envar>ConfigurationManager</envar>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The path contains a prefix, we then
assume that the path cans be interpreted by the
<envar>ConfigurationManager</envar>.
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- </entry>
+ </orderedlist>
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <table
id="tabl-Reference_Guide-Defining_a_PortalContainer_with_its_dependencies_and_its_settings-Descriptions_of_the_fields_of_a_PortalContainerDefinition_when_it_is_used_to_define_the_default_portal_container">
- <title>Descriptions of the fields of a
<envar>PortalContainerDefinition</envar> when it is used to define the default
portal container</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- name (*)
- </entry>
- <entry>
- The name of the portal container. This field is optional. The default portal
name will be:
- <orderedlist>
- <listitem>
- <para>
- If this field is not empty, then the default value will be the value of this
field.
- </para>
+ </table>
+ <table
id="tabl-Reference_Guide-Defining_a_PortalContainer_with_its_dependencies_and_its_settings-Descriptions_of_the_fields_of_a_PortalContainerDefinition_when_it_is_used_to_define_the_default_portal_container">
+ <title>Descriptions of the fields of a
<envar>PortalContainerDefinition</envar> when it is used to define the default
portal container</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ name (*)
+ </entry>
+ <entry>
+ The name of the portal container. This field is
optional. The default portal name will be:
+ <orderedlist>
+ <listitem>
+ <para>
+ If this field is not empty, then the
default value will be the value of this field.
+ </para>
- </listitem>
- <listitem>
- <para>
- If this field is empty and the value of the parameter
<emphasis>default.portal.container</emphasis> is not empty, then the default
value will be the value of the parameter.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If this field is empty and the value of
the parameter <emphasis>default.portal.container</emphasis> is not empty, then
the default value will be the value of the parameter.
+ </para>
- </listitem>
- <listitem>
- <para>
- If this field and the parameter
<emphasis>default.portal.container</emphasis> are both empty, the default
value will be <emphasis>"portal".</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If this field and the parameter
<emphasis>default.portal.container</emphasis> are both empty, the default
value will be <emphasis>"portal".</emphasis>
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- </entry>
+ </orderedlist>
+ </entry>
- </row>
- <row>
- <entry>
- restContextName (*)
- </entry>
- <entry>
- The name of the context name of the rest web application. This field is
optional. The default value wil be:
- <orderedlist>
- <listitem>
- <para>
- If this field is not empty, then the default value will be the value of this
field.
- </para>
+ </row>
+ <row>
+ <entry>
+ restContextName (*)
+ </entry>
+ <entry>
+ The name of the context name of the rest web
application. This field is optional. The default value wil be:
+ <orderedlist>
+ <listitem>
+ <para>
+ If this field is not empty, then the
default value will be the value of this field.
+ </para>
- </listitem>
- <listitem>
- <para>
- If this field is empty and the value of the parameter
<emphasis>default.rest.context</emphasis> is not empty, then the default value
will be the value of the parameter.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If this field is empty and the value of
the parameter <emphasis>default.rest.context</emphasis> is not empty, then the
default value will be the value of the parameter.
+ </para>
- </listitem>
- <listitem>
- <para>
- If this field and the parameter
<emphasis>default.rest.context</emphasis> are both empty, the default value
will be <emphasis>"rest".</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If this field and the parameter
<emphasis>default.rest.context</emphasis> are both empty, the default value
will be <emphasis>"rest".</emphasis>
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- </entry>
+ </orderedlist>
+ </entry>
- </row>
- <row>
- <entry>
- realmName (*)
- </entry>
- <entry>
- The name of the realm. This field is optional. The default value wil be:
- <orderedlist>
- <listitem>
- <para>
- If this field is not empty, then the default value will be the value of this
field.
- </para>
+ </row>
+ <row>
+ <entry>
+ realmName (*)
+ </entry>
+ <entry>
+ The name of the realm. This field is optional. The
default value will be:
+ <orderedlist>
+ <listitem>
+ <para>
+ If this field is not empty, then the
default value will be the value of this field.
+ </para>
- </listitem>
- <listitem>
- <para>
- If this field is empty and the value of the parameter
<emphasis>default.realm.name</emphasis> is not empty, then the default value
will be the value of the parameter.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If this field is empty and the value of
the parameter <emphasis>default.realm.name</emphasis> is not empty, then the
default value will be the value of the parameter.
+ </para>
- </listitem>
- <listitem>
- <para>
- If this field and the parameter
<emphasis>default.realm.name</emphasis> are both empty, the default value will
be <emphasis>"exo-domain".</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If this field and the parameter
<emphasis>default.realm.name</emphasis> are both empty, the default value will
be <emphasis>"exo-domain".</emphasis>
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- </entry>
+ </orderedlist>
+ </entry>
- </row>
- <row>
- <entry>
- dependencies
- </entry>
- <entry>
- All the dependencies of the portal container ordered by loading priority. This
field is optional. If this field has a non empty value, it will be the default list of
dependencies.
- </entry>
+ </row>
+ <row>
+ <entry>
+ dependencies
+ </entry>
+ <entry>
+ All the dependencies of the portal container ordered
by loading priority. This field is optional. If this field has a non empty value, it will
be the default list of dependencies.
+ </entry>
- </row>
- <row>
- <entry>
- settings
- </entry>
- <entry>
- A <envar>java.util.Map</envar> of internal parameters that we would
like to tie the default portal container. Those parameters could have any type of value.
This field is optional.
- </entry>
+ </row>
+ <row>
+ <entry>
+ settings
+ </entry>
+ <entry>
+ A <envar>java.util.Map</envar> of
internal parameters that we would like to tie the default portal container. Those
parameters could have any type of value. This field is optional.
+ </entry>
- </row>
- <row>
- <entry>
- externalSettingsPath
- </entry>
- <entry>
- The path of the external properties file to load as default settings to the
default portal container. This field is optional. The external properties files can be
either of type "properties" or of type "xml". The path will be
interpreted as follows:
- <orderedlist>
- <listitem>
- <para>
- The path doesn't contain any prefix of type "classpath:",
"jar:" or "file:", we assume that the file could be externalized so we
apply the following rules:
- <orderedlist>
- <listitem>
- <para>
- A file exists at
<emphasis>${exo-conf-dir}/portal/${externalSettingsPath}</emphasis>, we will
load this file.
- </para>
+ </row>
+ <row>
+ <entry>
+ externalSettingsPath
+ </entry>
+ <entry>
+ The path of the external properties file to load as
default settings to the default portal container. This field is optional. The external
properties files can be either of type "properties" or of type "xml".
The path will be interpreted as follows:
+ <orderedlist>
+ <listitem>
+ <para>
+ The path doesn't contain any prefix
of type "classpath:", "jar:" or "file:", we assume that the
file could be externalized so we apply the following rules:
+ <orderedlist>
+ <listitem>
+ <para>
+ A file exists at
<emphasis>${exo-conf-dir}/portal/${externalSettingsPath}</emphasis>, we will
load this file.
+ </para>
- </listitem>
- <listitem>
- <para>
- No file exists at the previous path, we then assume that the path cans be
interpreted by the <envar>ConfigurationManager</envar>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ No file exists at the
previous path, we then assume that the path cans be interpreted by the
<envar>ConfigurationManager</envar>.
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- </para>
+ </orderedlist>
+ </para>
- </listitem>
- <listitem>
- <para>
- The path contains a prefix, we then assume that the path cans be interpreted
by the <envar>ConfigurationManager</envar>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The path contains a prefix, we then
assume that the path cans be interpreted by the
<envar>ConfigurationManager</envar>.
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- </entry>
+ </orderedlist>
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <note>
- <para>
- All the value of the parameters marked with a (*) can be defined thanks to System
properties like any values in configuration files but also thanks to variables loaded by
the <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
default, it would be all the variables defined in the file
<emphasis>configuration.properties</emphasis>.
- </para>
+ </table>
+ <note>
+ <para>
+ All the value of the parameters marked with a (*) can be defined
thanks to System properties like any values in configuration files but also thanks to
variables loaded by the <emphasis>PropertyConfigurator</emphasis>. For example
in GateIn by default, it would be all the variables defined in the file
<emphasis>configuration.properties</emphasis>.
+ </para>
- </note>
- <para>
- Internal and external settings are both optional, but if we give a non empty value
for both the application will merge the settings. If the same setting name exists in both
settings, we apply the following rules:
- </para>
- <orderedlist>
- <listitem>
- <para>
- The value of the external setting is <emphasis>null</emphasis>, we
ignore the value.
- </para>
+ </note>
+ <para>
+ Internal and external settings are both optional, but if we give a
non empty value for both the application will merge the settings. If the same setting name
exists in both settings, we apply the following rules:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The value of the external setting is
<emphasis>null</emphasis>, we ignore the value.
+ </para>
- </listitem>
- <listitem>
- <para>
- The value of the external setting is not <emphasis>null</emphasis> and
the value of the internal setting is <emphasis>null</emphasis>, the final
value will be the external setting value that is of type
<envar>String</envar>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The value of the external setting is not
<emphasis>null</emphasis> and the value of the internal setting is
<emphasis>null</emphasis>, the final value will be the external setting value
that is of type <envar>String</envar>.
+ </para>
- </listitem>
- <listitem>
- <para>
- Both values are not <envar>null</envar>, we will have to convert the
external setting value into the target type which is the type of the internal setting
value, thanks to the static method <emphasis>valueOf(String)</emphasis>, the
following sub-rules are then applied:
- </para>
- <orderedlist>
- <listitem>
- <para>
- The method cannot be found, the final value will be the external setting value
that is of type <envar>String</envar>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Both values are not <envar>null</envar>, we will
have to convert the external setting value into the target type which is the type of the
internal setting value, thanks to the static method
<emphasis>valueOf(String)</emphasis>, the following sub-rules are then
applied:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The method cannot be found, the final value will be
the external setting value that is of type <envar>String</envar>.
+ </para>
- </listitem>
- <listitem>
- <para>
- The method can be found and the external setting value is an empty
<envar>String</envar>, we ignore the external setting value.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The method can be found and the external setting
value is an empty <envar>String</envar>, we ignore the external setting
value.
+ </para>
- </listitem>
- <listitem>
- <para>
- The method can be found and the external setting value is not an empty
<envar>String</envar> but the method call fails, we ignore the external
setting value.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The method can be found and the external setting
value is not an empty <envar>String</envar> but the method call fails, we
ignore the external setting value.
+ </para>
- </listitem>
- <listitem>
- <para>
- The method can be found and the external setting value is not an empty
<envar>String</envar> and the method call succeeds, the final value will be
the external setting value that is of type of the internal setting value.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The method can be found and the external setting
value is not an empty <envar>String</envar> and the method call succeeds, the
final value will be the external setting value that is of type of the internal setting
value.
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
+ </orderedlist>
- </listitem>
+ </listitem>
- </orderedlist>
+ </orderedlist>
- </section>
-
- <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-PortalContainer_settings">
- <title><envar>PortalContainer</envar> settings</title>
- <para>
- We can inject the value of the portal container settings into the portal container
configuration files thanks to the variables which name start with
"<emphasis>portal.container.</emphasis>", so to get the value of a
setting called "<emphasis>foo</emphasis>", just use the following
syntax <emphasis>${portal.container.foo}</emphasis>. You can also use internal
variables, such as:
- </para>
- <table
id="tabl-Reference_Guide-PortalContainer_settings-Definition_of_the_internal_variables">
- <title>Definition of the internal variables</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- portal.container.name
- </entry>
- <entry>
- Gives the name of the current portal container.
- </entry>
+ </section>
+
+ <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-PortalContainer_settings">
+ <title><envar>PortalContainer</envar>
settings</title>
+ <para>
+ We can inject the value of the portal container settings into the
portal container configuration files thanks to the variables which name start with
"<emphasis>portal.container.</emphasis>", so to get the value of a
setting called "<emphasis>foo</emphasis>", just use the following
syntax <emphasis>${portal.container.foo}</emphasis>. You can also use internal
variables, such as:
+ </para>
+ <table
id="tabl-Reference_Guide-PortalContainer_settings-Definition_of_the_internal_variables">
+ <title>Definition of the internal variables</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ portal.container.name
+ </entry>
+ <entry>
+ Gives the name of the current portal container.
+ </entry>
- </row>
- <row>
- <entry>
- portal.container.rest
- </entry>
- <entry>
- Gives the context name of the rest web application of the current portal
container.
- </entry>
+ </row>
+ <row>
+ <entry>
+ portal.container.rest
+ </entry>
+ <entry>
+ Gives the context name of the rest web application of
the current portal container.
+ </entry>
- </row>
- <row>
- <entry>
- portal.container.realm
- </entry>
- <entry>
- Gives the realm name of the current portal container.
- </entry>
+ </row>
+ <row>
+ <entry>
+ portal.container.realm
+ </entry>
+ <entry>
+ Gives the realm name of the current portal
container.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- You can find below an example of how to use the variables:
- </para>
-
+ </table>
+ <para>
+ You can find below an example of how to use the variables:
+ </para>
+
<programlisting language="XML" role="XML"><configuration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_1.xsd
http://www.exoplaform.org/xml/ns/kernel_1_1.xsd"
xmlns="http://www.exoplaform.org/xml/ns/kernel_1_1.xsd">
<component>
@@ -1026,36 +1026,36 @@
</init-params>
</component>
</configuration></programlisting>
- <para>
- In the properties file corresponding to the external settings, you can reuse
variables previously defined (in the external settings or in the internal settings) to
create a new variable. In this case, the prefix
"<emphasis>portal.container.</emphasis>" is not needed, see an
example below:
+ <para>
+ In the properties file corresponding to the external settings, you
can reuse variables previously defined (in the external settings or in the internal
settings) to create a new variable. In this case, the prefix
"<emphasis>portal.container.</emphasis>" is not needed, see an
example below:
<programlisting>my-var1=value 1
my-var2=value 2
complex-value=${my-var1}-${my-var2}</programlisting>
- </para>
- <para>
- In the external and internal settings, you can also use create variables based on
value of System paramaters. The System parameters can either be defined at launch time or
thanks to the <envar>PropertyConfigurator</envar> (see next section for more
details). See an example below:
- </para>
-
+ </para>
+ <para>
+ In the external and internal settings, you can also use create
variables based on value of System paramaters. The System parameters can either be defined
at launch time or thanks to the <envar>PropertyConfigurator</envar> (see next
section for more details). See an example below:
+ </para>
+
<programlisting>temp-dir=${java.io.tmpdir}${file.separator}my-temp</programlisting>
- <para>
- However, for the internal settings, you can use System parameters only to define
settings of type <envar>java.lang.String</envar>.
- </para>
- <para>
- It cans be also very usefull to define a generic variable in the settings of the
default portal container, the value of this variable will change according to the current
portal container. See below an example:
+ <para>
+ However, for the internal settings, you can use System parameters
only to define settings of type <envar>java.lang.String</envar>.
+ </para>
+ <para>
+ It cans be also very useful to define a generic variable in the
settings of the default portal container, the value of this variable will change according
to the current portal container. See below an example:
<programlisting>my-generic-var=value of the portal container
"${name}"</programlisting>
- </para>
- <para>
- If this variable is defined at the default portal container level, the value of this
variable for a portal container called <emphasis>"foo"</emphasis>
will be <emphasis>value of the portal container "foo"</emphasis>.
- </para>
+ </para>
+ <para>
+ If this variable is defined at the default portal container level,
the value of this variable for a portal container called
<emphasis>"foo"</emphasis> will be <emphasis>value of the
portal container "foo"</emphasis>.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Adding_dynamically_settings_andor_dependencies_to_a_PortalContainer">
- <title>Adding dynamically settings and/or dependencies to a
<envar>PortalContainer</envar></title>
- <para>
- It is possible to use <envar>component-plugin</envar> elements in order
to dynamically change a PortalContainerDefinition. In the example below, we add the
dependency <envar>foo</envar> to the default portal container and to the
portal containers called <envar>foo1</envar> and
<envar>foo2</envar>:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Adding_dynamically_settings_andor_dependencies_to_a_PortalContainer">
+ <title>Adding dynamically settings and/or dependencies to a
<envar>PortalContainer</envar></title>
+ <para>
+ It is possible to use <envar>component-plugin</envar>
elements in order to dynamically change a PortalContainerDefinition. In the example below,
we add the dependency <envar>foo</envar> to the default portal container and
to the portal containers called <envar>foo1</envar> and
<envar>foo2</envar>:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -1092,127 +1092,127 @@
</init-params>
</component-plugin>
</external-component-plugins></programlisting>
- <table
id="tabl-Reference_Guide-Adding_dynamically_settings_andor_dependencies_to_a_PortalContainer-Descriptions_of_the_fields_of_a_PortalContainerDefinitionChangePlugin">
- <title>Descriptions of the fields of a
<envar>PortalContainerDefinitionChangePlugin</envar></title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- apply.all (*)
- </entry>
- <entry>
- Indicates whether the changes have to be applied to all the portal containers or
not. The default value of this field is <envar>false</envar>. This field is a
<envar>ValueParam</envar> and is not mandatory.
- </entry>
+ <table
id="tabl-Reference_Guide-Adding_dynamically_settings_andor_dependencies_to_a_PortalContainer-Descriptions_of_the_fields_of_a_PortalContainerDefinitionChangePlugin">
+ <title>Descriptions of the fields of a
<envar>PortalContainerDefinitionChangePlugin</envar></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ apply.all (*)
+ </entry>
+ <entry>
+ Indicates whether the changes have to be applied to
all the portal containers or not. The default value of this field is
<envar>false</envar>. This field is a <envar>ValueParam</envar>
and is not mandatory.
+ </entry>
- </row>
- <row>
- <entry>
- apply.default (*)
- </entry>
- <entry>
- Indicates whether the changes have to be applied to the default portal container
or not. The default value of this field is <envar>false</envar>. This field is
a <envar>ValueParam</envar> and is not mandatory.
- </entry>
+ </row>
+ <row>
+ <entry>
+ apply.default (*)
+ </entry>
+ <entry>
+ Indicates whether the changes have to be applied to
the default portal container or not. The default value of this field is
<envar>false</envar>. This field is a <envar>ValueParam</envar>
and is not mandatory.
+ </entry>
- </row>
- <row>
- <entry>
- apply.specific (*)
- </entry>
- <entry>
- A set of specific portal container names to which we want to apply the changes.
This field is a <envar>ValuesParam</envar> and is not mandatory.
- </entry>
+ </row>
+ <row>
+ <entry>
+ apply.specific (*)
+ </entry>
+ <entry>
+ A set of specific portal container names to which we
want to apply the changes. This field is a <envar>ValuesParam</envar> and is
not mandatory.
+ </entry>
- </row>
- <row>
- <entry>
- <envar>Rest of the expected parameters </envar>
- </entry>
- <entry>
- The rest of the expected paramaters are <envar>ObjectParam</envar>
of type <envar>PortalContainerDefinitionChange</envar>. Those parameters are
in fact the list of changes that we want to apply to one or several portal containers. If
the list of changes is empty, the component plugin will be ignored. The supported
implementations of PortalContainerDefinitionChange are described later in this section.
- </entry>
+ </row>
+ <row>
+ <entry>
+ <envar>Rest of the expected parameters
</envar>
+ </entry>
+ <entry>
+ The rest of the expected parameters are
<envar>ObjectParam</envar> of type
<envar>PortalContainerDefinitionChange</envar>. Those parameters are in fact
the list of changes that we want to apply to one or several portal containers. If the list
of changes is empty, the component plugin will be ignored. The supported implementations
of PortalContainerDefinitionChange are described later in this section.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <note>
- <para>
- All the value of the parameters marked with a (*) can be defined thanks to System
properties like any values in configuration files but also thanks to variables loaded by
the <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
default, it would be all the variables defined in the file
<emphasis>configuration.properties</emphasis>.
- </para>
+ </table>
+ <note>
+ <para>
+ All the value of the parameters marked with a (*) can be defined
thanks to System properties like any values in configuration files but also thanks to
variables loaded by the <emphasis>PropertyConfigurator</emphasis>. For example
in GateIn by default, it would be all the variables defined in the file
<emphasis>configuration.properties</emphasis>.
+ </para>
- </note>
- <para>
- To identify the portal containers to which the changes have to be applied, we use
the follwing algorithm:
- </para>
- <orderedlist>
- <listitem>
- <para>
- The parameter <envar>apply.all</envar> has been set to
<envar>true</envar>. The corresponding changes will be applied to all the
portal containers. The other parameters will be ignored.
- </para>
+ </note>
+ <para>
+ To identify the portal containers to which the changes have to be
applied, we use the following algorithm:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The parameter <envar>apply.all</envar> has been
set to <envar>true</envar>. The corresponding changes will be applied to all
the portal containers. The other parameters will be ignored.
+ </para>
- </listitem>
- <listitem>
- <para>
- The parameter <envar>apply.default</envar> has been set to
<envar>true</envar> and the parameter
<envar>apply.specific</envar> is <envar>null</envar>. The
corresponding changes will be applied to the default portal container only.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The parameter <envar>apply.default</envar> has
been set to <envar>true</envar> and the parameter
<envar>apply.specific</envar> is <envar>null</envar>. The
corresponding changes will be applied to the default portal container only.
+ </para>
- </listitem>
- <listitem>
- <para>
- The parameter <envar>apply.default</envar> has been set to
<envar>true</envar> and the parameter
<envar>apply.specific</envar> is not <envar>null</envar>. The
corresponding changes will be applied to the default portal container and the given list
of specific portal containers.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The parameter <envar>apply.default</envar> has
been set to <envar>true</envar> and the parameter
<envar>apply.specific</envar> is not <envar>null</envar>. The
corresponding changes will be applied to the default portal container and the given list
of specific portal containers.
+ </para>
- </listitem>
- <listitem>
- <para>
- The parameter <envar>apply.default</envar> has been set to
<envar>false</envar> or has not been set and the parameter
<envar>apply.specific</envar> is <envar>null</envar>. The
corresponding changes will be applied to the default portal container only.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The parameter <envar>apply.default</envar> has
been set to <envar>false</envar> or has not been set and the parameter
<envar>apply.specific</envar> is <envar>null</envar>. The
corresponding changes will be applied to the default portal container only.
+ </para>
- </listitem>
- <listitem>
- <para>
- The parameter <envar>apply.default</envar> has been set to
<envar>false</envar> or has not been set and the parameter
<envar>apply.specific</envar> is not <envar>null</envar>. The
corresponding changes will be applied to the given list of specific portal containers.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The parameter <envar>apply.default</envar> has
been set to <envar>false</envar> or has not been set and the parameter
<envar>apply.specific</envar> is not <envar>null</envar>. The
corresponding changes will be applied to the given list of specific portal containers.
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- <section
id="sect-Reference_Guide-Adding_dynamically_settings_andor_dependencies_to_a_PortalContainer-The_existing_implementations_of_PortalContainerDefinitionChange">
- <title>The existing implementations of
<envar>PortalContainerDefinitionChange</envar></title>
- <para>
- The modifications that can be applied to a
<envar>PortalContainerDefinition</envar> must be a class of type
<envar>PortalContainerDefinitionChange</envar>. The product proposes out of
the box some implementations that we describe in the next sub sections.
- </para>
- <section
id="sect-Reference_Guide-The_existing_implementations_of_PortalContainerDefinitionChange-AddDependencies">
- <title><envar>AddDependencies</envar></title>
- <para>
- This modification adds a list of dependencies at the end of the list of
dependencies defined into the <envar>PortalContainerDefinition</envar>. The
full qualified name is
<emphasis>org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependencies</emphasis>.
- </para>
- <table
id="tabl-Reference_Guide-AddDependencies-Descriptions_of_the_fields_of_an_AddDependencies">
- <title>Descriptions of the fields of an
<envar>AddDependencies</envar></title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- dependencies
- </entry>
- <entry>
- A list of <emphasis>String</emphasis> corresponding to the list of
name of the dependencies to add. If the value of this field is empty, the change will be
ignored.
- </entry>
+ </orderedlist>
+ <section
id="sect-Reference_Guide-Adding_dynamically_settings_andor_dependencies_to_a_PortalContainer-The_existing_implementations_of_PortalContainerDefinitionChange">
+ <title>The existing implementations of
<envar>PortalContainerDefinitionChange</envar></title>
+ <para>
+ The modifications that can be applied to a
<envar>PortalContainerDefinition</envar> must be a class of type
<envar>PortalContainerDefinitionChange</envar>. The product proposes out of
the box some implementations that we describe in the next sub sections.
+ </para>
+ <section
id="sect-Reference_Guide-The_existing_implementations_of_PortalContainerDefinitionChange-AddDependencies">
+
<title><envar>AddDependencies</envar></title>
+ <para>
+ This modification adds a list of dependencies at the end of
the list of dependencies defined into the
<envar>PortalContainerDefinition</envar>. The full qualified name is
<emphasis>org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependencies</emphasis>.
+ </para>
+ <table
id="tabl-Reference_Guide-AddDependencies-Descriptions_of_the_fields_of_an_AddDependencies">
+ <title>Descriptions of the fields of an
<envar>AddDependencies</envar></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ dependencies
+ </entry>
+ <entry>
+ A list of
<emphasis>String</emphasis> corresponding to the list of name of the
dependencies to add. If the value of this field is empty, the change will be ignored.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- See an example below, that will add <envar>foo</envar> at the end of
the dependency list of the default portal container:
- </para>
-
+ </table>
+ <para>
+ See an example below, that will add
<envar>foo</envar> at the end of the dependency list of the default portal
container:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -1245,45 +1245,45 @@
</component-plugin>
</external-component-plugins></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-The_existing_implementations_of_PortalContainerDefinitionChange-AddDependenciesBefore">
- <title><envar>AddDependenciesBefore</envar></title>
- <para>
- This modification adds a list of dependencies before a given target dependency
defined into the list of dependencies of the
<envar>PortalContainerDefinition</envar>. The full qualified name is
<emphasis>org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependenciesBefore</emphasis>.
- </para>
- <table
id="tabl-Reference_Guide-AddDependenciesBefore-Descriptions_of_the_fields_of_an_AddDependenciesBefore">
- <title>Descriptions of the fields of an
<envar>AddDependenciesBefore</envar></title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- dependencies
- </entry>
- <entry>
- A list of <emphasis>String</emphasis> corresponding to the list of
name of the dependencies to add. If the value of this field is empty, the change will be
ignored.
- </entry>
+ </section>
+
+ <section
id="sect-Reference_Guide-The_existing_implementations_of_PortalContainerDefinitionChange-AddDependenciesBefore">
+
<title><envar>AddDependenciesBefore</envar></title>
+ <para>
+ This modification adds a list of dependencies before a given
target dependency defined into the list of dependencies of the
<envar>PortalContainerDefinition</envar>. The full qualified name is
<emphasis>org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependenciesBefore</emphasis>.
+ </para>
+ <table
id="tabl-Reference_Guide-AddDependenciesBefore-Descriptions_of_the_fields_of_an_AddDependenciesBefore">
+ <title>Descriptions of the fields of an
<envar>AddDependenciesBefore</envar></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ dependencies
+ </entry>
+ <entry>
+ A list of
<emphasis>String</emphasis> corresponding to the list of name of the
dependencies to add. If the value of this field is empty, the change will be ignored.
+ </entry>
- </row>
- <row>
- <entry>
- target
- </entry>
- <entry>
- The name of the dependency before which we would like to add the new
dependencies. If this field is <envar>null</envar> or the target dependency
cannot be found in the list of dependencies defined into the
<envar>PortalContainerDefinition</envar>, the new dependencies will be added
in first position to the list.
- </entry>
+ </row>
+ <row>
+ <entry>
+ target
+ </entry>
+ <entry>
+ The name of the dependency before which we
would like to add the new dependencies. If this field is <envar>null</envar>
or the target dependency cannot be found in the list of dependencies defined into the
<envar>PortalContainerDefinition</envar>, the new dependencies will be added
in first position to the list.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- See an example below, that will add <envar>foo</envar> before
<envar>foo2</envar> in the dependency list of the default portal container:
- </para>
-
+ </table>
+ <para>
+ See an example below, that will add
<envar>foo</envar> before <envar>foo2</envar> in the dependency
list of the default portal container:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -1320,45 +1320,45 @@
</component-plugin>
</external-component-plugins></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-The_existing_implementations_of_PortalContainerDefinitionChange-AddDependenciesAfter">
- <title><envar>AddDependenciesAfter</envar></title>
- <para>
- This modification adds a list of dependencies before a given target dependency
defined into the list of dependencies of the
<envar>PortalContainerDefinition</envar>. The full qualified name is
<emphasis>org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependenciesAfter</emphasis>.
- </para>
- <table
id="tabl-Reference_Guide-AddDependenciesAfter-Descriptions_of_the_fields_of_an_AddDependenciesAfter">
- <title>Descriptions of the fields of an
<envar>AddDependenciesAfter</envar></title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- dependencies
- </entry>
- <entry>
- A list of <emphasis>String</emphasis> corresponding to the list of
name of the dependencies to add. If the value of this field is empty, the change will be
ignored.
- </entry>
+ </section>
+
+ <section
id="sect-Reference_Guide-The_existing_implementations_of_PortalContainerDefinitionChange-AddDependenciesAfter">
+
<title><envar>AddDependenciesAfter</envar></title>
+ <para>
+ This modification adds a list of dependencies before a given
target dependency defined into the list of dependencies of the
<envar>PortalContainerDefinition</envar>. The full qualified name is
<emphasis>org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependenciesAfter</emphasis>.
+ </para>
+ <table
id="tabl-Reference_Guide-AddDependenciesAfter-Descriptions_of_the_fields_of_an_AddDependenciesAfter">
+ <title>Descriptions of the fields of an
<envar>AddDependenciesAfter</envar></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ dependencies
+ </entry>
+ <entry>
+ A list of
<emphasis>String</emphasis> corresponding to the list of name of the
dependencies to add. If the value of this field is empty, the change will be ignored.
+ </entry>
- </row>
- <row>
- <entry>
- target
- </entry>
- <entry>
- The name of the dependency after which we would like to add the new
dependencies. If this field is <envar>null</envar> or the target dependency
cannot be found in the list of dependencies defined into the
<envar>PortalContainerDefinition</envar>, the new dependencies will be added
in last position to the list.
- </entry>
+ </row>
+ <row>
+ <entry>
+ target
+ </entry>
+ <entry>
+ The name of the dependency after which we
would like to add the new dependencies. If this field is <envar>null</envar>
or the target dependency cannot be found in the list of dependencies defined into the
<envar>PortalContainerDefinition</envar>, the new dependencies will be added
in last position to the list.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- See an example below, that will add <envar>foo</envar> after
<envar>foo2</envar> in the dependency list of the default portal container:
- </para>
-
+ </table>
+ <para>
+ See an example below, that will add
<envar>foo</envar> after <envar>foo2</envar> in the dependency
list of the default portal container:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -1395,36 +1395,36 @@
</component-plugin>
</external-component-plugins></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-The_existing_implementations_of_PortalContainerDefinitionChange-AddSettings">
- <title><envar>AddSettings</envar></title>
- <para>
- This modification adds new settings to a
<envar>PortalContainerDefinition</envar>. The full qualified name is
<emphasis>org.exoplatform.container.definition.PortalContainerDefinitionChange$AddSettings</emphasis>.
- </para>
- <table
id="tabl-Reference_Guide-AddSettings-Descriptions_of_the_fields_of_an_AddSettings">
- <title>Descriptions of the fields of an
<envar>AddSettings</envar></title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- settings
- </entry>
- <entry>
- A map of <emphasis><String, Object></emphasis>
corresponding to the settings to add. If the value of this field is empty, the change will
be ignored.
- </entry>
+ </section>
+
+ <section
id="sect-Reference_Guide-The_existing_implementations_of_PortalContainerDefinitionChange-AddSettings">
+
<title><envar>AddSettings</envar></title>
+ <para>
+ This modification adds new settings to a
<envar>PortalContainerDefinition</envar>. The full qualified name is
<emphasis>org.exoplatform.container.definition.PortalContainerDefinitionChange$AddSettings</emphasis>.
+ </para>
+ <table
id="tabl-Reference_Guide-AddSettings-Descriptions_of_the_fields_of_an_AddSettings">
+ <title>Descriptions of the fields of an
<envar>AddSettings</envar></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ settings
+ </entry>
+ <entry>
+ A map of <emphasis><String,
Object></emphasis> corresponding to the settings to add. If the value of this
field is empty, the change will be ignored.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- See an example below, that will add the settings <envar>string</envar>
and <envar>stringX</envar> to the settings of the default portal container:
- </para>
-
+ </table>
+ <para>
+ See an example below, that will add the settings
<envar>string</envar> and <envar>stringX</envar> to the settings
of the default portal container:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -1470,20 +1470,20 @@
</component-plugin>
</external-component-plugins></programlisting>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Disable_dynamically_a_portal_container">
- <title>Disable dynamically a portal container</title>
- <para>
- It is possible to use <envar>component-plugin</envar> elements in order
to dynamically disable one or several portal containers. In the example below, we disable
the portal container named <envar>foo</envar>:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Advanced_concepts_for_the_PortalContainers-Disable_dynamically_a_portal_container">
+ <title>Disable dynamically a portal container</title>
+ <para>
+ It is possible to use <envar>component-plugin</envar>
elements in order to dynamically disable one or several portal containers. In the example
below, we disable the portal container named <envar>foo</envar>:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -1503,35 +1503,35 @@
</init-params>
</component-plugin>
</external-component-plugins></programlisting>
- <table
id="tabl-Reference_Guide-Disable_dynamically_a_portal_container-Descriptions_of_the_fields_of_a_PortalContainerDefinitionDisablePlugin">
- <title>Descriptions of the fields of a
<envar>PortalContainerDefinitionDisablePlugin</envar></title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- names (*)
- </entry>
- <entry>
- The list of the name of the portal containers to disable.
- </entry>
+ <table
id="tabl-Reference_Guide-Disable_dynamically_a_portal_container-Descriptions_of_the_fields_of_a_PortalContainerDefinitionDisablePlugin">
+ <title>Descriptions of the fields of a
<envar>PortalContainerDefinitionDisablePlugin</envar></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ names (*)
+ </entry>
+ <entry>
+ The list of the name of the portal containers to
disable.
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <note>
- <para>
- All the value of the parameters marked with a (*) can be defined thanks to System
properties like any values in configuration files but also thanks to variables loaded by
the <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
default, it would be all the variables defined in the file
<emphasis>configuration.properties</emphasis>.
- </para>
+ </table>
+ <note>
+ <para>
+ All the value of the parameters marked with a (*) can be defined
thanks to System properties like any values in configuration files but also thanks to
variables loaded by the <emphasis>PropertyConfigurator</emphasis>. For example
in GateIn by default, it would be all the variables defined in the file
<emphasis>configuration.properties</emphasis>.
+ </para>
- </note>
- <para>
- To prevent any accesses to a web application corresponding to
<envar>PortalContainer</envar> that has been disabled, you need to make sure
that the following Http Filter (or a sub class of it) has been added to your web.xml in
first position as below:
- </para>
-
+ </note>
+ <para>
+ To prevent any accesses to a web application corresponding to
<envar>PortalContainer</envar> that has been disabled, you need to make sure
that the following Http Filter (or a sub class of it) has been added to your web.xml in
first position as below:
+ </para>
+
<programlisting language="XML"
role="XML"><filter>
<filter-name>PortalContainerFilter</filter-name>
<filter-class>org.exoplatform.container.web.PortalContainerFilter</filter-class>
@@ -1541,35 +1541,35 @@
<filter-name>PortalContainerFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></programlisting>
- <note>
- <para>
- It is only possible to disable a portal container when at least one
PortalContainerDefinition has been registered.
- </para>
+ <note>
+ <para>
+ It is only possible to disable a portal container when at least
one PortalContainerDefinition has been registered.
+ </para>
- </note>
+ </note>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Container_Configuration-System_property_configuration">
- <title>System property configuration</title>
- <para>
- A new property configurator service has been developed for taking care of configuring
system properties from the inline kernel configuration or from specified property files.
- </para>
- <para>
- The services is scoped at the root container level because it is used by all the
services in the different portal containers in the application runtime.
- </para>
- <section
id="sect-Reference_Guide-System_property_configuration-Properties_init_param">
- <title>Properties init param</title>
- <para>
- The properties init param takes a property declared to configure various properties.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Container_Configuration-System_property_configuration">
+ <title>System property configuration</title>
+ <para>
+ A new property configurator service has been developed for taking care of
configuring system properties from the inline kernel configuration or from specified
property files.
+ </para>
+ <para>
+ The services is scoped at the root container level because it is used by all
the services in the different portal containers in the application runtime.
+ </para>
+ <section
id="sect-Reference_Guide-System_property_configuration-Properties_init_param">
+ <title>Properties init param</title>
+ <para>
+ The properties init param takes a property declared to configure various
properties.
+ </para>
+
<programlisting language="XML"
role="XML"><component>
<key>PropertyManagerConfigurator</key>
<type>org.exoplatform.container.PropertyConfigurator</type>
@@ -1581,14 +1581,14 @@
</init-params>
</component></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-System_property_configuration-Properties_URL_init_param">
- <title>Properties URL init param</title>
- <para>
- The properties URL init param allow to load an external file by specifying its URL.
Both property and XML format are supported, see the javadoc of the
<emphasis><envar>java.util.Properties</envar></emphasis> class for
more information. When a property file is loaded the various property declarations are
loaded in the order in which the properties are declared sequentially in the file.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-System_property_configuration-Properties_URL_init_param">
+ <title>Properties URL init param</title>
+ <para>
+ The properties URL init param allow to load an external file by
specifying its URL. Both property and XML format are supported, see the javadoc of the
<emphasis><envar>java.util.Properties</envar></emphasis> class for
more information. When a property file is loaded the various property declarations are
loaded in the order in which the properties are declared sequentially in the file.
+ </para>
+
<programlisting language="XML"
role="XML"><component>
<key>PropertyManagerConfigurator</key>
<type>org.exoplatform.container.PropertyConfigurator</type>
@@ -1599,104 +1599,104 @@
</value-param>
</init-params>
</component></programlisting>
- <para>
- In the properties file corresponding to the external properties, you can reuse
variables before defining to create a new variable. In this case, the prefix
"<emphasis>portal.container.</emphasis>" is not needed, see an
example below:
+ <para>
+ In the properties file corresponding to the external properties, you can
reuse variables before defining to create a new variable. In this case, the prefix
"<emphasis>portal.container.</emphasis>" is not needed, see an
example below:
<programlisting>my-var1=value 1
my-var2=value 2
complex-value=${my-var1}-${my-var2}</programlisting>
- </para>
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-System_property_configuration-System_Property_configuration_of_the_properties_URL">
- <title>System Property configuration of the properties URL</title>
- <para>
- It is possible to replace the properties URL init param by a system property that
overwrites it. The name of that property is
<emphasis>exo.properties.url</emphasis>.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-System_property_configuration-System_Property_configuration_of_the_properties_URL">
+ <title>System Property configuration of the properties
URL</title>
+ <para>
+ It is possible to replace the properties URL init param by a system
property that overwrites it. The name of that property is
<emphasis>exo.properties.url</emphasis>.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Container_Configuration-Variable_Syntaxes">
- <title>Variable Syntaxes</title>
- <para>
- All the variables that we described in the previous sections can be defined thanks to
2 possible syntaxes which are <emphasis>${variable-name}</emphasis> or
<emphasis>${variable-name:default-value}</emphasis>. The first syntax
doesn't define any default value so if the variable has not be set the value will be
<emphasis>${variable-name}</emphasis> to indicate that it could not be
resolved. The second syntax allows you to define the default value after the semi colon so
if the variable has not be set the value will be the given default value.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Container_Configuration-Variable_Syntaxes">
+ <title>Variable Syntaxes</title>
+ <para>
+ All the variables that we described in the previous sections can be defined
thanks to 2 possible syntaxes which are <emphasis>${variable-name}</emphasis>
or <emphasis>${variable-name:default-value}</emphasis>. The first syntax
doesn't define any default value so if the variable has not be set the value will be
<emphasis>${variable-name}</emphasis> to indicate that it could not be
resolved. The second syntax allows you to define the default value after the semi colon so
if the variable has not be set the value will be the given default value.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Container_Configuration-Runtime_configuration_profiles">
- <title>Runtime configuration profiles</title>
- <para>
- The kernel configuration is able to handle configuration profiles at runtime (as
opposed to packaging time).
- </para>
- <section
id="sect-Reference_Guide-Runtime_configuration_profiles-Profiles_activation">
- <title>Profiles activation</title>
- <para>
- An active profile list is obtained during the boot of the root container and is
composed of the system property <emphasis>exo.profiles</emphasis> sliced
according the "," delimiter and also a server specific profile value (tomcat for
tomcat, jboss for jboss, etc...).
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Container_Configuration-Runtime_configuration_profiles">
+ <title>Runtime configuration profiles</title>
+ <para>
+ The kernel configuration is able to handle configuration profiles at runtime
(as opposed to packaging time).
+ </para>
+ <section
id="sect-Reference_Guide-Runtime_configuration_profiles-Profiles_activation">
+ <title>Profiles activation</title>
+ <para>
+ An active profile list is obtained during the boot of the root container
and is composed of the system property <emphasis>exo.profiles</emphasis>
sliced according the "," delimiter and also a server specific profile value
(tomcat for tomcat, jboss for jboss, etc...).
+ </para>
+
<programlisting># runs GateIn on Tomcat with the profiles tomcat and foo
sh gatein.sh -Dexo.profiles=foo
# runs GateIn on JBoss with the profiles jboss, foo and bar
sh run.sh -Dexo.profiles=foo,bar</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Runtime_configuration_profiles-Profiles_configuration">
- <title>Profiles configuration</title>
- <para>
- Profiles are configured in the configuration files of the eXo kernel.
- </para>
- <section
id="sect-Reference_Guide-Profiles_configuration-Profiles_definition">
- <title>Profiles definition</title>
- <para>
- Profile activation occurs at XML to configuration object unmarshalling time. It is
based on an "profile" attribute that is present on some of the XML element of
the configuration files. To enable this, the kernel configuration schema has been upgraded
to kernel_1_1.xsd. The configuration is based on the following rules:
- </para>
- <orderedlist>
- <listitem>
- <para>
- Any kernel element with the no <emphasis>profiles</emphasis> attribute
will create a configuration object
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Runtime_configuration_profiles-Profiles_configuration">
+ <title>Profiles configuration</title>
+ <para>
+ Profiles are configured in the configuration files of the eXo kernel.
+ </para>
+ <section
id="sect-Reference_Guide-Profiles_configuration-Profiles_definition">
+ <title>Profiles definition</title>
+ <para>
+ Profile activation occurs at XML to configuration object
unmarshalling time. It is based on an "profile" attribute that is present on
some of the XML element of the configuration files. To enable this, the kernel
configuration schema has been upgraded to kernel_1_1.xsd. The configuration is based on
the following rules:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Any kernel element with the no
<emphasis>profiles</emphasis> attribute will create a configuration object
+ </para>
- </listitem>
- <listitem>
- <para>
- Any kernel element having a <emphasis>profiles</emphasis> attribute
containing at least one of the active profiles will create a configuration object
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Any kernel element having a
<emphasis>profiles</emphasis> attribute containing at least one of the active
profiles will create a configuration object
+ </para>
- </listitem>
- <listitem>
- <para>
- Any kernel element having a <emphasis>profiles</emphasis> attribute
matching none of the active profile will not create a configuration object
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Any kernel element having a
<emphasis>profiles</emphasis> attribute matching none of the active profile
will not create a configuration object
+ </para>
- </listitem>
- <listitem>
- <para>
- Resolution of duplicates (such as two components with same type) is left up to the
kernel
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Resolution of duplicates (such as two components with same
type) is left up to the kernel
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
+ </orderedlist>
- </section>
-
- <section
id="sect-Reference_Guide-Profiles_configuration-Profiles_capable_configuration_elements">
- <title>Profiles capable configuration elements</title>
- <para>
- A configuration element is <emphasis>profiles</emphasis> capable when it
carries a profiles element.
- </para>
- <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Component_element">
- <title>Component element</title>
- <para>
- The component element declares a component when activated. It will shadow any
element with the same key declared before in the same configuration file:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Profiles_configuration-Profiles_capable_configuration_elements">
+ <title>Profiles capable configuration elements</title>
+ <para>
+ A configuration element is <emphasis>profiles</emphasis>
capable when it carries a profiles element.
+ </para>
+ <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Component_element">
+ <title>Component element</title>
+ <para>
+ The component element declares a component when activated. It
will shadow any element with the same key declared before in the same configuration file:
+ </para>
+
<programlisting language="XML"
role="XML"><component>
<key>Component</key>
<type>Component</type>
@@ -1707,14 +1707,14 @@
<type>FooComponent</type>
</component></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Component_plugin_element">
- <title>Component plugin element</title>
- <para>
- The component-plugin element is used to dynamically extend the configuration of a
given component. Thanks to the profiles the component-plugins could be enabled or
disabled:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Component_plugin_element">
+ <title>Component plugin element</title>
+ <para>
+ The component-plugin element is used to dynamically extend the
configuration of a given component. Thanks to the profiles the component-plugins could be
enabled or disabled:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<target-component>Component</target-component>
<component-plugin profiles="foo">
@@ -1730,26 +1730,26 @@
</component-plugin>
</external-component-plugins></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Import_element">
- <title>Import element</title>
- <para>
- The import element imports a referenced configuration file when activated:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Import_element">
+ <title>Import element</title>
+ <para>
+ The import element imports a referenced configuration file when
activated:
+ </para>
+
<programlisting language="XML"
role="XML"><import>empty</import>
<import profiles="foo">foo</import>
<import
profiles="bar">bar</import></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Init_param_element">
- <title>Init param element</title>
- <para>
- The init param element configures the parameter argument of the construction of a
component service:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Init_param_element">
+ <title>Init param element</title>
+ <para>
+ The init param element configures the parameter argument of the
construction of a component service:
+ </para>
+
<programlisting language="XML"
role="XML"><component>
<key>Component</key>
<type>ComponentImpl</type>
@@ -1769,14 +1769,14 @@
</init-params>
</component></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Value_collection_element">
- <title>Value collection element</title>
- <para>
- The value collection element configures one of the value of collection data:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Value_collection_element">
+ <title>Value collection element</title>
+ <para>
+ The value collection element configures one of the value of
collection data:
+ </para>
+
<programlisting language="XML" role="XML"><object
type="org.exoplatform.container.configuration.ConfigParam">
<field name="role">
<collection type="java.util.ArrayList">
@@ -1787,14 +1787,14 @@
</field>
</object></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Field_configuration_element">
- <title>Field configuration element</title>
- <para>
- The field configuration element configures the field of an object:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Profiles_capable_configuration_elements-Field_configuration_element">
+ <title>Field configuration element</title>
+ <para>
+ The field configuration element configures the field of an
object:
+ </para>
+
<programlisting language="XML"
role="XML"><object-param>
<name>test.configuration</name>
<object
type="org.exoplatform.container.configuration.ConfigParam">
@@ -1816,25 +1816,25 @@
</object>
</object-param></programlisting>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Container_Configuration-Component_request_life_cycle">
- <title>Component request life cycle</title>
- <section
id="sect-Reference_Guide-Component_request_life_cycle-Component_request_life_cycle_contract">
- <title>Component request life cycle contract</title>
- <para>
- The component request life cycle is an interface that defines a contract for a
component for being involved into a request:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Container_Configuration-Component_request_life_cycle">
+ <title>Component request life cycle</title>
+ <section
id="sect-Reference_Guide-Component_request_life_cycle-Component_request_life_cycle_contract">
+ <title>Component request life cycle contract</title>
+ <para>
+ The component request life cycle is an interface that defines a contract
for a component for being involved into a request:
+ </para>
+
<programlisting language="Java" role="Java">public interface
ComponentRequestLifecycle
{
/**
@@ -1849,23 +1849,23 @@
*/
void endRequest(ExoContainer container);
}</programlisting>
- <para>
- The container passed is the container to which the component is related. This
contract is often used to setup a thread local based context that will be demarcated by a
request.
- </para>
- <para>
- For instance in the GateIn portal context, a component request life cycle is
triggered for user requests. Another example is the initial data import in GateIn that
demarcates using callbacks made to that interface.
- </para>
+ <para>
+ The container passed is the container to which the component is related.
This contract is often used to setup a thread local based context that will be demarcated
by a request.
+ </para>
+ <para>
+ For instance in the GateIn portal context, a component request life cycle
is triggered for user requests. Another example is the initial data import in GateIn that
demarcates using callbacks made to that interface.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Component_request_life_cycle-Request_life_cycle">
- <title>Request life cycle</title>
- <para>
- The <envar>RequestLifeCycle</envar> class has several statics methods
that are used to schedule the component request life cycle of components. Its main
responsability is to perform scheduling while respecting the constraint to execute the
request life cycle of a component only once even if it can be scheduled several times.
- </para>
- <section
id="sect-Reference_Guide-Request_life_cycle-Scheduling_a_component_request_life_cycle">
- <title>Scheduling a component request life cycle</title>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Component_request_life_cycle-Request_life_cycle">
+ <title>Request life cycle</title>
+ <para>
+ The <envar>RequestLifeCycle</envar> class has several statics
methods that are used to schedule the component request life cycle of components. Its main
responsibility is to perform scheduling while respecting the constraint to execute the
request life cycle of a component only once even if it can be scheduled several times.
+ </para>
+ <section
id="sect-Reference_Guide-Request_life_cycle-Scheduling_a_component_request_life_cycle">
+ <title>Scheduling a component request life cycle</title>
+
<programlisting language="Java"
role="Java">RequestLifeCycle.begin(component);
try
{
@@ -1876,14 +1876,14 @@
RequestLifeCycle.end();
}</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Request_life_cycle-Scheduling_a_container_request_life_cycle">
- <title>Scheduling a container request life cycle</title>
- <para>
- Scheduling a container triggers the component request life cyle of all the
components that implement the interface
<envar>ComponentRequestLifeCycle</envar>. If one of the component has already
been scheduled before and then that component will not be scheduled again. When the local
value is true, then the looked components will be those of the container, when it is false
then the scheduler will also look at the components in the ancestor containers.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Request_life_cycle-Scheduling_a_container_request_life_cycle">
+ <title>Scheduling a container request life cycle</title>
+ <para>
+ Scheduling a container triggers the component request life cycle of
all the components that implement the interface
<envar>ComponentRequestLifeCycle</envar>. If one of the component has already
been scheduled before and then that component will not be scheduled again. When the local
value is true, then the looked components will be those of the container, when it is false
then the scheduler will also look at the components in the ancestor containers.
+ </para>
+
<programlisting language="Java"
role="Java">RequestLifeCycle.begin(container, local);
try
{
@@ -1894,34 +1894,34 @@
RequestLifeCycle.end();
}</programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Component_request_life_cycle-When_request_life_cycle_is_triggered">
- <title>When request life cycle is triggered</title>
- <section
id="sect-Reference_Guide-When_request_life_cycle_is_triggered-Portal_request_life_cycle">
- <title>Portal request life cycle</title>
- <para>
- Each portal request triggers the life cycle of the associated portal container.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Component_request_life_cycle-When_request_life_cycle_is_triggered">
+ <title>When request life cycle is triggered</title>
+ <section
id="sect-Reference_Guide-When_request_life_cycle_is_triggered-Portal_request_life_cycle">
+ <title>Portal request life cycle</title>
+ <para>
+ Each portal request triggers the life cycle of the associated portal
container.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-When_request_life_cycle_is_triggered-JMX_request_Life_Cycle">
- <title>JMX request Life Cycle</title>
- <para>
- When a JMX bean is invoked, the request life cycle of the container to which it
belongs it scheduled. Indeed JMX is an entry point of the system that may need component
to have a request life cycle triggered.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-When_request_life_cycle_is_triggered-JMX_request_Life_Cycle">
+ <title>JMX request Life Cycle</title>
+ <para>
+ When a JMX bean is invoked, the request life cycle of the container
to which it belongs it scheduled. Indeed JMX is an entry point of the system that may need
component to have a request life cycle triggered.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/data-source-provider.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/data-source-provider.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/data-source-provider.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -94,7 +94,7 @@
<emphasis>check-tx-active</emphasis>
</entry>
<entry>
- This parameter indicates that the data source needs to check
if a transaction is active to decide if the provided connection needs to be managed or
not. If it is set to <emphasis>false</emphasis>, the data source will provide
only managed connections if the data source itself is managed. By default, this parameter
is set to <emphasis>true</emphasis>. If this parameter is set to
<emphasis>true</emphasis>, it will need the
<emphasis>TransactionService</emphasis> to work propertly, so please ensure
that the <emphasis>TransactionService</emphasis> is defined in your
configuration.
+ This parameter indicates that the data source needs to check
if a transaction is active to decide if the provided connection needs to be managed or
not. If it is set to <emphasis>false</emphasis>, the data source will provide
only managed connections if the data source itself is managed. By default, this parameter
is set to <emphasis>true</emphasis>. If this parameter is set to
<emphasis>true</emphasis>, it will need the
<emphasis>TransactionService</emphasis> to work properly, so please ensure
that the <emphasis>TransactionService</emphasis> is defined in your
configuration.
</entry>
</row>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/initialcontext-binder-service.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/initialcontext-binder-service.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/initialcontext-binder-service.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,64 +4,64 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Initial_Context_Binder">
- <title>Initial Context Binder</title>
- <para>
- Initial Context Binder is responsible for binding references at runtime, persisting in
file and automatically rebinding. Java temp directory is used to persist references in
bind-references.xml file by default. In case when need to definde special file it can be
done by add parameter to <xref linkend="sect-Reference_Guide-JNDI_naming"
/> configuration.
- </para>
- <section id="sect-Reference_Guide-Initial_Context_Binder-API">
- <title>API</title>
- <para>
- Service provide methods for binding reference:
- </para>
-
+ <title>Initial Context Binder</title>
+ <para>
+ Initial Context Binder is responsible for binding references at runtime,
persisting in file and automatically rebinding. Java temp directory is used to persist
references in bind-references.xml file by default. In case when need to define special
file it can be done by add parameter to <xref
linkend="sect-Reference_Guide-JNDI_naming" /> configuration.
+ </para>
+ <section id="sect-Reference_Guide-Initial_Context_Binder-API">
+ <title>API</title>
+ <para>
+ Service provide methods for binding reference:
+ </para>
+
<programlisting language="Java" role="Java">public void
bind(String bindName, String className, String factory, String factoryLocation,
Map<String, String> refAddr) throws NamingException, FileNotFoundException,
XMLStreamExcept</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- bindName - name of binding
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ bindName - name of binding
+ </para>
- </listitem>
- <listitem>
- <para>
- className - the fully-qualified name of the class of the object to which this
Reference refers
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ className - the fully-qualified name of the class of the object to
which this Reference refers
+ </para>
- </listitem>
- <listitem>
- <para>
- factory - the name of the factory class for creating an instance of the object to
which this Reference refers
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ factory - the name of the factory class for creating an instance of
the object to which this Reference refers
+ </para>
- </listitem>
- <listitem>
- <para>
- factoryLocation - the location of the factory class
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ factoryLocation - the location of the factory class
+ </para>
- </listitem>
- <listitem>
- <para>
- refAddr - object's properties map
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ refAddr - object's properties map
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="Java" role="Java">public void
bind(String bindName, Reference ref) throws NamingException, FileNotFoundException,
XMLStreamExcept</programlisting>
- <para>
- Returns reference associated with defined name:
- </para>
-
+ <para>
+ Returns reference associated with defined name:
+ </para>
+
<programlisting language="Java" role="Java">public Reference
getReference(String bindName)</programlisting>
- <para>
- Unbind the Reference with defined name:
- </para>
-
+ <para>
+ Unbind the Reference with defined name:
+ </para>
+
<programlisting language="Java" role="Java">public void
unbind(String bindName) throws NamingException, FileNotFoundException,
XMLStreamException</programlisting>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/inversion-of-control.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/inversion-of-control.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/inversion-of-control.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,112 +4,112 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Inversion_Of_Control">
- <title>Inversion Of Control</title>
- <section id="sect-Reference_Guide-Inversion_Of_Control-Overview">
- <title>Overview</title>
- <para>
- The services are not responsible for the instantiation of the components on which they
depend.
- </para>
- <para>
- This architecture provides a loosely coupled design where the implementation of
dependant services can be transparently exchanged.
- </para>
- <para>
- This pattern has several names :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Hollywood principle : "don't call me, I will call you"
- </para>
+ <title>Inversion Of Control</title>
+ <section id="sect-Reference_Guide-Inversion_Of_Control-Overview">
+ <title>Overview</title>
+ <para>
+ The services are not responsible for the instantiation of the components on
which they depend.
+ </para>
+ <para>
+ This architecture provides a loosely coupled design where the implementation
of dependent services can be transparently exchanged.
+ </para>
+ <para>
+ This pattern has several names :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Hollywood principle : "don't call me, I will call you"
+ </para>
- </listitem>
- <listitem>
- <para>
- Inversion of Control
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Inversion of Control
+ </para>
- </listitem>
- <listitem>
- <para>
- Dependency injection
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Dependency injection
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-Inversion_Of_Control-How">
- <title>How</title>
- <para>
- Don't let the object create itself the instances of the object that it references.
This job is delegated to the container (assembler in the picture).
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/ioc.gif" width="444" />
- </imageobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Inversion_Of_Control-How">
+ <title>How</title>
+ <para>
+ Don't let the object create itself the instances of the object that it
references. This job is delegated to the container (assembler in the picture).
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/ioc.gif"
width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </section>
-
- <section id="sect-Reference_Guide-Inversion_Of_Control-Injection">
- <title>Injection</title>
- <para>
- There are two ways to inject a dependency :
- </para>
- <para>
- Using a constructor:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Inversion_Of_Control-Injection">
+ <title>Injection</title>
+ <para>
+ There are two ways to inject a dependency :
+ </para>
+ <para>
+ Using a constructor:
+ </para>
+
<programlisting language="Java" role="Java">public
ServiceA(ServiceB serviceB)</programlisting>
- <para>
- Using setter methods:
- </para>
-
+ <para>
+ Using setter methods:
+ </para>
+
<programlisting language="Java" role="Java">public void
setServiceB(ServiceB serviceB)</programlisting>
- <para>
- When a client service can not be stored in the container then the service locator
pattern is used:
- </para>
-
+ <para>
+ When a client service can not be stored in the container then the service
locator pattern is used:
+ </para>
+
<programlisting language="Java" role="Java">public ServiceA(){
this.serviceB =Container.getSInstance().getService(ServiceB.class);
}</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Inversion_Of_Control-Side_effects">
- <title>Side effects</title>
- <itemizedlist>
- <listitem>
- <para>
- Ease Unit test (use of Mock objects)
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Inversion_Of_Control-Side_effects">
+ <title>Side effects</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Ease Unit test (use of Mock objects)
+ </para>
- </listitem>
- <listitem>
- <para>
- Ease Maintainability
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Ease Maintainability
+ </para>
- </listitem>
- <listitem>
- <para>
- Ease Refactoring
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Ease Refactoring
+ </para>
- </listitem>
- <listitem>
- <para>
- Component reuse ( POJOs != EJBs)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Component reuse ( POJOs != EJBs)
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/jndi-naming.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/jndi-naming.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/jndi-naming.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,125 +4,125 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-JNDI_naming">
- <title>JNDI naming</title>
- <section id="sect-Reference_Guide-JNDI_naming-Prerequisites">
- <title>Prerequisites</title>
- <para>
- We need to configure JNDI environment properties and Reference binding with the eXo
container standard mechanism.
- </para>
- <para>
- The Naming service covers:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Configuring the current Naming Context Factory implemented as an ExoContainer
Component
<envar>org.exoplatform.services.naming.InitialContextInitializer</envar>.
- </para>
+ <title>JNDI naming</title>
+ <section id="sect-Reference_Guide-JNDI_naming-Prerequisites">
+ <title>Prerequisites</title>
+ <para>
+ We need to configure JNDI environment properties and Reference binding with
the eXo container standard mechanism.
+ </para>
+ <para>
+ The Naming service covers:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Configuring the current Naming Context Factory implemented as an
ExoContainer Component
<envar>org.exoplatform.services.naming.InitialContextInitializer</envar>.
+ </para>
- </listitem>
- <listitem>
- <para>
- Binding Objects (References) to the current Context using
<envar>org.exoplatform.services.naming.BindReferencePlugin</envar> component
plugin.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Binding Objects (References) to the current Context using
<envar>org.exoplatform.services.naming.BindReferencePlugin</envar> component
plugin.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- </para>
+ </itemizedlist>
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-JNDI_naming-How_it_works">
- <title>How it works</title>
- <para>
- Make sure you understand the <ulink
url="http://java.sun.com/products/jndi/1.2/javadoc/index.html"&... Naming
and Directory InterfaceTM (JNDI)</ulink> concepts before using this service.
- </para>
- <section
id="sect-Reference_Guide-How_it_works-JNDI_System_property_initialization">
- <title>JNDI System property initialization</title>
- <para>
- After the start time the Context Initializer
(org.exoplatform.services.naming.InitialContextInitializer) traverses all initial
parameters (that concern the Naming Context) configured in
<envar>default-properties</envar> and
<envar>mandatory-properties</envar> (see Configuration examples) and:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- For <envar>default-properties</envar>: Check if this property is
already set as a System property (<envar>System.getProperty(name)</envar>) and
set this property if it's not found. Using those properties is recommended with a
third party Naming service provider.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JNDI_naming-How_it_works">
+ <title>How it works</title>
+ <para>
+ Make sure you understand the <ulink
url="http://java.sun.com/products/jndi/1.2/javadoc/index.html"&... Naming
and Directory InterfaceTM (JNDI)</ulink> concepts before using this service.
+ </para>
+ <section
id="sect-Reference_Guide-How_it_works-JNDI_System_property_initialization">
+ <title>JNDI System property initialization</title>
+ <para>
+ After the start time the Context Initializer
(org.exoplatform.services.naming.InitialContextInitializer) traverses all initial
parameters (that concern the Naming Context) configured in
<envar>default-properties</envar> and
<envar>mandatory-properties</envar> (see Configuration examples) and:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For <envar>default-properties</envar>: Check if this
property is already set as a System property
(<envar>System.getProperty(name)</envar>) and set this property if it's
not found. Using those properties is recommended with a third party Naming service
provider.
+ </para>
- </listitem>
- <listitem>
- <para>
- For <envar>mandatory-properties</envar>: Set the property without
checking.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For <envar>mandatory-properties</envar>: Set the
property without checking.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Standard JNDI properties:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <envar>java.naming.factory.initial</envar>
- </para>
+ </itemizedlist>
+ <para>
+ Standard JNDI properties:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <envar>java.naming.factory.initial</envar>
+ </para>
- </listitem>
- <listitem>
- <para>
- <envar>java.naming.provider.url</envar>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <envar>java.naming.provider.url</envar>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- and others (see JNDI docs)
- </para>
+ </itemizedlist>
+ <para>
+ and others (see JNDI docs)
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-How_it_works-JNDI_reference_binding">
- <title>JNDI reference binding</title>
- <para>
- Another responsibility of Context Initializer
<envar>org.exoplatform.services.naming.InitialContextInitializer</envar> is
binding of preconfigured references to the naming context. For this purpose, it uses a
standard eXo component plugin mechanism and in particular the
<envar>org.exoplatform.services.naming.BindReferencePlugin</envar> component
plugin. The configuration of this plugin includes three mandatory value parameters:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <envar>bind-name</envar>: the name of binding reference.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-How_it_works-JNDI_reference_binding">
+ <title>JNDI reference binding</title>
+ <para>
+ Another responsibility of Context Initializer
<envar>org.exoplatform.services.naming.InitialContextInitializer</envar> is
binding of preconfigured references to the naming context. For this purpose, it uses a
standard eXo component plugin mechanism and in particular the
<envar>org.exoplatform.services.naming.BindReferencePlugin</envar> component
plugin. The configuration of this plugin includes three mandatory value parameters:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <envar>bind-name</envar>: the name of binding
reference.
+ </para>
- </listitem>
- <listitem>
- <para>
- <envar>class-name</envar>: the type of binding reference.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <envar>class-name</envar>: the type of binding
reference.
+ </para>
- </listitem>
- <listitem>
- <para>
- <envar>factory</envar>: the object factory type.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <envar>factory</envar>: the object factory type.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- And also <envar>ref-addresses</envar> property parameter with a set of
references' properties. (see Configuration examples) Context Initializer uses those
parameters to bind the neccessary reference automatically.
- </para>
+ </itemizedlist>
+ <para>
+ And also <envar>ref-addresses</envar> property parameter with
a set of references' properties. (see Configuration examples) Context Initializer uses
those parameters to bind the necessary reference automatically.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-JNDI_naming-Configuration_examples">
- <title>Configuration examples</title>
- <para>
- The <envar>InitialContextInitializer</envar> configuration example:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-JNDI_naming-Configuration_examples">
+ <title>Configuration examples</title>
+ <para>
+ The <envar>InitialContextInitializer</envar> configuration
example:
+ </para>
+
<programlisting language="XML" role="XML">
<component>
<type>org.exoplatform.services.naming.InitialContextInitializer</type>
<init-params>
@@ -146,19 +146,19 @@
</properties-param>
</init-params>
</component></programlisting>
- <para>
- where
- </para>
- <para>
- <emphasis role="bold">binding-store-path</emphasis> is file path
which stores binded datasources in runtime
- </para>
- <para>
- <emphasis role="bold">overload-context-factory</emphasis> allows
to overload the default initial context factory by a context factory that is ExoContainer
aware and that is able to delegate to the original initial context factory if it detects
that it is not in the eXo scope. By default the feature is disabled since it is only
required on AS that don't share the objects by default like tomcat but unlike JBoss
AS
- </para>
- <para>
- The <envar>BindReferencePlugin</envar> component plugin configuration
example (for JDBC datasource):
- </para>
-
+ <para>
+ where
+ </para>
+ <para>
+ <emphasis role="bold">binding-store-path</emphasis> is
file path which stores binded datasources in runtime
+ </para>
+ <para>
+ <emphasis
role="bold">overload-context-factory</emphasis> allows to overload the
default initial context factory by a context factory that is ExoContainer aware and that
is able to delegate to the original initial context factory if it detects that it is not
in the eXo scope. By default the feature is disabled since it is only required on AS that
don't share the objects by default like tomcat but unlike JBoss AS
+ </para>
+ <para>
+ The <envar>BindReferencePlugin</envar> component plugin
configuration example (for JDBC datasource):
+ </para>
+
<programlisting language="XML" role="XML">
<component-plugins>
<component-plugin>
<name>bind.datasource</name>
@@ -188,39 +188,39 @@
</init-params>
</component-plugin></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-JNDI_naming-Recommendations_for_Application_Developers">
- <title>Recommendations for Application Developers</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <envar>SimpleContextFactory</envar> is created for testing purposes
only, do not use it for production.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-JNDI_naming-Recommendations_for_Application_Developers">
+ <title>Recommendations for Application Developers</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <envar>SimpleContextFactory</envar> is created for
testing purposes only, do not use it for production.
+ </para>
- </listitem>
- <listitem>
- <para>
- In J2EE environment use Naming Factory objects provided with the Application
Server.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ In J2EE environment use Naming Factory objects provided with the
Application Server.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- </para>
+ </itemizedlist>
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-JNDI_naming-InitialContextInitializer_API">
- <title>InitialContextInitializer API</title>
- <para>
- <envar>InitialContextInitalizer</envar> also provides feature of
references binding in runtime. References have bind in runtime will be persisted and
automatically rebinded on a next system start.
- </para>
- <para>
- Service provides methods for binding reference.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-JNDI_naming-InitialContextInitializer_API">
+ <title>InitialContextInitializer API</title>
+ <para>
+ <envar>InitialContextInitalizer</envar> also provides feature of
references binding in runtime. References have bind in runtime will be persisted and
automatically rebinded on a next system start.
+ </para>
+ <para>
+ Service provides methods for binding reference.
+ </para>
+
<programlisting language="Java" role="Java">
public void bind(String bindName,
String className,
@@ -228,43 +228,43 @@
String factoryLocation,
Map<String, String> refAddr)
throws NamingException, FileNotFoundException,
XMLStreamException;</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- <envar>bindName</envar>: name of binding.
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <envar>bindName</envar>: name of binding.
+ </para>
- </listitem>
- <listitem>
- <para>
- <envar>className</envar>: the fully-qualified name of the class of the
object to which this Reference refers.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <envar>className</envar>: the fully-qualified name of the
class of the object to which this Reference refers.
+ </para>
- </listitem>
- <listitem>
- <para>
- <envar>factory</envar>: the name of the factory class for creating an
instance of the object to which this Reference refers.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <envar>factory</envar>: the name of the factory class for
creating an instance of the object to which this Reference refers.
+ </para>
- </listitem>
- <listitem>
- <para>
- <envar>factoryLocation</envar>: the location of the factory class.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <envar>factoryLocation</envar>: the location of the
factory class.
+ </para>
- </listitem>
- <listitem>
- <para>
- <envar>refAddr</envar>: object's properties map.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <envar>refAddr</envar>: object's properties map.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Example of usage:
- </para>
-
+ </itemizedlist>
+ <para>
+ Example of usage:
+ </para>
+
<programlisting language="Java" role="Java">
// obtain InitialContextInitializer instance from ExoContainer (e.g.
PortalContainer)
InitialContextInitializer initContext =
(InitialContextInitializer)container.getComponentInstanceOfType(InitialContextInitializer.class);
@@ -280,7 +280,7 @@
// try to get just bound DataSource
DataSource ds = (DataSource)new
InitialContext().lookup("jdbcexo");</programlisting>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/job-scheduler-service.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/job-scheduler-service.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/job-scheduler-service.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,163 +4,163 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Job_Schedule">
- <!-- This document was created with Syntext Serna Free. --> <title>Job
Schedule</title>
- <section id="sect-Reference_Guide-Job_Schedule-What_is_Job_Scheduler">
- <title>What is Job Scheduler?</title>
- <para>
- <emphasis role="bold">Job scheduler</emphasis> defines a job to
execute a given number of times during a given period. It is a service that is in charge
of unattended background executions, commonly known for historical reasons as batch
processing. It is used to create and run jobs automatically and continuously, to schedule
event-driven jobs and reports.
- </para>
+ <!-- This document was created with Syntext Serna Free. --> <title>Job
Schedule</title>
+ <section
id="sect-Reference_Guide-Job_Schedule-What_is_Job_Scheduler">
+ <title>What is Job Scheduler?</title>
+ <para>
+ <emphasis role="bold">Job scheduler</emphasis> defines
a job to execute a given number of times during a given period. It is a service that is in
charge of unattended background executions, commonly known for historical reasons as batch
processing. It is used to create and run jobs automatically and continuously, to schedule
event-driven jobs and reports.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Job_Schedule-Where_is_Job_Scheduler_Service_used_in_eXo_Products">
- <title>Where is Job Scheduler Service used in eXo Products?</title>
- <para>
- Job Scheduler Service is widely used in many eXo products such as Social, DMS, WCM,
eXo Knowledge and eXo Collaboration.
- </para>
- <para>
- In eXo products, Job Schedulers are used to do some tasks as below:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Automatically send notification, such as task/event reminder in the Calendar
application of eXo Collaboration.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Job_Schedule-Where_is_Job_Scheduler_Service_used_in_eXo_Products">
+ <title>Where is Job Scheduler Service used in eXo Products?</title>
+ <para>
+ Job Scheduler Service is widely used in many eXo products such as Social,
DMS, WCM, eXo Knowledge and eXo Collaboration.
+ </para>
+ <para>
+ In eXo products, Job Schedulers are used to do some tasks as below:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Automatically send notification, such as task/event reminder in the
Calendar application of eXo Collaboration.
+ </para>
- </listitem>
- <listitem>
- <para>
- Automatically save chat messages from Openfire Server to History in the Chat
application of eXo Collaboration.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Automatically save chat messages from Openfire Server to History in
the Chat application of eXo Collaboration.
+ </para>
- </listitem>
- <listitem>
- <para>
- Inactivate topics in the Forum application of eXo Knowledge.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Inactivate topics in the Forum application of eXo Knowledge.
+ </para>
- </listitem>
- <listitem>
- <para>
- Calculate the number of active and online users in the Forum application of eXo
Knowledge.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Calculate the number of active and online users in the Forum
application of eXo Knowledge.
+ </para>
- </listitem>
- <listitem>
- <para>
- Automatically collect RSS items from various RSS resources to post to the activity
stream of users and spaces in eXo Social.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Automatically collect RSS items from various RSS resources to post to
the activity stream of users and spaces in eXo Social.
+ </para>
- </listitem>
- <listitem>
- <para>
- Automatically send Newsletters to users in WCM.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Automatically send Newsletters to users in WCM.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Also, it is used in Schedule lifecycle in DMS.
- </para>
- <para>
- By using Job Scheduler Service in eXo kernel, many kinds of job can be configured to
run, such as, addPeriodJob, addCronJob, addGlobalJobListener, addJobListener and many
more. Just write a job (a class implements Job interface of quartz library and configures
plug-in for JobSchedulerService and you're done.
- </para>
+ </itemizedlist>
+ <para>
+ Also, it is used in Schedule lifecycle in DMS.
+ </para>
+ <para>
+ By using Job Scheduler Service in eXo kernel, many kinds of job can be
configured to run, such as, addPeriodJob, addCronJob, addGlobalJobListener, addJobListener
and many more. Just write a job (a class implements Job interface of quartz library and
configures plug-in for JobSchedulerService and you're done.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Job_Schedule-How_does_Job_Scheduler_work">
- <title>How does Job Scheduler work?</title>
- <para>
- Jobs are scheduled to run when a given Trigger occurs. Triggers can be created with
nearly any combination of the following directives:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- at a certain time of day (to the millisecond)
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Job_Schedule-How_does_Job_Scheduler_work">
+ <title>How does Job Scheduler work?</title>
+ <para>
+ Jobs are scheduled to run when a given Trigger occurs. Triggers can be
created with nearly any combination of the following directives:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ at a certain time of day (to the millisecond)
+ </para>
- </listitem>
- <listitem>
- <para>
- on certain days of the week
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ on certain days of the week
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- on certain days of the month
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ on certain days of the month
+ </para>
- </listitem>
- <listitem>
- <para>
- on certain days of the year
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ on certain days of the year
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- not on certain days listed within a registered Calendar (such as business holidays)
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ not on certain days listed within a registered Calendar (such as
business holidays)
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- repeated a specific number of times
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ repeated a specific number of times
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- repeated until a specific time/date
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ repeated until a specific time/date
+ </para>
- </listitem>
- <listitem>
- <para>
- repeated indefinitely
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ repeated indefinitely
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- repeated with a delay interval
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ repeated with a delay interval
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Jobs are given names by their creator and can also be organized into named groups.
Triggers may also be given names and placed into groups, in order to easily organize them
within the scheduler. Jobs can be added to the scheduler once, but registered with
multiple Triggers. Within a J2EE environment, Jobs can perform their work as part of a
distributed (XA) transaction.
- </para>
- <para>
- (Source:
quartz-scheduler.org)
- </para>
- <section
id="sect-Reference_Guide-How_does_Job_Scheduler_work-How_can_Job_Scheduler_Service_be_used_in_Kernel">
- <title>How can Job Scheduler Service be used in Kernel?</title>
- <para>
- Kernel leverages <ulink
url="http://www.quartz-scheduler.org">Quartz</ulink> for its scheduler
service and wraps <classname>org.quartz.Scheduler</classname> in
<classname>org.exoplatform.services.scheduler.impl.QuartzSheduler</classname>
for easier service wiring and configuration like any other services. To work with Quartz
in Kernel, you will mostly work with
<classname>org.exoplatform.services.scheduler.JobSchedulerService</classname>
(implemented by
<classname>org.exoplatform.services.scheduler.impl.JobSchedulerServiceImpl</classname>.
- </para>
- <para>
- To use <classname>JobSchedulerService</classname>, you can configure it
as a component in the configuration.xml. Because
<classname>JobSchedulerService</classname> requires
<classname>QuartzSheduler</classname> and
<classname>QueueTasks</classname>, you also have to configure these two
components.
- </para>
-
+ </itemizedlist>
+ <para>
+ Jobs are given names by their creator and can also be organized into named
groups. Triggers may also be given names and placed into groups, in order to easily
organize them within the scheduler. Jobs can be added to the scheduler once, but
registered with multiple Triggers. Within a J2EE environment, Jobs can perform their work
as part of a distributed (XA) transaction.
+ </para>
+ <para>
+ (Source:
quartz-scheduler.org)
+ </para>
+ <section
id="sect-Reference_Guide-How_does_Job_Scheduler_work-How_can_Job_Scheduler_Service_be_used_in_Kernel">
+ <title>How can Job Scheduler Service be used in Kernel?</title>
+ <para>
+ Kernel leverages <ulink
url="http://www.quartz-scheduler.org">Quartz</ulink> for its scheduler
service and wraps <classname>org.quartz.Scheduler</classname> in
<classname>org.exoplatform.services.scheduler.impl.QuartzSheduler</classname>
for easier service wiring and configuration like any other services. To work with Quartz
in Kernel, you will mostly work with
<classname>org.exoplatform.services.scheduler.JobSchedulerService</classname>
(implemented by
<classname>org.exoplatform.services.scheduler.impl.JobSchedulerServiceImpl</classname>.
+ </para>
+ <para>
+ To use <classname>JobSchedulerService</classname>, you can
configure it as a component in the configuration.xml. Because
<classname>JobSchedulerService</classname> requires
<classname>QuartzSheduler</classname> and
<classname>QueueTasks</classname>, you also have to configure these two
components.
+ </para>
+
<programlisting language="XML" role="XML"><?xml
version="1.0" encoding="UTF-8"?>
<configuration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -182,62 +182,62 @@
</configuration></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-How_does_Job_Scheduler_work-Samples">
- <title>Samples</title>
- <note>
- <para>
- You can download the project code from <ulink
url="https://github.com/hoatle/job-scheduler-service-tutorial"&...
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-How_does_Job_Scheduler_work-Samples">
+ <title>Samples</title>
+ <note>
+ <para>
+ You can download the project code from <ulink
url="https://github.com/hoatle/job-scheduler-service-tutorial"&...
+ </para>
- </note>
- <para>
- Work with <classname>JobSchedulerService</classname> by creating a sample
project and use GateIn-3.1.0-GA for testing.
- </para>
- <para>
- Firstly, create a project by using maven archetype plugin:
- </para>
-
+ </note>
+ <para>
+ Work with <classname>JobSchedulerService</classname> by
creating a sample project and use GateIn-3.1.0-GA for testing.
+ </para>
+ <para>
+ Firstly, create a project by using maven archetype plugin:
+ </para>
+
<programlisting>mvn archetype:generate
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- For project type: select <emphasis
role="bold">maven-archetype-quickstart </emphasis>
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For project type: select <emphasis
role="bold">maven-archetype-quickstart </emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- For groupId: select <emphasis
role="bold">org.exoplatform.samples</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For groupId: select <emphasis
role="bold">org.exoplatform.samples</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- For artifactId: select <emphasis
role="bold">exo.samples.scheduler</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For artifactId: select <emphasis
role="bold">exo.samples.scheduler</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- For version: select<emphasis role="bold">
1.0.0-SNAPSHOT</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For version: select<emphasis role="bold">
1.0.0-SNAPSHOT</emphasis>
+ </para>
- </listitem>
- <listitem>
- <para>
- For package: select <emphasis
role="bold">org.exoplatform.samples.scheduler</emphasis>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ For package: select <emphasis
role="bold">org.exoplatform.samples.scheduler</emphasis>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Edit the pom.xml as follows:
- </para>
-
+ </itemizedlist>
+ <para>
+ Edit the pom.xml as follows:
+ </para>
+
<programlisting language="XML" role="XML"><project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -257,23 +257,23 @@
<name>eXo Samples For Scheduler</name>
<description>eXo Samples Code For Scheduler</description>
</project></programlisting>
- <para>
- Generate an eclipse project by using maven eclipse plugin and then import into
eclipse:
- </para>
-
+ <para>
+ Generate an eclipse project by using maven eclipse plugin and then import
into eclipse:
+ </para>
+
<programlisting>mvn eclipse:eclipse</programlisting>
- <para>
- eXo Kernel makes it easier to work with job scheduler service. All you need is just
to define your "job" class to be performed by implementing <emphasis
role="italic">org.quartz.Job</emphasis> interface and add configuration
for it.
- </para>
- <section id="sect-Reference_Guide-Samples-Define_a_job">
- <title>Define a job</title>
- <para>
- To define a job, do as follows:
- </para>
- <para>
- Define your job to be performed. For example, the job <emphasis
role="italic">DumbJob</emphasis> is defined as follows:
- </para>
-
+ <para>
+ eXo Kernel makes it easier to work with job scheduler service. All you
need is just to define your "job" class to be performed by implementing
<emphasis role="italic">org.quartz.Job</emphasis> interface and add
configuration for it.
+ </para>
+ <section id="sect-Reference_Guide-Samples-Define_a_job">
+ <title>Define a job</title>
+ <para>
+ To define a job, do as follows:
+ </para>
+ <para>
+ Define your job to be performed. For example, the job <emphasis
role="italic">DumbJob</emphasis> is defined as follows:
+ </para>
+
<programlisting language="Java" role="Java">package
org.exoplatform.samples.scheduler.jobs;
import org.exoplatform.services.log.ExoLogger;
@@ -302,23 +302,23 @@
LOG.info("DumbJob is executing...");
}
}</programlisting>
- <para>
- All jobs are required to implement the method <emphasis
role="italic">execute</emphasis> from <emphasis
role="italic">org.quartz.Job</emphasis> interface. This method will be
called whenever a job is performed. With <emphasis
role="italic">DumbJob</emphasis>, you just use logging to see that it
will work. By looking at the terminal, you will see the the log message: "DumbJob is
executing..."
- </para>
+ <para>
+ All jobs are required to implement the method <emphasis
role="italic">execute</emphasis> from <emphasis
role="italic">org.quartz.Job</emphasis> interface. This method will be
called whenever a job is performed. With <emphasis
role="italic">DumbJob</emphasis>, you just use logging to see that it
will work. By looking at the terminal, you will see the log message: "DumbJob is
executing..."
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Samples-Job_configuration">
- <title>Job configuration</title>
- <para>
- After defining the "job", the only next step is to configure it by using
<emphasis role="italic">external-component-plugin</emphasis>
configuration for <emphasis
role="italic">org.exoplatform.services.scheduler.JobSchedulerService</emphasis>.
You can use these methods below for setting component plugin:
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Samples-Job_configuration">
+ <title>Job configuration</title>
+ <para>
+ After defining the "job", the only next step is to
configure it by using <emphasis
role="italic">external-component-plugin</emphasis> configuration for
<emphasis
role="italic">org.exoplatform.services.scheduler.JobSchedulerService</emphasis>.
You can use these methods below for setting component plugin:
+ </para>
+
<programlisting language="Java" role="Java">public void
addPeriodJob(ComponentPlugin plugin) throws Exception;</programlisting>
- <para>
- The component plugin for this method must be the type of <emphasis
role="italic">org.exoplatform.services.scheduler.PeriodJob</emphasis>.
This type of job is used to perform actions that are executed in a period of time. You
have to define when this job is performed, when it ends, when it performs the first
action, how many times it is executed and the period of time to perform the action. See
the configuration sample below to understand more clearly:
- </para>
-
+ <para>
+ The component plugin for this method must be the type of <emphasis
role="italic">org.exoplatform.services.scheduler.PeriodJob</emphasis>.
This type of job is used to perform actions that are executed in a period of time. You
have to define when this job is performed, when it ends, when it performs the first
action, how many times it is executed and the period of time to perform the action. See
the configuration sample below to understand more clearly:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<target-component>org.exoplatform.services.scheduler.JobSchedulerService</target-component>
<component-plugin>
@@ -341,12 +341,12 @@
</init-params>
</component-plugin>
</external-component-plugins></programlisting>
-
+
<programlisting language="Java" role="Java">public void
addCronJob(ComponentPlugin plugin) throws Exception;</programlisting>
- <para>
- The component plugin for this method must be the type of <emphasis
role="italic">org.exoplatform.services.scheduler.CronJob</emphasis>.
This type of job is used to perform actions at specified time with Unix
'cron-like' definitions. The plugin uses "expression" field for
specifying the 'cron-like' definitions to execute the job. This is considered as
the most powerful and flexible job to define when it will execute. For example, at 12pm
every day => "0 0 12 * * ?"; or at 10:15am every Monday, Tuesday,
Wednesday, Thursday and Friday => "0 15 10 ? * MON-FRI". To see more
about Cron expression, please refer to this article: <ulink
url="http://en.wikipedia.org/wiki/CRON_expression">CRON
expression</ulink>. See the configuration sample below to understand more clearly:
- </para>
-
+ <para>
+ The component plugin for this method must be the type of <emphasis
role="italic">org.exoplatform.services.scheduler.CronJob</emphasis>.
This type of job is used to perform actions at specified time with Unix
'cron-like' definitions. The plugin uses "expression" field for
specifying the 'cron-like' definitions to execute the job. This is considered as
the most powerful and flexible job to define when it will execute. For example, at 12pm
every day => "0 0 12 * * ?"; or at 10:15am every Monday, Tuesday,
Wednesday, Thursday and Friday => "0 15 10 ? * MON-FRI". To see more
about Cron expression, please refer to this article: <ulink
url="http://en.wikipedia.org/wiki/CRON_expression">CRON
expression</ulink>. See the configuration sample below to understand more clearly:
+ </para>
+
<programlisting language="XML"
role="XML"><external-component-plugins>
<target-component>org.exoplatform.services.scheduler.JobSchedulerService</target-component>
<component-plugin>
@@ -367,29 +367,29 @@
</init-params>
</component-plugin>
</external-component-plugins></programlisting>
-
+
<programlisting language="Java" role="Java">public void
addGlobalJobListener(ComponentPlugin plugin) throws Exception;</programlisting>
-
+
<programlisting language="Java" role="Java">public void
addJobListener(ComponentPlugin plugin) throws Exception;</programlisting>
- <para>
- The component plugin for two methods above must be the type of <emphasis
role="italic">org.quartz.JobListener.</emphasis> This job listener is
used so that it will be informed when a <emphasis
role="italic">org.quartz.JobDetail</emphasis> executes.
- </para>
-
+ <para>
+ The component plugin for two methods above must be the type of
<emphasis role="italic">org.quartz.JobListener.</emphasis> This job
listener is used so that it will be informed when a <emphasis
role="italic">org.quartz.JobDetail</emphasis> executes.
+ </para>
+
<programlisting language="Java" role="Java">public void
addGlobalTriggerListener(ComponentPlugin plugin) throws Exception;</programlisting>
-
+
<programlisting language="Java" role="Java">public void
addTriggerListener(ComponentPlugin plugin) throws Exception;</programlisting>
- <para>
- The component plugin for two methods above must be the type of <emphasis
role="italic">org.quartz.TriggerListener</emphasis>. This trigger
listener is used so that it will be informed when a <emphasis
role="italic">org.quartz.Trigger</emphasis> fires.
- </para>
+ <para>
+ The component plugin for two methods above must be the type of
<emphasis role="italic">org.quartz.TriggerListener</emphasis>. This
trigger listener is used so that it will be informed when a <emphasis
role="italic">org.quartz.Trigger</emphasis> fires.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Samples-Run_the_project">
- <title>Run the project</title>
- <para>
- Create <emphasis role="italic">conf.portal</emphasis> package
in your sample project. Add the configuration.xml file with the content as follows:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Samples-Run_the_project">
+ <title>Run the project</title>
+ <para>
+ Create <emphasis
role="italic">conf.portal</emphasis> package in your sample project.
Add the configuration.xml file with the content as follows:
+ </para>
+
<programlisting language="XML" role="XML"><?xml
version="1.0" encoding="UTF-8"?>
<configuration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -430,55 +430,55 @@
</component-plugin>
</external-component-plugins>
</configuration></programlisting>
- <para>
- <emphasis role="italic">mvn clean install </emphasis>the
project. Copy .jar file to<emphasis role="italic"> lib</emphasis> in
tomcat bundled with GateIn-3.1.0-GA. Run <emphasis
role="italic">bin/gatein.sh</emphasis> to see the <emphasis
role="italic">DumbJob</emphasis> to be executed on the terminal when
portal containers are initialized. Please look at the terminal to see the log message of
<emphasis role="italic">DumbJob</emphasis>.
- </para>
- <para>
- From now on, you can easily create any job to be executed in GateIn's portal by
defining your job and configuring it.
- </para>
+ <para>
+ <emphasis role="italic">mvn clean install
</emphasis>the project. Copy .jar file to<emphasis role="italic">
lib</emphasis> in tomcat bundled with GateIn-3.1.0-GA. Run <emphasis
role="italic">bin/gatein.sh</emphasis> to see the <emphasis
role="italic">DumbJob</emphasis> to be executed on the terminal when
portal containers are initialized. Please look at the terminal to see the log message of
<emphasis role="italic">DumbJob</emphasis>.
+ </para>
+ <para>
+ From now on, you can easily create any job to be executed in
GateIn's portal by defining your job and configuring it.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Job_Schedule-Reference">
- <title>Reference</title>
- <para>
- To further understand about Job Scheduler, you can refer the following links:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <ulink
url="http://www.quartz-scheduler.org/">http://www.quartz-sch...
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Job_Schedule-Reference">
+ <title>Reference</title>
+ <para>
+ To further understand about Job Scheduler, you can refer the following
links:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink
url="http://www.quartz-scheduler.org/">http://www.quartz-sch...
+ </para>
- </listitem>
- <listitem>
- <para>
- <ulink
url="http://en.wikipedia.org/wiki/Job_scheduler">http://en.w...
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink
url="http://en.wikipedia.org/wiki/Job_scheduler">http://en.w...
+ </para>
- </listitem>
- <listitem>
- <para>
- <ulink
url="http://www.theserverside.com/news/1364726/Job-Scheduling-in-J2E...
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink
url="http://www.theserverside.com/news/1364726/Job-Scheduling-in-J2E...
+ </para>
- </listitem>
- <listitem>
- <para>
- <ulink
url="http://technet.microsoft.com/en-us/library/cc720070%28WS.10%29....
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink
url="http://technet.microsoft.com/en-us/library/cc720070%28WS.10%29....
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/listener-service.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/listener-service.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/listener-service.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,28 +4,28 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-ListenerService">
- <title>ListenerService</title>
- <section
id="sect-Reference_Guide-ListenerService-Asynchronous_Event_Broadcast">
- <title>Asynchronous Event Broadcast</title>
- <para>
- Basicaly, ListenerService used to store Listeners and broadcast events to them.
- </para>
- <para>
- ListenerService event broadcasting works in next way - it takes a destination
listeners and executes event on those listeners.
- </para>
- <para>
- But, some events may take a lot of time, so idea to make event processing asynchronous
is usefull.
- </para>
- <blockquote>
- <para>
- What do I need to make my listener asynchronous?
- </para>
+ <title>ListenerService</title>
+ <section
id="sect-Reference_Guide-ListenerService-Asynchronous_Event_Broadcast">
+ <title>Asynchronous Event Broadcast</title>
+ <para>
+ Basicaly, ListenerService used to store Listeners and broadcast events to
them.
+ </para>
+ <para>
+ ListenerService event broadcasting works in next way - it takes a destination
listeners and executes event on those listeners.
+ </para>
+ <para>
+ But, some events may take a lot of time, so idea to make event processing
asynchronous is useful.
+ </para>
+ <blockquote>
+ <para>
+ What do I need to make my listener asynchronous?
+ </para>
- </blockquote>
- <para>
- - It's very simple, just mark your Listener implementation as
<classname>@Asynchronous</classname>.
- </para>
-
+ </blockquote>
+ <para>
+ - It's very simple, just mark your Listener implementation as
<classname>@Asynchronous</classname>.
+ </para>
+
<programlisting language="Java" role="Java">@Asynchronous
class AsynchListenerWithException<S,D> extends Listener<S,D>
{
@@ -35,13 +35,13 @@
// some expensive operation
}
}</programlisting>
- <para>
- Now, our AsynchListener will be executed in separate thread by
<classname>ExecutorService</classname>.
- </para>
- <para>
- By default, <classname>ExecutoreService</classname> configured with thread
pool size 1, you can change it in configuration:
- </para>
-
+ <para>
+ Now, our AsynchListener will be executed in separate thread by
<classname>ExecutorService</classname>.
+ </para>
+ <para>
+ By default, <classname>ExecutoreService</classname> configured
with thread pool size 1, you can change it in configuration:
+ </para>
+
<programlisting language="XML" role="XML">
<component>
<key>org.exoplatform.services.listener.ListenerService</key>
<type>org.exoplatform.services.listener.ListenerService</type>
@@ -55,7 +55,7 @@
</component></programlisting>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/logging.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/logging.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/logging.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,82 +4,82 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Logs_configuration">
- <title>Logs configuration</title>
- <section id="sect-Reference_Guide-Logs_configuration-Introdution">
- <title>Introdution</title>
- <para>
- In order to accommodate to the different target runtime where it can be deployed, eXo
is capable of leveraging several logging systems. eXo lets you choose the underlying
logging engine to use and even configure that engine (as a quick alternative to doing it
directly in your runtime environment).
- </para>
- <para>
- The currently supported logging engines are :
- <itemizedlist>
- <listitem>
- <para>
- Apache Log4J
- </para>
+ <title>Logs configuration</title>
+ <section id="sect-Reference_Guide-Logs_configuration-Introduction">
+ <title>Introduction</title>
+ <para>
+ In order to accommodate to the different target runtime where it can be
deployed, eXo is capable of leveraging several logging systems. eXo lets you choose the
underlying logging engine to use and even configure that engine (as a quick alternative to
doing it directly in your runtime environment).
+ </para>
+ <para>
+ The currently supported logging engines are :
+ <itemizedlist>
+ <listitem>
+ <para>
+ Apache Log4J
+ </para>
- </listitem>
- <listitem>
- <para>
- JDK's logging
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ JDK's logging
+ </para>
- </listitem>
- <listitem>
- <para>
- Apache Commons logging (which is itself a pluggable logging abstraction)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Apache Commons logging (which is itself a pluggable logging
abstraction)
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- </para>
+ </itemizedlist>
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Logs_configuration-Logs_configuration_initializer">
- <title>Logs configuration initializer</title>
- <para>
- eXo lets you choose whatever logging engine you want as this is generally influences
by the AS runtime or internal policy.
- </para>
- <para>
- This is done through an eXo component called
<classname>LogConfigurationInitializer</classname>.
- </para>
- <para>
- <classname>org.exoplatform.services.log.LogConfigurationInitializer</classname>
that reads init parameters and configures logging system according to them. The
parameters:
- <itemizedlist>
- <listitem>
- <para>
- <firstterm>configurator</firstterm> - an implementation of the
<classname>LogConfigurator</classname> interface with one method configure()
that accepts a list of properties (3rd init parameter) to configure the underlying log
system using the concrete mechanism. Again, there are three configurators for the most
known log systems (commons, log4j, jdk).
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Logs_configuration-Logs_configuration_initializer">
+ <title>Logs configuration initializer</title>
+ <para>
+ eXo lets you choose whatever logging engine you want as this is generally
influences by the AS runtime or internal policy.
+ </para>
+ <para>
+ This is done through an eXo component called
<classname>LogConfigurationInitializer</classname>.
+ </para>
+ <para>
+
<classname>org.exoplatform.services.log.LogConfigurationInitializer</classname>
that reads init parameters and configures logging system according to them. The
parameters:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <firstterm>configurator</firstterm> - an
implementation of the <classname>LogConfigurator</classname> interface with
one method configure() that accepts a list of properties (3rd init parameter) to configure
the underlying log system using the concrete mechanism. Again, there are three
configurators for the most known log systems (commons, log4j, jdk).
+ </para>
- </listitem>
- <listitem>
- <para>
- <firstterm>properties</firstterm> - properties to configure the
concrete log system (system properties for commons, log4j.properties or logging.properties
for commons, log4j and jdk respectively) Look at the configuration examples below.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <firstterm>properties</firstterm> - properties to
configure the concrete log system (system properties for commons, log4j.properties or
logging.properties for commons, log4j and jdk respectively) Look at the configuration
examples below.
+ </para>
- </listitem>
- <listitem>
- <para>
- <firstterm>logger</firstterm> - an implementation of commons-logging
Log interface. It is possible to use commons wrappers but to support buffering required by
the log portlet three kinds of loggers were added:
<classname>BufferedSimpleLog</classname>,
<classname>BufferedLog4JLogger</classname> and
<classname>BufferedJdk14Logger</classname> (they contain BufferedLog and
extend SimpleLog, Log4JLogger and Jdk14Logger commons-logging wrappers respectively).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <firstterm>logger</firstterm> - an implementation of
commons-logging Log interface. It is possible to use commons wrappers but to support
buffering required by the log portlet three kinds of loggers were added:
<classname>BufferedSimpleLog</classname>,
<classname>BufferedLog4JLogger</classname> and
<classname>BufferedJdk14Logger</classname> (they contain BufferedLog and
extend SimpleLog, Log4JLogger and Jdk14Logger commons-logging wrappers respectively).
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- </para>
+ </itemizedlist>
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Logs_configuration-Configuration_examples">
- <title>Configuration examples</title>
- <section id="sect-Reference_Guide-Configuration_examples-Log4J">
- <title>Log4J</title>
- <para>
- <ulink
url="http://logging.apache.org/log4j/">Log4J</ulink> is
a very popular and flexible logging system. It is a good option for JBoss.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Logs_configuration-Configuration_examples">
+ <title>Configuration examples</title>
+ <section
id="sect-Reference_Guide-Configuration_examples-Log4J">
+ <title>Log4J</title>
+ <para>
+ <ulink
url="http://logging.apache.org/log4j/">Log4J</ulink> is a very popular
and flexible logging system. It is a good option for JBoss.
+ </para>
+
<programlisting language="XML" role="XML">
<component>
<type>org.exoplatform.services.log.LogConfigurationInitializer</type>
<init-params>
@@ -105,81 +105,81 @@
</properties-param >
</init-params>
</component></programlisting>
- <section
id="sect-Reference_Guide-Log4J-Assigning_logger_level_for_classes_or_components">
- <title>Assigning logger level for classes or components</title>
- <para>
- You can set logger level for class or group of classes by setting next property:
- </para>
-
+ <section
id="sect-Reference_Guide-Log4J-Assigning_logger_level_for_classes_or_components">
+ <title>Assigning logger level for classes or
components</title>
+ <para>
+ You can set logger level for class or group of classes by setting
next property:
+ </para>
+
<programlisting language="XML" role="XML"><property
name="log4j.category.{component or class name}"
value="DEBUG"/></programlisting>
- <para>
- For example:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- We want to log all debug messages for class
<classname>org.exoplatform.services.jcr.impl.core.SessionDataManager</classname>,
that lies in <package>exo.jcr.component.core</package> component
- </para>
+ <para>
+ For example:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ We want to log all debug messages for class
<classname>org.exoplatform.services.jcr.impl.core.SessionDataManager</classname>,
that lies in <package>exo.jcr.component.core</package> component
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="XML" role="XML"><property
name="log4j.category.exo.jcr.component.core.SessionDataManager"
value="DEBUG"/></programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Or we want to log all debug messages for all classes in
<package>exo.jcr.component.core</package> component
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Or we want to log all debug messages for all classes in
<package>exo.jcr.component.core</package> component
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="XML" role="XML"><property
name="log4j.category.exo.jcr.component.core"
value="DEBUG"/></programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Or we want to log all messages for all kernel components
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Or we want to log all messages for all kernel components
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="XML" role="XML"><property
name="log4j.category.exo.kernel"
value="DEBUG"/></programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_examples-JDK_Logging">
- <title>JDK Logging</title>
- <para>
- JDK logging (aka JUL) is the builtin logging framework introduced in JDK 1.4. It is a
good option for Tomcat AS.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Edit the variable <varname>LOG_OPTS</varname> in your
<filename>eXo.sh</filename> or <filename>eXo.bat</filename> :
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_examples-JDK_Logging">
+ <title>JDK Logging</title>
+ <para>
+ JDK logging (aka JUL) is the built in logging framework introduced in JDK
1.4. It is a good option for Tomcat AS.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Edit the variable <varname>LOG_OPTS</varname> in your
<filename>eXo.sh</filename> or <filename>eXo.bat</filename> :
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting>LOG_OPTS="-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger"</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- Edit your <filename>logs-configuration.xml:</filename>
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Edit your
<filename>logs-configuration.xml:</filename>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="XML"
role="XML"><component>
<type>org.exoplatform.services.log.LogConfigurationInitializer</type>
<init-params>
@@ -201,14 +201,14 @@
</init-params>
</component></programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Configuration_examples-Commons_Logging_SimpleLogss">
- <title>Commons Logging SimpleLogss</title>
- <para>
- SimpleLog is a minimal logging system distributed with Commons Logging. To be used
when nothing else is available or when you seek simplicity.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-Configuration_examples-Commons_Logging_SimpleLogss">
+ <title>Commons Logging SimpleLogss</title>
+ <para>
+ SimpleLog is a minimal logging system distributed with Commons Logging.
To be used when nothing else is available or when you seek simplicity.
+ </para>
+
<programlisting language="XML" role="XML">
<component>
<type>org.exoplatform.services.log.LogConfigurationInitializer</type>
<init-params>
@@ -229,58 +229,58 @@
</init-params>
</component></programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <section
id="sect-Reference_Guide-Logs_configuration-Tips_and_Troubleshooting">
- <title>Tips and Troubleshooting</title>
- <section
id="sect-Reference_Guide-Tips_and_Troubleshooting-JBoss_tips">
- <title>JBoss tips</title>
- <para>
- If you use log4j configuration, you can change the log configuration directly at
runtime in:
<filename>JBOSS_HOME/server/default/conf/jboss-log4j.xml</filename>.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- To enable debug logs:
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Logs_configuration-Tips_and_Troubleshooting">
+ <title>Tips and Troubleshooting</title>
+ <section
id="sect-Reference_Guide-Tips_and_Troubleshooting-JBoss_tips">
+ <title>JBoss tips</title>
+ <para>
+ If you use log4j configuration, you can change the log configuration
directly at runtime in:
<filename>JBOSS_HOME/server/default/conf/jboss-log4j.xml</filename>.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ To enable debug logs:
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
-
+ </itemizedlist>
+
<programlisting language="XML" role="XML"> <param
name="Threshold" value="DEBUG"/></programlisting>
- <itemizedlist>
- <listitem>
- <para>
- To exclude messages from unnecessary classes (server's internal) modify the
threshold of these classes to "FATAL".
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ To exclude messages from unnecessary classes (server's
internal) modify the threshold of these classes to "FATAL".
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <note>
- <title>Note</title>
- <para>
- If you see only ERROR level logs while starting ear on jboss (4.2.2), you have to
remove log4j*.jar from your ear and application.xml.
- </para>
+ </itemizedlist>
+ <note>
+ <title>Note</title>
+ <para>
+ If you see only ERROR level logs while starting ear on jboss (4.2.2),
you have to remove log4j*.jar from your ear and application.xml.
+ </para>
- </note>
+ </note>
- </section>
-
- <section
id="sect-Reference_Guide-Tips_and_Troubleshooting-Other_tips">
- <title>Other tips</title>
- <para>
- If you see only ERROR level logs while starting ear on jboss (4.2.2), you have to
remove log4j*.jar from your ear and application.xml.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Tips_and_Troubleshooting-Other_tips">
+ <title>Other tips</title>
+ <para>
+ If you see only ERROR level logs while starting ear on jboss (4.2.2), you
have to remove log4j*.jar from your ear and application.xml.
+ </para>
- </section>
-
+ </section>
+
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/manageability.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/manageability.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/manageability.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,126 +4,126 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Manageability">
- <title>Manageability</title>
- <section id="sect-Reference_Guide-Manageability-Introduction">
- <title>Introduction</title>
- <para>
- The kernel has a framework for exposing a management view of the various sub systems
of the platform. The management view is a lose term for defining how we can access
relevant information about the system and how we can apply management operations. JMX is
the de facto standard for exposing a management view in the Java Platform but we take in
consideration other kind of views such as REST web services. Therefore, the framework is
not tied to JMX, yet it provides a JMX part to define more precisely details related to
the JMX management view. The legacy framework is still in use but is deprecated in favor
of the new framework as it is less tested and less efficient. It will be removed by
sanitization in the future.
- </para>
+ <title>Manageability</title>
+ <section id="sect-Reference_Guide-Manageability-Introduction">
+ <title>Introduction</title>
+ <para>
+ The kernel has a framework for exposing a management view of the various sub
systems of the platform. The management view is a lose term for defining how we can access
relevant information about the system and how we can apply management operations. JMX is
the de facto standard for exposing a management view in the Java Platform but we take in
consideration other kind of views such as REST web services. Therefore, the framework is
not tied to JMX, yet it provides a JMX part to define more precisely details related to
the JMX management view. The legacy framework is still in use but is deprecated in favor
of the new framework as it is less tested and less efficient. It will be removed by
sanitization in the future.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Manageability-Managed_framework_API">
- <title>Managed framework API</title>
- <para>
- The managed frameworks defines an API for exposing a management view of objects. The
API is targeted for internal use and is not a public API. The framework leverages Java 5
annotations to describe the management view from an object.
- </para>
- <section id="sect-Reference_Guide-Managed_framework_API-Annotations">
- <title>Annotations</title>
- <section
id="sect-Reference_Guide-Annotations-org.exoplatform.management.annotations.Managed_annotation">
- <title>(a)org.exoplatform.management.annotations.Managed
annotation</title>
- <para>
- The @Managed annotates elements that wants to expose a management view to a
management layer.
- </para>
- <para>
- <emphasis role="bold">@Managed for objects</emphasis>
- </para>
- <para>
- The framework will export a management view for the objects annotated.
- </para>
- <para>
- <emphasis role="bold">@Managed for getter/setter</emphasis>
- </para>
- <para>
- Defines a managed property. An annotated getter defines a read property, an
annotated setter defines a write property and if matching getter/setter are annotated it
defines a read/write property.
- </para>
- <para>
- <emphasis role="bold">@Managed on method</emphasis>
- </para>
- <para>
- Defines a managed operation.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Manageability-Managed_framework_API">
+ <title>Managed framework API</title>
+ <para>
+ The managed frameworks defines an API for exposing a management view of
objects. The API is targeted for internal use and is not a public API. The framework
leverages Java 5 annotations to describe the management view from an object.
+ </para>
+ <section
id="sect-Reference_Guide-Managed_framework_API-Annotations">
+ <title>Annotations</title>
+ <section
id="sect-Reference_Guide-Annotations-org.exoplatform.management.annotations.Managed_annotation">
+ <title>(a)org.exoplatform.management.annotations.Managed
annotation</title>
+ <para>
+ The @Managed annotates elements that wants to expose a management
view to a management layer.
+ </para>
+ <para>
+ <emphasis role="bold">@Managed for
objects</emphasis>
+ </para>
+ <para>
+ The framework will export a management view for the objects
annotated.
+ </para>
+ <para>
+ <emphasis role="bold">@Managed for
getter/setter</emphasis>
+ </para>
+ <para>
+ Defines a managed property. An annotated getter defines a read
property, an annotated setter defines a write property and if matching getter/setter are
annotated it defines a read/write property.
+ </para>
+ <para>
+ <emphasis role="bold">@Managed on
method</emphasis>
+ </para>
+ <para>
+ Defines a managed operation.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Annotations-org.exoplatform.management.annotations.ManagedDescription">
- <title>(a)org.exoplatform.management.annotations.ManagedDescription</title>
- <para>
- The @ManagedDescription annotation provides a description of a managed element. It
is valid to annotated object or methods. It takes as sole argument a string that is the
description value.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Annotations-org.exoplatform.management.annotations.ManagedDescription">
+
<title>(a)org.exoplatform.management.annotations.ManagedDescription</title>
+ <para>
+ The @ManagedDescription annotation provides a description of a
managed element. It is valid to annotated object or methods. It takes as sole argument a
string that is the description value.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Annotations-org.exoplatform.management.annotations.ManagedName">
- <title>(a)org.exoplatform.management.annotations.ManagedName</title>
- <para>
- The @ManagedName annotation provides an alternative name for managed properties. It
is used to accomodate legacy methods of an object that can be renamed for compatibility
reasons. It takes as sole argument a string that is the name value.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Annotations-org.exoplatform.management.annotations.ManagedName">
+
<title>(a)org.exoplatform.management.annotations.ManagedName</title>
+ <para>
+ The @ManagedName annotation provides an alternative name for managed
properties. It is used to accomodate legacy methods of an object that can be renamed for
compatibility reasons. It takes as sole argument a string that is the name value.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-Annotations-org.exoplatform.management.annotations.ManagedBy">
- <title>(a)org.exoplatform.management.annotations.ManagedBy</title>
- <para>
- The @ManagedBy annotation defines a delegate class for exposing a management view.
The sole argument of the annotation are class litterals. The delegate class must provide a
constructor with the managed object as argument.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Annotations-org.exoplatform.management.annotations.ManagedBy">
+
<title>(a)org.exoplatform.management.annotations.ManagedBy</title>
+ <para>
+ The @ManagedBy annotation defines a delegate class for exposing a
management view. The sole argument of the annotation are class literals. The delegate
class must provide a constructor with the managed object as argument.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Manageability-JMX_Management_View">
- <title>JMX Management View</title>
- <section
id="sect-Reference_Guide-JMX_Management_View-JMX_Annotations">
- <title>JMX Annotations</title>
- <section
id="sect-Reference_Guide-JMX_Annotations-org.exoplatform.management.jmx.annotations.Property_annotation">
- <title>(a)org.exoplatform.management.jmx.annotations.Property
annotation</title>
- <para>
- The @Property annotation is used to within other annotations such as @NameTemplate
or @NamingContext. It should be seen as a structural way for a list of properties. A
property is made of a key and a value. The value can either be a string litteral or it can
be surrounded by curly brace to be a dynamic property. A dynamic property is resolved
against the instance of the object at runtime.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-Manageability-JMX_Management_View">
+ <title>JMX Management View</title>
+ <section
id="sect-Reference_Guide-JMX_Management_View-JMX_Annotations">
+ <title>JMX Annotations</title>
+ <section
id="sect-Reference_Guide-JMX_Annotations-org.exoplatform.management.jmx.annotations.Property_annotation">
+ <title>(a)org.exoplatform.management.jmx.annotations.Property
annotation</title>
+ <para>
+ The @Property annotation is used to within other annotations such as
@NameTemplate or @NamingContext. It should be seen as a structural way for a list of
properties. A property is made of a key and a value. The value can either be a string
literal or it can be surrounded by curly brace to be a dynamic property. A dynamic
property is resolved against the instance of the object at runtime.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-JMX_Annotations-org.exoplatform.management.jmx.annotations.NameTemplate_annotation">
- <title>(a)org.exoplatform.management.jmx.annotations.NameTemplate
annotation</title>
- <para>
- The @NameTemplate defines a template that is used at registration time of a managed
object to create the JMX object name. The template is formed of properties.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-JMX_Annotations-org.exoplatform.management.jmx.annotations.NameTemplate_annotation">
+ <title>(a)org.exoplatform.management.jmx.annotations.NameTemplate
annotation</title>
+ <para>
+ The @NameTemplate defines a template that is used at registration
time of a managed object to create the JMX object name. The template is formed of
properties.
+ </para>
+
<programlisting language="Java" role="Java">@NameTemplate({
@Property(key="container", value="workspace"),
@Property(key="name", value="{Name}")})</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-JMX_Annotations-org.exoplatform.management.jmx.annotations.NamingContext_annotation">
- <title>(a)org.exoplatform.management.jmx.annotations.NamingContext
annotation</title>
- <para>
- The @NamingContext annotations defines a set of properties which are used within a
management context. It allows to propagate properties down to managed objects which are
defined by an object implementing the ManagementAware interface. The goal is to scope
different instances of the same class that would have the same object name otherwise.
- </para>
-
+ </section>
+
+ <section
id="sect-Reference_Guide-JMX_Annotations-org.exoplatform.management.jmx.annotations.NamingContext_annotation">
+ <title>(a)org.exoplatform.management.jmx.annotations.NamingContext
annotation</title>
+ <para>
+ The @NamingContext annotations defines a set of properties which are
used within a management context. It allows to propagate properties down to managed
objects which are defined by an object implementing the ManagementAware interface. The
goal is to scope different instances of the same class that would have the same object
name otherwise.
+ </para>
+
<programlisting language="Java"
role="Java">@NamingContext(@Property(key="workspace",
value="{Name}"))</programlisting>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Manageability-Example">
- <title>Example</title>
- <section id="sect-Reference_Guide-Example-CacheService_example">
- <title>CacheService example</title>
- <para>
- The cache service delegates most of the work to the CacheServiceManaged class by
using the @ManagedBy annotation. At runtime when a new cache is created, it calls the
CacheServiceManaged class in order to let the CacheServiceManaged object register the
cache.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Manageability-Example">
+ <title>Example</title>
+ <section
id="sect-Reference_Guide-Example-CacheService_example">
+ <title>CacheService example</title>
+ <para>
+ The cache service delegates most of the work to the CacheServiceManaged
class by using the @ManagedBy annotation. At runtime when a new cache is created, it calls
the CacheServiceManaged class in order to let the CacheServiceManaged object register the
cache.
+ </para>
+
<programlisting language="Java"
role="Java">(a)ManagedBy(CacheServiceManaged.class)
public class CacheServiceImpl implements CacheService {
@@ -137,10 +137,10 @@
...
}
}</programlisting>
- <para>
- The ExoCache interface is annotated to define its management view. The @NameTemplate
is used to produce object name values when ExoCache instance are registered.
- </para>
-
+ <para>
+ The ExoCache interface is annotated to define its management view. The
@NameTemplate is used to produce object name values when ExoCache instance are
registered.
+ </para>
+
<programlisting language="Java" role="Java">@Managed
@NameTemplate({@Property(key="service", value="cache"),
@Property(key="name", value="{Name}")})
@ManagedDescription("Exo Cache")
@@ -162,10 +162,10 @@
...
}</programlisting>
- <para>
- The CacheServiceManaged is the glue code between the CacheService and the management
view. The main reason is that only exo services are registered automatically against the
management view. Any other managed bean must be registered manually for now. Therefore, it
needs to know about the management layer via the management context. The management
context allows an object implementing the ManagementAware interface to receive a context
to perform further registration of managed objects.
- </para>
-
+ <para>
+ The CacheServiceManaged is the glue code between the CacheService and the
management view. The main reason is that only exo services are registered automatically
against the management view. Any other managed bean must be registered manually for now.
Therefore, it needs to know about the management layer via the management context. The
management context allows an object implementing the ManagementAware interface to receive
a context to perform further registration of managed objects.
+ </para>
+
<programlisting language="Java" role="Java">@Managed
public class CacheServiceManaged implements ManagementAware {
@@ -193,10 +193,10 @@
}
}</programlisting>
- </section>
-
+ </section>
+
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/rpc-service.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/rpc-service.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/rpc-service.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -8,7 +8,7 @@
<section id="sect-Reference_Guide-RPC_Service-Description">
<title>Description</title>
<para>
- The <emphasis>RPCService</emphasis> is only needed in a cluser
environment, it is used to communicate with the other cluster nodes. It allows to execute
a command on all the cluster nodes or on the coordinator i.e. the oldest node in the
cluster. The <emphasis>RPCService</emphasis> has been designed to rely on
JGroups capabilites and should not be used for heavy load. It can be used for example to
notify other nodes that something happened or to collect some information from the other
nodes.
+ The <emphasis>RPCService</emphasis> is only needed in a cluster
environment, it is used to communicate with the other cluster nodes. It allows to execute
a command on all the cluster nodes or on the coordinator i.e. the oldest node in the
cluster. The <emphasis>RPCService</emphasis> has been designed to rely on
JGroups capabilities and should not be used for heavy load. It can be used for example to
notify other nodes that something happened or to collect some information from the other
nodes.
</para>
<para>
The <emphasis>RPCService</emphasis> relies on 3 main interfaces
which are:
@@ -16,7 +16,7 @@
<itemizedlist>
<listitem>
<para>
- The
<emphasis>org.exoplatform.services.rpc.RPCService</emphasis> that defines the
service itslef
+ The
<emphasis>org.exoplatform.services.rpc.RPCService</emphasis> that defines the
service itself
</para>
</listitem>
@@ -175,7 +175,7 @@
<emphasis>allow-failover</emphasis>
</entry>
<entry>
- This is parameter indicates whether a command on the
coordinator needs to be relaunched or not if the coordintator seems to have left the
cluster. This parameter only affects the behavior of the methods
<emphasis>executeCommandOnCoordinator</emphasis>. This parameter is optional
and its default value is true.
+ This is parameter indicates whether a command on the
coordinator needs to be relaunched or not if the coordinator seems to have left the
cluster. This parameter only affects the behavior of the methods
<emphasis>executeCommandOnCoordinator</emphasis>. This parameter is optional
and its default value is true.
</entry>
</row>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/service-configuration-for-beginners.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/service-configuration-for-beginners.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/service-configuration-for-beginners.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -508,10 +508,6 @@
<para>
Do you feel an expert now? Not yet. Get a deeper look and read this <xref
linkend="sect-Reference_Guide-Services_Wiring" /> article. You read so much
about configuration, that you should wonder what the <xref
linkend="sect-Reference_Guide-Container_Configuration-Kernel_configuration_namespace"
/> looks like.
</para>
- <para>
- If you wish to see a examples of service configurations you should study the
<xref linkend="sect-Reference_Guide-eXo_Core" /> Where you find
descriptions of some eXo's core services. Finally you might wish to read more about
<ulink
url="http://www.picocontainer.org/">PicoContainer</ulink>.
- </para>
-
</section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/service-configuration-in-detail.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/service-configuration-in-detail.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR/kernel/service-configuration-in-detail.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -406,7 +406,7 @@
<section id="sect-Reference_Guide-Parameters-Collection">
<title>Collection</title>
<para>
- You also can use java collections to configure your service. In order to
see an example, let's open the database-organization-configuration.xml file. This file
defines a default user organization (users, groups, memberships/roles) of your portal.
They use component-plugins which are explained later. You wil see that object-param is
used again.
+ You also can use java collections to configure your service. In order to
see an example, let's open the database-organization-configuration.xml file. This file
defines a default user organization (users, groups, memberships/roles) of your portal.
They use component-plugins which are explained later. You will see that object-param is
used again.
</para>
<para>
There are two collections: The first collection is an <emphasis
role="bold">ArrayList</emphasis>. This ArrayList contains only one
value, but there could be more. The only value is an object which defines the field of the
NewUserConfig$JoinGroup bean.
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/Advanced/eXoJCR.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -9,7 +9,7 @@
<xi:include href="eXoJCR/kernel.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<!--<xi:include href="eXoJCR/core.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />-->
<!--<xi:include href="eXoJCR/ws.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+ <xi:include href="eXoJCR/jcr-with-gatein.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="eXoJCR/faq.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr-with-gatein.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
</chapter>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/AuthenticationAndIdentity/LDAP.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,358 +4,358 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-LDAP_Integration">
- <title>LDAP Integration</title>
- <note>
- <title>Notational Device</title>
- <para>
- For ease of readability the following section uses the notational device
<replaceable>ID_HOME</replaceable> to represent the file path
<filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/organization/</filename>,
as this directory is the root of all JBoss Enterprise Portal Platform's
identity-related configuration.
- </para>
+ <title>LDAP Integration</title>
+ <note>
+ <title>Notational Device</title>
+ <para>
+ For ease of readability the following section uses the notational device
<replaceable>ID_HOME</replaceable> to represent the file path
<filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/organization/</filename>,
as this directory is the root of all JBoss Enterprise Portal Platform's
identity-related configuration.
+ </para>
- </note>
- <para>
- <emphasis role="bold">LDAP</emphasis> (Lightweight Directory
Access Protocol) is a set of open protocols used to access centrally stored information
over a network. It is based on the X.500 standard for directory sharing, but is less
complex and resource-intensive.
- </para>
- <para>
- Using a client/server architecture, LDAP provides a reliable means to create a central
information directory accessible from the network. When a client attempts to modify
information within this directory, the server verifies the user has permission to make the
change, and then adds or updates the entry as requested. To ensure the communication is
secure, the Secure Sockets Layer (<emphasis>SSL</emphasis>) or Transport Layer
Security (<emphasis>TLS</emphasis>) cryptographic protocols can be used to
prevent an attacker from intercepting the transmission.
- </para>
- <!-- Source Metadata
+ </note>
+ <para>
+ <emphasis role="bold">LDAP</emphasis> (Lightweight
Directory Access Protocol) is a set of open protocols used to access centrally stored
information over a network. It is based on the X.500 standard for directory sharing, but
is less complex and resource-intensive.
+ </para>
+ <para>
+ Using a client/server architecture, LDAP provides a reliable means to create a
central information directory accessible from the network. When a client attempts to
modify information within this directory, the server verifies the user has permission to
make the change, and then adds or updates the entry as requested. To ensure the
communication is secure, the Secure Sockets Layer (<emphasis>SSL</emphasis>)
or Transport Layer Security (<emphasis>TLS</emphasis>) cryptographic protocols
can be used to prevent an attacker from intercepting the transmission.
+ </para>
+ <!-- Source Metadata
URL:
http://documentation-stage.bne.redhat.com/docs/en-US/Red_Hat_Enterprise_L...
Author [email]: Red Hat ECS Platform Team
License: Copyright © 2010, 2011 Red Hat, Inc.
--> <para>
- LDAP provides the protocols required to manage the data stored in a Directory Server. A
Directory Server contains information about resources available (user accounts and
printers for example) and their location on the network.
- </para>
- <para>
- The following table is a list of Directory Servers that are supported and certified in
JBoss Enterprise Portal Platform.
- </para>
- <table
id="tabl-Reference_Guide-LDAP_Integration-Supported_and_Certified_directory_servers">
- <title>Supported and Certified directory servers</title>
- <tgroup cols="2">
- <colspec colname="LDAP" colnum="1"
colwidth="1*"></colspec>
- <thead>
- <row>
- <entry>
- <emphasis>Directory Server</emphasis>
- </entry>
- <entry>
- <emphasis>Version</emphasis>
- </entry>
+ LDAP provides the protocols required to manage the data stored in a Directory
Server. A Directory Server contains information about resources available (user accounts
and printers for example) and their location on the network.
+ </para>
+ <para>
+ The following table is a list of Directory Servers that are supported and
certified in JBoss Enterprise Portal Platform.
+ </para>
+ <table
id="tabl-Reference_Guide-LDAP_Integration-Supported_and_Certified_directory_servers">
+ <title>Supported and Certified directory servers</title>
+ <tgroup cols="2">
+ <colspec colname="LDAP" colnum="1"
colwidth="1*"></colspec>
+ <thead>
+ <row>
+ <entry>
+ <emphasis>Directory Server</emphasis>
+ </entry>
+ <entry>
+ <emphasis>Version</emphasis>
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
- OpenDS
- </entry>
- <entry>
- 1.2
- </entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ OpenDS
+ </entry>
+ <entry>
+ 1.2
+ </entry>
- </row>
- <row>
- <entry>
- OpenDS
- </entry>
- <entry>
- 2.0
- </entry>
+ </row>
+ <row>
+ <entry>
+ OpenDS
+ </entry>
+ <entry>
+ 2.0
+ </entry>
- </row>
- <row>
- <entry>
- OpenLDAP
- </entry>
- <entry>
- 2.4
- </entry>
+ </row>
+ <row>
+ <entry>
+ OpenLDAP
+ </entry>
+ <entry>
+ 2.4
+ </entry>
- </row>
- <row>
- <entry>
- Red Hat Directory Server (RHDS)
- </entry>
- <entry>
- 7.1
- </entry>
+ </row>
+ <row>
+ <entry>
+ Red Hat Directory Server (RHDS)
+ </entry>
+ <entry>
+ 7.1
+ </entry>
- </row>
- <row>
- <entry>
- Microsoft Active Directory (MSAD)
- </entry>
- <entry>
- Windows Server 2008
- </entry>
+ </row>
+ <row>
+ <entry>
+ Microsoft Active Directory (MSAD)
+ </entry>
+ <entry>
+ Windows Server 2008
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <!-- Source Metadata
+ </table>
+ <!-- Source Metadata
URL:
http://www.jboss.com/products/platforms/portals/testedconfigurations/
Author [w/email]: Red Hat Inc
License:
--> <note>
- <title>Examples</title>
- <para>
- JBoss Enterprise Portal Platform includes several example LDAP configuration
<filename>.xml</filename> files and <filename>.ldif</filename>
(LDAP Data Interchange Format) data files.
- </para>
- <para>
- These examples are in the
<filename><replaceable>ID_HOME</replaceable>/picketlink-idm/examples</filename>
directory and can be deployed in a testing environment to assist in configuring LDAP.
- </para>
+ <title>Examples</title>
+ <para>
+ JBoss Enterprise Portal Platform includes several example LDAP configuration
<filename>.xml</filename> files and <filename>.ldif</filename>
(LDAP Data Interchange Format) data files.
+ </para>
+ <para>
+ These examples are in the
<filename><replaceable>ID_HOME</replaceable>/picketlink-idm/examples</filename>
directory and can be deployed in a testing environment to assist in configuring LDAP.
+ </para>
- </note>
- <procedure id="proc-Reference_Guide-LDAP_Integration-LDAP_Set_Up">
- <title>LDAP Set Up</title>
- <step>
- <substeps>
- <step>
- <para>
- Install your <application>LDAP</application> server by following the
installation instructions provided for the product you are using.
- </para>
- <para>
- If you are installing the <application>Red Hat Directory
Server</application> (RHDS), you should refer to the Installation Guide at <ulink
type="http"
url="http://docs.redhat.com/docs/en-US/Red_Hat_Directory_Server/inde...
/>.
- </para>
- <para>
- If you are using a third party directory server
(<application>OpenDS</application>,
<application>OpenLDAP</application> or <application>Miscrosoft Active
Directory</application> (MSAD)), refer the appropriate documentation for that
product.
- </para>
- <para>
- The following values provide an example of working configuration settings for the
different Directory Servers:
- </para>
- <table>
- <title></title>
- <tgroup cols="8">
- <colspec colname="1"></colspec>
- <colspec colname="2"></colspec>
- <colspec colname="3"></colspec>
- <colspec colname="4"></colspec>
- <colspec colname="5"></colspec>
- <colspec colname="6"></colspec>
- <colspec colname="7"></colspec>
- <colspec colname="8"></colspec>
- <spanspec nameend="8" namest="2"
spanname="vspan"></spanspec> <thead>
- <row>
- <entry>
- Directory Server
- </entry>
- <entry spanname="vspan">
- Value
- </entry>
+ </note>
+ <procedure id="proc-Reference_Guide-LDAP_Integration-LDAP_Set_Up">
+ <title>LDAP Set Up</title>
+ <step>
+ <substeps>
+ <step>
+ <para>
+ Install your <application>LDAP</application> server
by following the installation instructions provided for the product you are using.
+ </para>
+ <para>
+ If you are installing the <application>Red Hat Directory
Server</application> (RHDS), you should refer to the Installation Guide at <ulink
type="http"
url="http://docs.redhat.com/docs/en-US/Red_Hat_Directory_Server/inde...
/>.
+ </para>
+ <para>
+ If you are using a third party directory server
(<application>OpenDS</application>,
<application>OpenLDAP</application> or <application>Miscrosoft Active
Directory</application> (MSAD)), refer the appropriate documentation for that
product.
+ </para>
+ <para>
+ The following values provide an example of working configuration
settings for the different Directory Servers:
+ </para>
+ <table>
+ <title></title>
+ <tgroup cols="8">
+ <colspec colname="1"></colspec>
+ <colspec colname="2"></colspec>
+ <colspec colname="3"></colspec>
+ <colspec colname="4"></colspec>
+ <colspec colname="5"></colspec>
+ <colspec colname="6"></colspec>
+ <colspec colname="7"></colspec>
+ <colspec colname="8"></colspec>
+ <spanspec nameend="8" namest="2"
spanname="vspan"></spanspec> <thead>
+ <row>
+ <entry>
+ Directory Server
+ </entry>
+ <entry spanname="vspan">
+ Value
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
- </entry>
- <entry>
- <emphasis role="bold">root user Distinguished Name
(DN)</emphasis>
- </entry>
- <entry>
- <emphasis role="bold">Password</emphasis>
- </entry>
- <entry>
- <emphasis role="bold">Port</emphasis>
- </entry>
- <entry>
- <emphasis role="bold">Admin Port</emphasis>
- </entry>
- <entry>
- <emphasis role="bold">Base DN</emphasis>
- </entry>
- <entry>
- <emphasis role="bold">Database Population</emphasis>
- </entry>
- <entry>
- <emphasis role="bold">SSO/TLS</emphasis>
- </entry>
+ </entry>
+ <entry>
+ <emphasis role="bold">root user
Distinguished Name (DN)</emphasis>
+ </entry>
+ <entry>
+ <emphasis
role="bold">Password</emphasis>
+ </entry>
+ <entry>
+ <emphasis
role="bold">Port</emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold">Admin
Port</emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold">Base
DN</emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold">Database
Population</emphasis>
+ </entry>
+ <entry>
+ <emphasis
role="bold">SSO/TLS</emphasis>
+ </entry>
- </row>
- <row>
- <entry>
- <emphasis role="bold">RHDS and OpenDS</emphasis>
- </entry>
- <entry>
- cn=Directory Manager
- </entry>
- <entry>
- password
- </entry>
- <entry>
- 1389
- </entry>
- <entry>
- 4444
- </entry>
- <entry>
- dc=example,dc=com
- </entry>
- <entry>
- "Only create the base entry"
- </entry>
- <entry>
- no SSO, no TLS
- </entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis role="bold">RHDS and
OpenDS</emphasis>
+ </entry>
+ <entry>
+ cn=Directory Manager
+ </entry>
+ <entry>
+ password
+ </entry>
+ <entry>
+ 1389
+ </entry>
+ <entry>
+ 4444
+ </entry>
+ <entry>
+ dc=example,dc=com
+ </entry>
+ <entry>
+ "Only create the base entry"
+ </entry>
+ <entry>
+ no SSO, no TLS
+ </entry>
- </row>
- <row>
- <entry>
- <emphasis role="bold">MSAD</emphasis>
- </entry>
- <entry>
- CN=Users
- </entry>
- <entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis
role="bold">MSAD</emphasis>
+ </entry>
+ <entry>
+ CN=Users
+ </entry>
+ <entry>
- </entry>
- <entry>
+ </entry>
+ <entry>
- </entry>
- <entry>
+ </entry>
+ <entry>
- </entry>
- <entry>
+ </entry>
+ <entry>
- </entry>
- <entry>
+ </entry>
+ <entry>
- </entry>
- <entry>
+ </entry>
+ <entry>
- </entry>
+ </entry>
- </row>
- <row>
- <entry>
- <emphasis role="bold">OpenLDAP</emphasis>
- </entry>
- <entry>
- cn=Manager,dc=example,dc=com
- </entry>
- <entry>
- secret
- </entry>
- <entry>
- 1389
- </entry>
- <entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis
role="bold">OpenLDAP</emphasis>
+ </entry>
+ <entry>
+ cn=Manager,dc=example,dc=com
+ </entry>
+ <entry>
+ secret
+ </entry>
+ <entry>
+ 1389
+ </entry>
+ <entry>
- </entry>
- <entry>
- dc=example,dc=com
- </entry>
- <entry>
+ </entry>
+ <entry>
+ dc=example,dc=com
+ </entry>
+ <entry>
- </entry>
- <entry>
+ </entry>
+ <entry>
- </entry>
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- These, and other appropriate settings, should be adjusted to suit your
circumstances.
- </para>
+ </table>
+ <para>
+ These, and other appropriate settings, should be adjusted to suit
your circumstances.
+ </para>
- </step>
- <step>
- <para>
- <emphasis role="bold">Optional</emphasis>: Import an
<filename>ldif</filename> file and populate the Directory Server.
- </para>
+ </step>
+ <step>
+ <para>
+ <emphasis role="bold">Optional</emphasis>:
Import an <filename>ldif</filename> file and populate the Directory Server.
+ </para>
- </step>
- <step>
- <para>
- Start the Directory Server.
- </para>
+ </step>
+ <step>
+ <para>
+ Start the Directory Server.
+ </para>
- </step>
+ </step>
- </substeps>
+ </substeps>
- </step>
+ </step>
- </procedure>
-
- <section
id="sect-Reference_Guide-LDAP_Integration-LDAP_in_Read_only_Mode">
- <title>LDAP in Read-only Mode</title>
- <para>
- This section will show you how to add LDAP in read-only mode. This means that user
data entries (both pre-existing, and newly added through the JBoss Enterprise Portal
Platform User Interface) will be consumed though the Directory Server and LDAP services,
but written to the underlying database. The only exception is that passwords updated via
the UI will also be propagated into the appropriate LDAP entry.
- </para>
- <procedure
id="proc-Reference_Guide-LDAP_in_Read_only_Mode-Set_up_LDAP_read_only_Mode">
- <title>Set up LDAP read-only Mode</title>
- <step>
- <para>
- Open the
<filename><replaceable>ID_HOME</replaceable>/idm-configuration.xml</filename>
file.
- </para>
- <para>
- JBoss Enterprise Portal Platform uses the PicketLink IDM framework as the underlying
identity storage system, hence all the configurations use dedicated Picketlink settings.
- </para>
+ </procedure>
+
+ <section
id="sect-Reference_Guide-LDAP_Integration-LDAP_in_Read_only_Mode">
+ <title>LDAP in Read-only Mode</title>
+ <para>
+ This section will show you how to add LDAP in read-only mode. This means that
user data entries (both pre-existing, and newly added through the JBoss Enterprise Portal
Platform User Interface) will be consumed though the Directory Server and LDAP services,
but written to the underlying database. The only exception is that passwords updated via
the UI will also be propagated into the appropriate LDAP entry.
+ </para>
+ <procedure
id="proc-Reference_Guide-LDAP_in_Read_only_Mode-Set_up_LDAP_read_only_Mode">
+ <title>Set up LDAP read-only Mode</title>
+ <step>
+ <para>
+ Open the
<filename><replaceable>ID_HOME</replaceable>/idm-configuration.xml</filename>
file.
+ </para>
+ <para>
+ JBoss Enterprise Portal Platform uses the PicketLink IDM framework as
the underlying identity storage system, hence all the configurations use dedicated
Picketlink settings.
+ </para>
- </step>
- <step>
- <para>
- Comment out the default Picketlink <literal>config</literal> value:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Comment out the default Picketlink
<literal>config</literal> value:
+ </para>
+
<programlisting language="XML"
role="XML"><value>war:/conf/organization/picketlink-idm/picketlink-idm-config.xml</value>
</programlisting>
- </step>
- <step>
- <para>
- Uncomment the appropriate sample configuration values as described below, depending
on which Directory Server you are implementing:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <xref
linkend="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-Red_Hat_Directory_Server_or_OpenDS"
/>
- </para>
+ </step>
+ <step>
+ <para>
+ Uncomment the appropriate sample configuration values as described
below, depending on which Directory Server you are implementing:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-Red_Hat_Directory_Server_or_OpenDS"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-Microsoft_Active_Directory"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-Microsoft_Active_Directory"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-OpenLDAP" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-OpenLDAP" />
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <procedure
id="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-Red_Hat_Directory_Server_or_OpenDS">
- <title>Red Hat Directory Server or OpenDS</title>
- <step>
- <para>
- Uncomment the line under "<emphasis>Read Only "ACME" LDAP
Example</emphasis>":
- </para>
-
+ </itemizedlist>
+ <procedure
id="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-Red_Hat_Directory_Server_or_OpenDS">
+ <title>Red Hat Directory Server or OpenDS</title>
+ <step>
+ <para>
+ Uncomment the line under "<emphasis>Read Only
"ACME" LDAP Example</emphasis>":
+ </para>
+
<programlisting language="XML" role="XML"><!--Read Only
"ACME" LDAP Example-->
<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-acme-config.xml</value>
</programlisting>
- </step>
- <step>
- <para>
- Uncomment the <parameter>groupTypeMappings</parameter> under
"<emphasis>Uncomment for ACME LDAP example</emphasis>":
- </para>
-
+ </step>
+ <step>
+ <para>
+ Uncomment the
<parameter>groupTypeMappings</parameter> under "<emphasis>Uncomment
for ACME LDAP example</emphasis>":
+ </para>
+
<programlisting language="XML" role="XML"><!-- Uncomment
for ACME LDAP example -->
<entry>
<key><string>/acme/roles/*</string></key>
@@ -366,80 +366,80 @@
<value><string>acme_ou_type</string></value>
</entry>
</programlisting>
- <para>
- Refer to <xref
linkend="exam-Reference_Guide-Examples-Read_Only_groupTypeMappings" /> for
more information about how these <parameter>groupTypeMappings</parameter>
operate.
- </para>
+ <para>
+ Refer to <xref
linkend="exam-Reference_Guide-Examples-Read_Only_groupTypeMappings" /> for
more information about how these <parameter>groupTypeMappings</parameter>
operate.
+ </para>
- </step>
- <step>
- <para>
- Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_in_Read-only_Mode-Set_up_LDAP_read-only_Mode-Step-4"
/>.
- </para>
+ </step>
+ <step>
+ <para>
+ Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_in_Read-only_Mode-Set_up_LDAP_read-only_Mode-Step-4"
/>.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <procedure
id="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-Microsoft_Active_Directory">
- <title>Microsoft Active Directory</title>
- <step>
- <para>
- Uncomment the line under "<emphasis>MSAD Read Only "ACME"
LDAP Example</emphasis>":
- </para>
-
+ </procedure>
+
+ <procedure
id="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-Microsoft_Active_Directory">
+ <title>Microsoft Active Directory</title>
+ <step>
+ <para>
+ Uncomment the line under "<emphasis>MSAD Read Only
"ACME" LDAP Example</emphasis>":
+ </para>
+
<programlisting language="XML" role="XML"><!--MSAD Read
Only "ACME" LDAP Example-->
<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-msad-readonly-config.xml</value>
</programlisting>
- </step>
- <step>
- <para>
- Uncomment the <parameter>groupTypeMappings</parameter> under
"<emphasis>Uncomment for MSAD ReadOnly LDAP example</emphasis>":
- </para>
-
+ </step>
+ <step>
+ <para>
+ Uncomment the
<parameter>groupTypeMappings</parameter> under "<emphasis>Uncomment
for MSAD ReadOnly LDAP example</emphasis>":
+ </para>
+
<programlisting language="XML" role="XML"><!-- Uncomment
for MSAD ReadOnly LDAP example -->
<entry>
<key><string>/acme/roles/*</string></key>
<value><string>msad_roles_type</string></value>
</entry>
</programlisting>
- <para>
- Refer to <xref
linkend="exam-Reference_Guide-Examples-Read_Only_groupTypeMappings" /> for
more information about how these <parameter>groupTypeMappings</parameter>
operate.
- </para>
+ <para>
+ Refer to <xref
linkend="exam-Reference_Guide-Examples-Read_Only_groupTypeMappings" /> for
more information about how these <parameter>groupTypeMappings</parameter>
operate.
+ </para>
- </step>
- <step>
- <para>
- Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_in_Read-only_Mode-Set_up_LDAP_read-only_Mode-Step-4"
/>.
- </para>
+ </step>
+ <step>
+ <para>
+ Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_in_Read-only_Mode-Set_up_LDAP_read-only_Mode-Step-4"
/>.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <procedure
id="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-OpenLDAP">
- <title>OpenLDAP</title>
- <step>
- <para>
- If you have not done so already, install your LDAP server. Refer to <xref
linkend="proc-Reference_Guide-LDAP_Integration-LDAP_Set_Up" /> for some
assistance.
- </para>
+ </procedure>
+
+ <procedure
id="proc-Reference_Guide-Set_up_LDAP_read_only_Mode-OpenLDAP">
+ <title>OpenLDAP</title>
+ <step>
+ <para>
+ If you have not done so already, install your LDAP server.
Refer to <xref linkend="proc-Reference_Guide-LDAP_Integration-LDAP_Set_Up"
/> for some assistance.
+ </para>
- </step>
- <step>
- <para>
- Uncomment the line under "<emphasis>OpenLDAP ReadOnly "ACME"
LDAP Example</emphasis>":
- </para>
-
+ </step>
+ <step>
+ <para>
+ Uncomment the line under "<emphasis>OpenLDAP
ReadOnly "ACME" LDAP Example</emphasis>":
+ </para>
+
<programlisting language="XML" role="XML"><!--OpenLDAP
ReadOnly "ACME" LDAP Example-->
<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-acme-config.xml</value>
</programlisting>
- </step>
- <step>
- <para>
- Uncomment the <parameter>groupTypeMappings</parameter> under
"<emphasis>Uncomment for ACME LDAP example</emphasis>":
- </para>
-
+ </step>
+ <step>
+ <para>
+ Uncomment the
<parameter>groupTypeMappings</parameter> under "<emphasis>Uncomment
for ACME LDAP example</emphasis>":
+ </para>
+
<programlisting language="XML" role="XML"><!-- Uncomment
for ACME LDAP example -->
<entry>
<key><string>/acme/roles/*</string></key>
@@ -450,228 +450,228 @@
<value><string>acme_ou_type</string></value>
</entry>
</programlisting>
- <para>
- Refer to <xref
linkend="exam-Reference_Guide-Examples-Read_Only_groupTypeMappings" /> for
more information about how these <parameter>groupTypeMappings</parameter>
operate.
- </para>
+ <para>
+ Refer to <xref
linkend="exam-Reference_Guide-Examples-Read_Only_groupTypeMappings" /> for
more information about how these <parameter>groupTypeMappings</parameter>
operate.
+ </para>
- </step>
- <step>
- <para>
- Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_in_Read-only_Mode-Set_up_LDAP_read-only_Mode-Step-4"
/>.
- </para>
+ </step>
+ <step>
+ <para>
+ Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_in_Read-only_Mode-Set_up_LDAP_read-only_Mode-Step-4"
/>.
+ </para>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </step>
- <step
id="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_in_Read-only_Mode-Set_up_LDAP_read-only_Mode-Step-4">
- <para>
- To use a different LDAP server or directory data, edit the DS-specific
<filename>.xml</filename> file you uncommented in <emphasis
role="bold">Substep 3a</emphasis> above and change the values to suit
your requirements.
- </para>
- <para>
- Refer to the list in <xref
linkend="exam-Reference_Guide-Examples-LDAP_configuration" /> for some
examples or refer to the product-specific documentation for more information.
- </para>
+ </step>
+ <step
id="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_in_Read-only_Mode-Set_up_LDAP_read-only_Mode-Step-4">
+ <para>
+ To use a different LDAP server or directory data, edit the
DS-specific <filename>.xml</filename> file you uncommented in <emphasis
role="bold">Substep 3a</emphasis> above and change the values to suit
your requirements.
+ </para>
+ <para>
+ Refer to the list in <xref
linkend="exam-Reference_Guide-Examples-LDAP_configuration" /> for some
examples or refer to the product-specific documentation for more information.
+ </para>
- </step>
- <step>
- <para>
- Start the server.
- </para>
+ </step>
+ <step>
+ <para>
+ Start the server.
+ </para>
- </step>
- <step>
- <para>
- Navigate to the portal homepage (<ulink type="http"
url="http://localhost:8080/portal" />) and log in as an administrator.
- </para>
+ </step>
+ <step>
+ <para>
+ Navigate to the portal homepage (<ulink type="http"
url="http://localhost:8080/portal" />) and log in as an administrator.
+ </para>
- </step>
- <step>
- <para>
- Navigate to <menuchoice> <guimenu>Group</guimenu>
<guimenuitem>Organization</guimenuitem> <guimenuitem>Users and groups
management</guimenuitem> </menuchoice>.
- </para>
- <substeps>
- <step>
- <para>
- Create a new group called <emphasis>acme</emphasis> under the root
node.
- </para>
+ </step>
+ <step>
+ <para>
+ Navigate to <menuchoice> <guimenu>Group</guimenu>
<guimenuitem>Organization</guimenuitem> <guimenuitem>Users and groups
management</guimenuitem> </menuchoice>.
+ </para>
+ <substeps>
+ <step>
+ <para>
+ Create a new group called
<emphasis>acme</emphasis> under the root node.
+ </para>
- </step>
- <step>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">For RHDS, OpenDS and
OpenLDAP</emphasis>:
- </para>
- <para>
- Create two sub-groups called <emphasis>roles</emphasis> and
<emphasis>organization_units</emphasis>.
- </para>
+ </step>
+ <step>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">For RHDS,
OpenDS and OpenLDAP</emphasis>:
+ </para>
+ <para>
+ Create two sub-groups called
<emphasis>roles</emphasis> and
<emphasis>organization_units</emphasis>.
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">For MSAD:</emphasis>
- </para>
- <para>
- Create a subgroup called <emphasis>roles</emphasis>.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">For
MSAD:</emphasis>
+ </para>
+ <para>
+ Create a subgroup called
<emphasis>roles</emphasis>.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
+ </step>
- </substeps>
+ </substeps>
- </step>
+ </step>
- </procedure>
-
- <para>
- Users defined in LDAP should be visible in "<emphasis>Users and groups
management</emphasis>" and groups from LDAP should be present as children of
<emphasis>/acme/roles</emphasis> and
<emphasis>/acme/organization_units</emphasis>.
- </para>
- <para>
- More information about configuration can be found in <xref
linkend="sect-Reference_Guide-PicketLink_IDM_integration" /> and in the
PicketLink project <ulink type="http"
url="http://anonsvn.jboss.org/repos/picketlink/idm/downloads/docs/1....
Guide</ulink>.
- </para>
+ </procedure>
+
+ <para>
+ Users defined in LDAP should be visible in "<emphasis>Users and
groups management</emphasis>" and groups from LDAP should be present as
children of <emphasis>/acme/roles</emphasis> and
<emphasis>/acme/organization_units</emphasis>.
+ </para>
+ <para>
+ More information about configuration can be found in <xref
linkend="sect-Reference_Guide-PicketLink_IDM_integration" /> and in the
PicketLink project <ulink type="http"
url="http://anonsvn.jboss.org/repos/picketlink/idm/downloads/docs/1....
Guide</ulink>.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store">
- <title>LDAP as Default Store</title>
- <para>
- Follow the procedure below to set LDAP up as the default identity store for JBoss
Enterprise Portal Platform. All default accounts and some of groups that comes with JBoss
Enterprise Portal Platform will be created in the LDAP store.
- </para>
- <para>
- The LDAP server will be configured to store part of the JBoss Enterprise Portal
Platform group tree. This means that groups under specified part of the tree will be
stored in directory server while all others will be stored in database.
- </para>
- <procedure
id="proc-Reference_Guide-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Indentity_Store">
- <title>Set up LDAP as Default Indentity Store</title>
- <step>
- <para>
- If you have not done so already, install your LDAP server. Refer to <xref
linkend="proc-Reference_Guide-LDAP_Integration-LDAP_Set_Up" /> for some
assistance.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store">
+ <title>LDAP as Default Store</title>
+ <para>
+ Follow the procedure below to set LDAP up as the default identity store for
JBoss Enterprise Portal Platform. All default accounts and some of groups that comes with
JBoss Enterprise Portal Platform will be created in the LDAP store.
+ </para>
+ <para>
+ The LDAP server will be configured to store part of the JBoss Enterprise
Portal Platform group tree. This means that groups under specified part of the tree will
be stored in directory server while all others will be stored in database.
+ </para>
+ <procedure
id="proc-Reference_Guide-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Identity_Store">
+ <title>Set up LDAP as Default Identity Store</title>
+ <step>
+ <para>
+ If you have not done so already, install your LDAP server. Refer to
<xref linkend="proc-Reference_Guide-LDAP_Integration-LDAP_Set_Up" /> for
some assistance.
+ </para>
- </step>
- <step>
- <para>
- Open the
<filename><replaceable>ID_HOME</replaceable>/idm-configuration.xml</filename>
file.
- </para>
- <para>
- JBoss Enterprise Portal Platform uses the PicketLink IDM framework as the underlying
identity storage system, hence all the configurations use dedicated Picketlink settings.
- </para>
+ </step>
+ <step>
+ <para>
+ Open the
<filename><replaceable>ID_HOME</replaceable>/idm-configuration.xml</filename>
file.
+ </para>
+ <para>
+ JBoss Enterprise Portal Platform uses the PicketLink IDM framework as
the underlying identity storage system, hence all the configurations use dedicated
Picketlink settings.
+ </para>
- </step>
- <step>
- <para>
- Comment out the default Picketlink <literal>config</literal> value:
<parameter>war:/conf/organization/picketlink-idm/picketlink-idm-config.xml</parameter>
- </para>
+ </step>
+ <step>
+ <para>
+ Comment out the default Picketlink
<literal>config</literal> value:
<parameter>war:/conf/organization/picketlink-idm/picketlink-idm-config.xml</parameter>
+ </para>
- </step>
- <step>
- <para>
- Uncomment the appropriate LDAP configuration entry depending on your LDAP server:
- </para>
- <procedure
id="proc-Reference_Guide-Set_up_LDAP_as_Default_Indentity_Store-For_RHDS_and_OpenDS">
- <title>For RHDS and OpenDS</title>
- <step>
- <para>
- Expose the entry under "<emphasis>Sample LDAP
config</emphasis>":
- </para>
-
+ </step>
+ <step>
+ <para>
+ Uncomment the appropriate LDAP configuration entry depending on your
LDAP server:
+ </para>
+ <procedure
id="proc-Reference_Guide-Set_up_LDAP_as_Default_Indentity_Store-For_RHDS_and_OpenDS">
+ <title>For RHDS and OpenDS</title>
+ <step>
+ <para>
+ Expose the entry under "<emphasis>Sample LDAP
config</emphasis>":
+ </para>
+
<programlisting language="XML" role="XML"><!--Sample
LDAP config-->
<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-config.xml</value>
</programlisting>
- </step>
- <step>
- <para>
- Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Indentity_Store-Step-5"
/>
- </para>
+ </step>
+ <step>
+ <para>
+ Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Indentity_Store-Step-5"
/>
+ </para>
- </step>
+ </step>
- </procedure>
-
- <procedure
id="proc-Reference_Guide-Set_up_LDAP_as_Default_Indentity_Store-For_MSAD">
- <title>For MSAD</title>
- <step>
- <para>
- Expose the entry under "<emphasis>MSAD LDAP
Example</emphasis>":
- </para>
-
+ </procedure>
+
+ <procedure
id="proc-Reference_Guide-Set_up_LDAP_as_Default_Indentity_Store-For_MSAD">
+ <title>For MSAD</title>
+ <step>
+ <para>
+ Expose the entry under "<emphasis>MSAD LDAP
Example</emphasis>":
+ </para>
+
<programlisting language="XML" role="XML"><!--MSAD LDAP
Example-->
<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-msad-config.xml</value>
</programlisting>
- <procedure
id="proc-Reference_Guide-For_MSAD-To_use_SSL_encryption_with_MSAD">
- <title>To use SSL encryption with MSAD:</title>
- <step>
- <para>
- Open the
<filename><replaceable>ID_HOME</replaceable>/picketlink-idm/examples/picketlink-idm-msad-config.xml</filename>.
- </para>
+ <procedure
id="proc-Reference_Guide-For_MSAD-To_use_SSL_encryption_with_MSAD">
+ <title>To use SSL encryption with MSAD:</title>
+ <step>
+ <para>
+ Open the
<filename><replaceable>ID_HOME</replaceable>/picketlink-idm/examples/picketlink-idm-msad-config.xml</filename>.
+ </para>
- </step>
- <step>
- <para>
- Ensure the following entries are uncommented and that the path to the
<filename>truststore</filename> file and password are correct:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Ensure the following entries are uncommented and that
the path to the <filename>truststore</filename> file and password are
correct:
+ </para>
+
<programlisting><option>
<name>customSystemProperties</name>
<value>javax.net.ssl.trustStore=<replaceable>/path/to/truststore</replaceable></value>
<value>javax.net.ssl.trustStorePassword=<replaceable>password</replaceable></value>
</option>
</programlisting>
- <para>
- You can import a custom certificate by replacing the
<replaceable>certificate</replaceable> and
<replaceable>truststore</replaceable> details in the following command:
- </para>
-
+ <para>
+ You can import a custom certificate by replacing the
<replaceable>certificate</replaceable> and
<replaceable>truststore</replaceable> details in the following command:
+ </para>
+
<programlisting><command>keytool -import -file
<filename><replaceable>certificate</replaceable></filename>
-keystore
<filename><replaceable>truststore</replaceable></filename></command></programlisting>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </step>
- <step>
- <para>
- Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Indentity_Store-Step-5"
/>
- </para>
+ </step>
+ <step>
+ <para>
+ Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Indentity_Store-Step-5"
/>
+ </para>
- </step>
+ </step>
- </procedure>
-
- <procedure
id="proc-Reference_Guide-Set_up_LDAP_as_Default_Indentity_Store-For_OpenLDAP">
- <title>For OpenLDAP</title>
- <step>
- <para>
- Expose the entry under "<emphasis>OpenLDAP LDAP
config</emphasis>":
- </para>
-
+ </procedure>
+
+ <procedure
id="proc-Reference_Guide-Set_up_LDAP_as_Default_Indentity_Store-For_OpenLDAP">
+ <title>For OpenLDAP</title>
+ <step>
+ <para>
+ Expose the entry under "<emphasis>OpenLDAP LDAP
config</emphasis>":
+ </para>
+
<programlisting language="XML" role="XML"><!--OpenLDAP
LDAP config-->
<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-config.xml</value>
</programlisting>
- </step>
- <step>
- <para>
- Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Indentity_Store-Step-5"
/>
- </para>
+ </step>
+ <step>
+ <para>
+ Continue to <xref
linkend="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Indentity_Store-Step-5"
/>
+ </para>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </step>
- <step
id="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Indentity_Store-Step-5">
- <para>
- Uncomment the <parameter>groupTypeMappings</parameter> under
"<emphasis>Uncomment for sample LDAP configuration</emphasis>":
- </para>
-
+ </step>
+ <step
id="step-Reference_Guide-step-Reference_Guide-LDAP_Integration-LDAP_as_Default_Store-Set_up_LDAP_as_Default_Indentity_Store-Step-5">
+ <para>
+ Uncomment the <parameter>groupTypeMappings</parameter>
under "<emphasis>Uncomment for sample LDAP
configuration</emphasis>":
+ </para>
+
<programlisting language="XML"
role="XML"><entry>
<key><string>/platform/*</string></key>
<value><string>platform_type</string></value>
@@ -681,281 +681,281 @@
<value><string>organization_type</string></value>
</entry>
</programlisting>
- <para>
- Refer to <xref
linkend="exam-Reference_Guide-Examples-Default_groupTypeMappings" /> for more
information about how these <parameter>groupTypeMappings</parameter> operate.
- </para>
+ <para>
+ Refer to <xref
linkend="exam-Reference_Guide-Examples-Default_groupTypeMappings" /> for more
information about how these <parameter>groupTypeMappings</parameter> operate.
+ </para>
- </step>
- <step>
- <para>
- To use a different LDAP server or directory data, edit the DS-specific
<filename>.xml</filename> file you uncommented in <emphasis
role="bold">Step 4</emphasis> above and change the values to suit your
requirements.
- </para>
- <para>
- Refer to the list in <xref
linkend="exam-Reference_Guide-Examples-LDAP_configuration" /> for some
examples or refer to the product-specific documentation for more information.
- </para>
+ </step>
+ <step>
+ <para>
+ To use a different LDAP server or directory data, edit the
DS-specific <filename>.xml</filename> file you uncommented in <emphasis
role="bold">Step 4</emphasis> above and change the values to suit your
requirements.
+ </para>
+ <para>
+ Refer to the list in <xref
linkend="exam-Reference_Guide-Examples-LDAP_configuration" /> for some
examples or refer to the product-specific documentation for more information.
+ </para>
- </step>
- <step>
- <para>
- Start the server.
- </para>
+ </step>
+ <step>
+ <para>
+ Start the server.
+ </para>
- </step>
- <step>
- <para>
- Navigate to the portal homepage (<ulink type="http"
url="http://localhost:8080/portal" />) and log in as an administrator.
- </para>
+ </step>
+ <step>
+ <para>
+ Navigate to the portal homepage (<ulink type="http"
url="http://localhost:8080/portal" />) and log in as an administrator.
+ </para>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </section>
-
- <section id="sect-Reference_Guide-LDAP_Integration-Examples">
- <title>Examples</title>
- <example id="exam-Reference_Guide-Examples-LDAP_configuration">
- <title>LDAP configuration</title>
- <para>
- The following settings are stored in the Picketlink configuration file that is
nominated in the <filename>idm-configuration.xml</filename> file of your
deployment (under the <parameter>config</parameter> parameter of the
<parameter>PicketLinkIDMService</parameter> component):
- </para>
- <para>
- This file could be:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- The default <filename>picketlink-idm-config.xml</filename>.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-LDAP_Integration-Examples">
+ <title>Examples</title>
+ <example id="exam-Reference_Guide-Examples-LDAP_configuration">
+ <title>LDAP configuration</title>
+ <para>
+ The following settings are stored in the Picketlink configuration file
that is nominated in the <filename>idm-configuration.xml</filename> file of
your deployment (under the <parameter>config</parameter> parameter of the
<parameter>PicketLinkIDMService</parameter> component):
+ </para>
+ <para>
+ This file could be:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The default
<filename>picketlink-idm-config.xml</filename>.
+ </para>
- </listitem>
- <listitem>
- <para>
- One of the three example configuration files discussed in <xref
linkend="proc-Reference_Guide-LDAP_in_Read_only_Mode-Set_up_LDAP_read_only_Mode"
/>:
- </para>
- <simplelist>
- <member><filename>picketlink-idm-ldap-acme-config.xml</filename></member>
-
<member><filename>picketlink-idm-msad-readonly-config.xml</filename></member>
-
<member><filename>picketlink-idm-openldap-acme-config.xml</filename></member>
+ </listitem>
+ <listitem>
+ <para>
+ One of the three example configuration files discussed in
<xref
linkend="proc-Reference_Guide-LDAP_in_Read_only_Mode-Set_up_LDAP_read_only_Mode"
/>:
+ </para>
+ <simplelist>
+
<member><filename>picketlink-idm-ldap-acme-config.xml</filename></member>
+
<member><filename>picketlink-idm-msad-readonly-config.xml</filename></member>
+
<member><filename>picketlink-idm-openldap-acme-config.xml</filename></member>
- </simplelist>
+ </simplelist>
- </listitem>
- <listitem>
- <para>
- A custom file created by modifying one of the above files.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ A custom file created by modifying one of the above files.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <variablelist
id="vari-Reference_Guide-LDAP_configuration-Configuration_options">
- <title>Configuration options</title>
- <varlistentry>
- <term>ctxDNs</term>
- <listitem>
- <para>
- This is the DN that will be used as context for
<emphasis>IdentityObject</emphasis> searches. More than one value can be
specified.
- </para>
- <para>
- Some examples are:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- ou=People,o=acme,dc=example,dc=com
- </para>
+ </itemizedlist>
+ <variablelist
id="vari-Reference_Guide-LDAP_configuration-Configuration_options">
+ <title>Configuration options</title>
+ <varlistentry>
+ <term>ctxDNs</term>
+ <listitem>
+ <para>
+ This is the DN that will be used as context for
<emphasis>IdentityObject</emphasis> searches. More than one value can be
specified.
+ </para>
+ <para>
+ Some examples are:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ou=People,o=acme,dc=example,dc=com
+ </para>
- </listitem>
- <listitem>
- <para>
- ou=Roles,o=acme,dc=example,dc=com
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ ou=Roles,o=acme,dc=example,dc=com
+ </para>
- </listitem>
- <listitem>
- <para>
- ou=OrganizationUnits,o=acme,dc=example,dc=com
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ ou=OrganizationUnits,o=acme,dc=example,dc=com
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">MSAD</emphasis>:
CN=Users,DC=test,DC=domain (in two places).
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="bold">MSAD</emphasis>: CN=Users,DC=test,DC=domain (in two
places).
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>providerURL</term>
- <listitem>
- <para>
- The LDAP server connection URL. Formatted as
"ldap://localhost:<replaceable><PORT></replaceable>".
The default setting is: <emphasis>ldap://localhost:1389</emphasis>.
- </para>
- <para>
- <emphasis role="bold">MSAD</emphasis>: Should use SSL
connection (ldaps://xxx:636) for password update or creation to work.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>providerURL</term>
+ <listitem>
+ <para>
+ The LDAP server connection URL. Formatted as
"ldap://localhost:<replaceable><PORT></replaceable>".
The default setting is: <emphasis>ldap://localhost:1389</emphasis>.
+ </para>
+ <para>
+ <emphasis role="bold">MSAD</emphasis>:
Should use SSL connection (ldaps://xxx:636) for password update or creation to work.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>adminDN</term>
- <listitem>
- <para>
- The LDAP entry used to connect to the server.
- </para>
- <para>
- Some possible values are:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">RHDS or OpenDS</emphasis>:
cn=Directory Manager
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>adminDN</term>
+ <listitem>
+ <para>
+ The LDAP entry used to connect to the server.
+ </para>
+ <para>
+ Some possible values are:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">RHDS or
OpenDS</emphasis>: cn=Directory Manager
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">OpenLDAP</emphasis>:
cn=Manager,dc=my-domain,dc=com
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="bold">OpenLDAP</emphasis>: cn=Manager,dc=my-domain,dc=com
+ </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">MSAD</emphasis>: TEST\Administrator
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="bold">MSAD</emphasis>: TEST\Administrator
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>adminPassword</term>
- <listitem>
- <para>
- The password associated with the <emphasis
role="bold">adminDN</emphasis>.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>adminPassword</term>
+ <listitem>
+ <para>
+ The password associated with the <emphasis
role="bold">adminDN</emphasis>.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>customSystemProperties</term>
- <listitem>
- <para>
- This option defines the values needed to use SSL encryption with LDAP.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>customSystemProperties</term>
+ <listitem>
+ <para>
+ This option defines the values needed to use SSL encryption
with LDAP.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </example>
- <!-- Source Metadata
+ </example>
+ <!-- Source Metadata
URL:
http://anonsvn.jboss.org/repos/picketlink/idm/downloads/docs/1.0.0.GA/Ref...
Author [w/email]: Bolesław Dawidowicz (bdawidow(a)redhat.com), Jeff Yu
License: ??
--> <example
id="exam-Reference_Guide-Examples-Read_Only_groupTypeMappings">
- <title>Read Only groupTypeMappings</title>
- <para>
- The <parameter>groupTypeMappings</parameter> exposed in the
<filename>idm-configuration.xml</filename> file correspond to
<parameter>identity-object-type</parameter> values defined in the DS-specific
configuration file (referenced in <emphasis>Sub-step 3a</emphasis> of the
DS-specific procedure above).
- </para>
- <para>
- For RHDS, OpenDS and OpenLDAP the
<filename>picketlink-idm-ldap-acme-config.xml</filename> and
<filename>picketlink-idm-openldap-acme-config.xml</filename> files contain the
following values:
- </para>
- <programlistingco>
- <areaspec>
- <areaset coords=""
id="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-opends">
- <area coords="10 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-users-opends"
/>
- <area coords="14 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-groups-opends"
/>
+ <title>Read Only groupTypeMappings</title>
+ <para>
+ The <parameter>groupTypeMappings</parameter> exposed in the
<filename>idm-configuration.xml</filename> file correspond to
<parameter>identity-object-type</parameter> values defined in the DS-specific
configuration file (referenced in <emphasis>Sub-step 3a</emphasis> of the
DS-specific procedure above).
+ </para>
+ <para>
+ For RHDS, OpenDS and OpenLDAP the
<filename>picketlink-idm-ldap-acme-config.xml</filename> and
<filename>picketlink-idm-openldap-acme-config.xml</filename> files contain the
following values:
+ </para>
+ <programlistingco>
+ <areaspec>
+ <areaset coords=""
id="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-opends">
+ <area coords="10 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-users-opends"
/>
+ <area coords="14 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-groups-opends"
/>
- </areaset>
- <area coords="17 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-read-only-opends"
/>
+ </areaset>
+ <area coords="17 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-read-only-opends"
/>
- </areaspec>
-
+ </areaspec>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_LDAP/readonly-opends.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <calloutlist>
- <!-- #1 --> <callout
arearefs="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-opends">
- <para>
- The PicketLink IDM configuration file dictates that users and those two group
types be stored in LDAP.
- </para>
+ <calloutlist>
+ <!-- #1 --> <callout
arearefs="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-opends">
+ <para>
+ The PicketLink IDM configuration file dictates that users and
those two group types be stored in LDAP.
+ </para>
- </callout>
- <!-- #2 --> <callout
arearefs="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-read-only-opends">
- <para>
- An additional option defines that nothing else (except password updates) should be
written there.
- </para>
+ </callout>
+ <!-- #2 --> <callout
arearefs="area-Reference_Guide-LDAP_Integration-Examples-Read_Only_groupTypeMappings-config-read-only-opends">
+ <para>
+ An additional option defines that nothing else (except
password updates) should be written there.
+ </para>
- </callout>
+ </callout>
- </calloutlist>
+ </calloutlist>
- </programlistingco>
-
- <para>
- All groups under <emphasis role="bold">/acme/roles</emphasis>
will be stored in PicketLink IDM with the <emphasis
role="bold">acme_roles_type</emphasis> group type name and groups under
<emphasis role="bold">/acme/organization_units</emphasis> will be
stored in PicketLink IDM with <emphasis role="bold">acme_ou_type
group</emphasis> type name.
- </para>
- <para>
- For MSAD, the <parameter>identity-object-types</parameter> values in
<filename>picketlink-idm-msad-readonly-config.xml</filename> change to:
- </para>
-
+ </programlistingco>
+
+ <para>
+ All groups under <emphasis
role="bold">/acme/roles</emphasis> will be stored in PicketLink IDM
with the <emphasis role="bold">acme_roles_type</emphasis> group type
name and groups under <emphasis
role="bold">/acme/organization_units</emphasis> will be stored in
PicketLink IDM with <emphasis role="bold">acme_ou_type
group</emphasis> type name.
+ </para>
+ <para>
+ For MSAD, the <parameter>identity-object-types</parameter>
values in <filename>picketlink-idm-msad-readonly-config.xml</filename> change
to:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_LDAP/readonly-msad.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- The difference is that this configuration maps only one group type and points to the
same container in LDAP for both users and mapped groups.
- </para>
+ <para>
+ The difference is that this configuration maps only one group type and
points to the same container in LDAP for both users and mapped groups.
+ </para>
- </example>
- <example
id="exam-Reference_Guide-Examples-Default_groupTypeMappings">
- <title>Default groupTypeMappings</title>
- <para>
- The <parameter>groupTypeMappings</parameter> exposed in the
<filename>idm-configuration.xml</filename> file correspond to
<parameter>identity-object-type</parameter> values defined in the DS-specific
configuration file (referenced in <emphasis>Sub-step 3a</emphasis> of the
DS-specific procedure above).
- </para>
- <para>
- All of the supported LDAP configurations use the following values when implemented as
the default identity store:
- </para>
- <programlistingco>
- <areaspec>
- <areaset coords=""
id="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config">
- <area coords="10 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config-1"
/>
- <area coords="14 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config-2"
/>
+ </example>
+ <example
id="exam-Reference_Guide-Examples-Default_groupTypeMappings">
+ <title>Default groupTypeMappings</title>
+ <para>
+ The <parameter>groupTypeMappings</parameter> exposed in the
<filename>idm-configuration.xml</filename> file correspond to
<parameter>identity-object-type</parameter> values defined in the DS-specific
configuration file (referenced in <emphasis>Sub-step 3a</emphasis> of the
DS-specific procedure above).
+ </para>
+ <para>
+ All of the supported LDAP configurations use the following values when
implemented as the default identity store:
+ </para>
+ <programlistingco>
+ <areaspec>
+ <areaset coords=""
id="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config">
+ <area coords="10 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config-1"
/>
+ <area coords="14 40"
id="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config-2"
/>
- </areaset>
+ </areaset>
- </areaspec>
-
+ </areaspec>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_LDAP/default-ldap.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <calloutlist>
- <!-- #1 --> <callout
arearefs="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config">
- <para>
- The <parameter>groupTypeMappings</parameter> define that all groups
under <parameter>/platform</parameter> should be stored in PicketLink IDM with
the <parameter>platform_type</parameter> group type name and groups under
<parameter>/organization</parameter> should be stored in PicketLink IDM with
<parameter>organization_type</parameter> group type name.
- </para>
- <para>
- The PicketLink IDM configuration file repository maps users and those two group
types as stored in LDAP.
- </para>
+ <calloutlist>
+ <!-- #1 --> <callout
arearefs="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config">
+ <para>
+ The <parameter>groupTypeMappings</parameter>
define that all groups under <parameter>/platform</parameter> should be stored
in PicketLink IDM with the <parameter>platform_type</parameter> group type
name and groups under <parameter>/organization</parameter> should be stored in
PicketLink IDM with <parameter>organization_type</parameter> group type name.
+ </para>
+ <para>
+ The PicketLink IDM configuration file repository maps users
and those two group types as stored in LDAP.
+ </para>
- </callout>
+ </callout>
- </calloutlist>
+ </calloutlist>
- </programlistingco>
-
+ </programlistingco>
+
- </example>
+ </example>
- </section>
+ </section>
</section>
Modified:
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/AuthenticationAndIdentity/SSO.xml
===================================================================
---
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/AuthenticationAndIdentity/SSO.xml 2011-09-27
04:42:42 UTC (rev 7510)
+++
epp/docs/branches/5.2/Reference_Guide-eXoJCR-1.14/en-US/modules/AuthenticationAndIdentity/SSO.xml 2011-09-27
06:12:04 UTC (rev 7511)
@@ -4,73 +4,73 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-SSO_Single_Sign_On">
- <title>SSO - Single Sign On</title>
- <section id="sect-Reference_Guide-SSO_Single_Sign_On-Overview">
- <title>Overview</title>
- <para>
- JBoss Enterprise Portal Platform provides an implementation of Single Sign On
(<literal>SSO</literal>) as an integration and aggregation platform.
- </para>
- <para>
- When logging into the portal users can access many systems through portlets using a
single identity. In many cases, however, the portal infrastructure must be integrated with
other SSO enabled systems.
- </para>
- <para>
- There are many different Identity Management solutions available. In most cases each
SSO framework provides a unique way to plug into a Java EE application.
- </para>
- <para>
- This section will cover the implementation of four different SSO plug-ins with JBoss
Enterprise Portal Platform:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-SSO_Single_Sign_On-CAS_Central_Authentication_Service"
/>
- </para>
+ <title>SSO - Single Sign On</title>
+ <section id="sect-Reference_Guide-SSO_Single_Sign_On-Overview">
+ <title>Overview</title>
+ <para>
+ JBoss Enterprise Portal Platform provides an implementation of Single Sign On
(<literal>SSO</literal>) as an integration and aggregation platform.
+ </para>
+ <para>
+ When logging into the portal users can access many systems through portlets
using a single identity. In many cases, however, the portal infrastructure must be
integrated with other SSO enabled systems.
+ </para>
+ <para>
+ There are many different Identity Management solutions available. In most
cases each SSO framework provides a unique way to plug into a Java EE application.
+ </para>
+ <para>
+ This section will cover the implementation of four different SSO plug-ins
with JBoss Enterprise Portal Platform:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-SSO_Single_Sign_On-CAS_Central_Authentication_Service"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-SSO_Single_Sign_On-JOSSO_Java_Open_Single_Sign_On_Project"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-SSO_Single_Sign_On-JOSSO_Java_Open_Single_Sign_On_Project"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-SSO_Single_Sign_On-OpenSSO_The_Open_Web_SSO_project"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-SSO_Single_Sign_On-OpenSSO_The_Open_Web_SSO_project"
/>
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref
linkend="sect-Reference_Guide-SSO_Single_Sign_On-SPNEGO_Simple_and_Protected_GSSAPI_Negotiation_Mechanism"
/>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref
linkend="sect-Reference_Guide-SSO_Single_Sign_On-SPNEGO_Simple_and_Protected_GSSAPI_Negotiation_Mechanism"
/>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <note>
- <title>Prerequisites</title>
- <para>
- In this tutorial, the SSO server is being installed in a Tomcat environment. Tomcat
can be obtained from <ulink type="http"
url="http://tomcat.apache.org">http://tomcat.apache.org</ulink>.
- </para>
+ </itemizedlist>
+ <note>
+ <title>Prerequisites</title>
+ <para>
+ In this tutorial, the SSO server is being installed in a Tomcat
environment. Tomcat can be obtained from <ulink type="http"
url="http://tomcat.apache.org">http://tomcat.apache.org</ulink>.
+ </para>
- </note>
- <para>
- All the packages required for SSO setup can be found in a zip file located in the
<filename>jboss-epp-<replaceable>VERSION</replaceable>/gatein-sso</filename>
directory of the JBoss Enterprise Portal Platform binary package.
- </para>
- <para>
- In the following scenarios this directory will be referred to as
<replaceable>PORTAL_SSO</replaceable>.
- </para>
- <warning>
- <para>
- Users are advised to not run any portal extensions that could override the data when
manipulating the <filename>gatein.ear</filename> file directly.
- </para>
+ </note>
+ <para>
+ All the packages required for SSO setup can be found in a zip file located in
the
<filename>jboss-epp-<replaceable>VERSION</replaceable>/gatein-sso</filename>
directory of the JBoss Enterprise Portal Platform binary package.
+ </para>
+ <para>
+ In the following scenarios this directory will be referred to as
<replaceable>PORTAL_SSO</replaceable>.
+ </para>
+ <warning>
+ <para>
+ Users are advised to not run any portal extensions that could override
the data when manipulating the <filename>gatein.ear</filename> file directly.
+ </para>
- </warning>
+ </warning>
- </section>
-
- <section
id="sect-Reference_Guide-SSO_Single_Sign_On-Enabling_SSO_using_JBoss_SSO_Valve">
- <title>Enabling SSO using JBoss SSO Valve</title>
- <!-- Source Metadata
+ </section>
+
+ <section
id="sect-Reference_Guide-SSO_Single_Sign_On-Enabling_SSO_using_JBoss_SSO_Valve">
+ <title>Enabling SSO using JBoss SSO Valve</title>
+ <!-- Source Metadata
URL:
https://issues.jboss.org/browse/JBQA-4530
Author [w/email]: Marek Posolda (mposolda(a)redhat.com)
@@ -80,118 +80,118 @@
URL:
https://issues.jboss.org/browse/JBEPP-615
Author [w/email]: Marek Posolda (mposolda(a)redhat.com)
--> <para>
- The JBoss SSO valve is useful to authenticate a user on one JBoss Enterprise Portal
Platform node in a cluster and have that authentication automatically carry across to
other nodes in the cluster.
- </para>
- <para>
- This authentication can also be used in any other web applications which may require
authentication, <emphasis role="bold">provided that these applications use
same roles as the main portal instance</emphasis>. Attempting to use an SSO
authentication in an application that uses different roles may create authorization errors
(<emphasis role="bold">403</emphasis> errors, for example).
- </para>
- <para>
- More info about the JBoss SSO valve can be found at <ulink type="http"
url="http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Web_Platform...
/>.
- </para>
- <para>
- To successfully implement SSO integration, do the following:
- </para>
- <procedure
id="proc-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-SSO_Integration">
- <title>SSO Integration</title>
- <step>
- <para>
- Open the
<filename>/<replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/jbossweb.sar/server.xml</filename>
file and uncomment one of the two <parameter>Valve</parameter> entries:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- For a <emphasis>non-clustered</emphasis> implementation, uncomment:
- </para>
-
+ The JBoss SSO valve is useful to authenticate a user on one JBoss Enterprise
Portal Platform node in a cluster and have that authentication automatically carry across
to other nodes in the cluster.
+ </para>
+ <para>
+ This authentication can also be used in any other web applications which may
require authentication, <emphasis role="bold">provided that these
applications use same roles as the main portal instance</emphasis>. Attempting to
use an SSO authentication in an application that uses different roles may create
authorization errors (<emphasis role="bold">403</emphasis> errors,
for example).
+ </para>
+ <para>
+ More info about the JBoss SSO valve can be found at <ulink
type="http"
url="http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Web_Platform...
/>.
+ </para>
+ <para>
+ To successfully implement SSO integration, do the following:
+ </para>
+ <procedure
id="proc-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-SSO_Integration">
+ <title>SSO Integration</title>
+ <step>
+ <para>
+ Open the
<filename>/<replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/jbossweb.sar/server.xml</filename>
file and uncomment one of the two <parameter>Valve</parameter> entries:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ For a <emphasis>non-clustered</emphasis>
implementation, uncomment:
+ </para>
+
<programlisting language="XML" role="XML"><Valve
className="org.apache.catalina.authenticator.SingleSignOn" />
</programlisting>
- </listitem>
- <listitem>
- <para>
- For a <emphasis>clustered</emphasis> implementation, uncomment:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ For a <emphasis>clustered</emphasis>
implementation, uncomment:
+ </para>
+
<programlisting language="XML" role="XML"><Valve
className="org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn" />
</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
- <step>
- <para>
- To integrate with the JBoss SSO valve, follow <emphasis
role="bold">one</emphasis> of the procedures below to make the
necessary configuration changes in the Java Authentication and Authorization Service
(<emphasis role="bold">JAAS</emphasis>):
- </para>
- <itemizedlist>
- <listitem>
- <procedure
id="proc-Reference_Guide-SSO_Integration-Call_the_JAAS_authentication_directly">
- <title>Call the JAAS authentication directly</title>
- <step>
- <para>
- Open the
<filename>/<replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename>
file.
- </para>
+ </step>
+ <step>
+ <para>
+ To integrate with the JBoss SSO valve, follow <emphasis
role="bold">one</emphasis> of the procedures below to make the
necessary configuration changes in the Java Authentication and Authorization Service
(<emphasis role="bold">JAAS</emphasis>):
+ </para>
+ <itemizedlist>
+ <listitem>
+ <procedure
id="proc-Reference_Guide-SSO_Integration-Call_the_JAAS_authentication_directly">
+ <title>Call the JAAS authentication
directly</title>
+ <step>
+ <para>
+ Open the
<filename>/<replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename>
file.
+ </para>
- </step>
- <step>
- <para>
- Change the line that reads:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Change the line that reads:
+ </para>
+
<programlisting language="XML" role="XML"><form
name="loginForm" action="<%= contextPath +
"/login"%>" method="post" style="margin:
0px;">
</programlisting>
- <para>
- to read:
- </para>
-
+ <para>
+ to read:
+ </para>
+
<programlisting language="XML" role="XML"><form
name="loginForm" action="<%= contextPath +
"/private/j_security_check"%>" method="post"
style="margin: 0px;">
</programlisting>
- </step>
- <step>
- <para>
- Change the line that reads:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Change the line that reads:
+ </para>
+
<programlisting language="XML"
role="XML"><td><input class="UserName"
name="username"
value="<%=username%>"/></td>
</programlisting>
- <para>
- to read:
- </para>
-
+ <para>
+ to read:
+ </para>
+
<programlisting language="XML"
role="XML"><td><input class="UserName"
name="j_username"
value="<%=username%>"/></td>
</programlisting>
- </step>
- <step>
- <para>
- Change the line that reads:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Change the line that reads:
+ </para>
+
<programlisting language="XML"
role="XML"><td><input class="Password"
type="password" name="password"
value=""/></td>
</programlisting>
- <para>
- to read:
- </para>
-
+ <para>
+ to read:
+ </para>
+
<programlisting language="XML"
role="XML"><td><input class="Password"
type="password" name="j_password"
value=""/></td>
</programlisting>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </listitem>
- <listitem>
- <procedure
id="proc-Reference_Guide-SSO_Integration-Switch_to_BASIC_authentication">
- <title>Switch to <emphasis
role="bold">BASIC</emphasis> authentication</title>
- <step>
- <para>
- Change the <parameter>auth-method</parameter> element in
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename>
from <parameter>FORM</parameter> to <parameter>BASIC</parameter>:
- </para>
-
+ </listitem>
+ <listitem>
+ <procedure
id="proc-Reference_Guide-SSO_Integration-Switch_to_BASIC_authentication">
+ <title>Switch to <emphasis
role="bold">BASIC</emphasis> authentication</title>
+ <step>
+ <para>
+ Change the
<parameter>auth-method</parameter> element in
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename>
from <parameter>FORM</parameter> to <parameter>BASIC</parameter>:
+ </para>
+
<programlisting language="XML"
role="XML"><login-config>
<auth-method>BASIC</auth-method>
<realm-name>gatein-domain</realm-name>
@@ -201,1168 +201,1168 @@
</form-login-config>
</programlisting>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
+ </step>
- </procedure>
-
- <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Testing_the_SSO_Valve">
- <title>Testing the SSO Valve</title>
- <para>
- Once the JBoss SSO Valve has been enabled, it can be tested with the following
steps:
- </para>
+ </procedure>
+
+ <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Testing_the_SSO_Valve">
+ <title>Testing the SSO Valve</title>
+ <para>
+ Once the JBoss SSO Valve has been enabled, it can be tested with the
following steps:
+ </para>
- </formalpara>
- <procedure
id="proc-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Testing_the_SSO_Vavle">
- <title>Testing the SSO Vavle</title>
- <step>
- <para>
- Copy the <replaceable><PROFILE></replaceable> you enabled
the valve in (<literal>all</literal>, for example) into two new profiles
called <literal>node1</literal> and <literal>node2</literal>.
- </para>
+ </formalpara>
+ <procedure
id="proc-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Testing_the_SSO_ValVavlee">
+ <title>Testing the SSO Valve</title>
+ <step>
+ <para>
+ Copy the
<replaceable><PROFILE></replaceable> you enabled the valve in
(<literal>all</literal>, for example) into two new profiles called
<literal>node1</literal> and <literal>node2</literal>.
+ </para>
- </step>
- <step>
- <para>
- Run an instance of JBoss Enterprise Portal Platform using the
<literal>node1</literal> profile on a local machine:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Run an instance of JBoss Enterprise Portal Platform using the
<literal>node1</literal> profile on a local machine:
+ </para>
+
<programlisting>./run.sh -c node1 -Djboss.service.binding.set=ports-default
-Dexo.profiles=cluster -Djboss.messaging.ServerPeerID=0 &
</programlisting>
- </step>
- <step>
- <para>
- Start another instance using the <literal>node2</literal> profile:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Start another instance using the <literal>node2</literal>
profile:
+ </para>
+
<programlisting>./run.sh -c node2 -Djboss.service.binding.set=ports-01
-Dexo.profiles=cluster -Djboss.messaging.ServerPeerID=1 &
</programlisting>
- </step>
- <step>
- <para>
- Navigate to <ulink type="http"
url="http://localhost:8080/portal/private/classic" /> and authenticate with
the pre-configured user account "<systemitem>root</systemitem>"
(password "<systemitem>gtn</systemitem>").
- </para>
+ </step>
+ <step>
+ <para>
+ Navigate to <ulink type="http"
url="http://localhost:8080/portal/private/classic" /> and authenticate with
the pre-configured user account "<systemitem>root</systemitem>"
(password "<systemitem>gtn</systemitem>").
+ </para>
- </step>
- <step>
- <para>
- Navigate to <ulink type="http"
url="http://localhost:8180/portal/private/classic" />. You should be
automatically authenticated as user <systemitem>root</systemitem> on this node
as well.
- </para>
+ </step>
+ <step>
+ <para>
+ Navigate to <ulink type="http"
url="http://localhost:8180/portal/private/classic" />. You should be
automatically authenticated as user <systemitem>root</systemitem> on this node
as well.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Enabling_SSO_in_a_physical_cluster">
- <title>Enabling SSO in a physical cluster</title>
- <para>
- If you require SSO to work across a physical cluster of separate machines you will
need to use the <parameter>cookieDomain</parameter> attribute of the SSO
valve.
- </para>
+ </procedure>
+
+ <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Enabling_SSO_in_a_physical_cluster">
+ <title>Enabling SSO in a physical cluster</title>
+ <para>
+ If you require SSO to work across a physical cluster of separate machines
you will need to use the <parameter>cookieDomain</parameter> attribute of the
SSO valve.
+ </para>
- </formalpara>
- <procedure>
- <step>
- <para>
- Open the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/jbossweb.sar/server.xml</filename>
file.
- </para>
+ </formalpara>
+ <procedure>
+ <step>
+ <para>
+ Open the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/jbossweb.sar/server.xml</filename>
file.
+ </para>
- </step>
- <step>
- <para>
- Uncomment the line:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Uncomment the line:
+ </para>
+
<programlisting language="XML" role="XML"><!--
<Valve
className="org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn" />
-->
</programlisting>
- </step>
- <step>
- <para>
- And edit it to match the following:
- </para>
-
+ </step>
+ <step>
+ <para>
+ And edit it to match the following:
+ </para>
+
<programlisting language="XML" role="XML"><Valve
className="org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn"
cookieDomain="yourdomain.com" />
</programlisting>
- <para>
- (Where <literal>yourdomain.com</literal> is the domain used in your
cluster. For example; <ulink type="http"
url="http://machine1.yourdomain.com:8080/portal/private/classic" /> and
<ulink type="http"
url="http://machine2.yourdomain.com:8080/portal/private/classic" />)
- </para>
+ <para>
+ (Where <literal>yourdomain.com</literal> is the domain
used in your cluster. For example; <ulink type="http"
url="http://machine1.yourdomain.com:8080/portal/private/classic" /> and
<ulink type="http"
url="http://machine2.yourdomain.com:8080/portal/private/classic" />)
+ </para>
- </step>
- <step>
- <para>
- Repeat the process in the other nodes in the cluster.
- </para>
+ </step>
+ <step>
+ <para>
+ Repeat the process in the other nodes in the cluster.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <para>
- This will ensure the <literal>JSESSIONIDSSO</literal> cookie is used in
the correct domain, allowing the SSO authentication to occur.
- </para>
- <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Enabling_SSO_with_Other_Web_Applications">
- <title>Enabling SSO with Other Web Applications</title>
- <para>
- As mentioned earlier, in order to use SSO authentication between JBoss Enterprise
Portal Platform instances and other web applications, the roles defined in the web
application must match those used in the portal instance.
- </para>
+ </procedure>
+
+ <para>
+ This will ensure the <literal>JSESSIONIDSSO</literal> cookie is
used in the correct domain, allowing the SSO authentication to occur.
+ </para>
+ <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Enabling_SSO_with_Other_Web_Applications">
+ <title>Enabling SSO with Other Web Applications</title>
+ <para>
+ As mentioned earlier, in order to use SSO authentication between JBoss
Enterprise Portal Platform instances and other web applications, the roles defined in the
web application must match those used in the portal instance.
+ </para>
- </formalpara>
- <para>
- As an example, to use the SSO Valve to authenticate a user in both a portal instance
and the JMX Console, the following actions would be required:
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Open the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/jmx-console.war/WEB-INF/web.xml</filename>
file and edit it as follows:
- </para>
- <substeps>
- <step>
- <para>
- Change the <parameter><role-name></parameter> entry in
the <parameter><auth-constraint></parameter> element (line
<literal>110</literal>) from <literal>JBossAdmin</literal> to
<literal>users</literal>:
- </para>
-
+ </formalpara>
+ <para>
+ As an example, to use the SSO Valve to authenticate a user in both a portal
instance and the JMX Console, the following actions would be required:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Open the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/jmx-console.war/WEB-INF/web.xml</filename>
file and edit it as follows:
+ </para>
+ <substeps>
+ <step>
+ <para>
+ Change the
<parameter><role-name></parameter> entry in the
<parameter><auth-constraint></parameter> element (line
<literal>110</literal>) from <literal>JBossAdmin</literal> to
<literal>users</literal>:
+ </para>
+
<programlisting language="XML"
role="XML"><auth-constraint>
<!--<role-name>JBossAdmin</role-name>-->
<role-name>users</role-name>
</auth-constraint></programlisting>
- </step>
- <step>
- <para>
- Change the <parameter><role-name></parameter> entry in
the <parameter><security-role></parameter> element (line
<literal>120</literal>) from <literal>JBossAdmin</literal> to
<literal>users</literal>
- </para>
-
+ </step>
+ <step>
+ <para>
+ Change the
<parameter><role-name></parameter> entry in the
<parameter><security-role></parameter> element (line
<literal>120</literal>) from <literal>JBossAdmin</literal> to
<literal>users</literal>
+ </para>
+
<programlisting language="XML"
role="XML"><security-role>
<!--<role-name>JBossAdmin</role-name>-->
<role-name>users</role-name>
</security-role></programlisting>
- </step>
+ </step>
- </substeps>
+ </substeps>
- </step>
+ </step>
- </procedure>
-
- <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Testing_SSO_With_Other_Web_Applications">
- <title>Testing SSO With Other Web Applications</title>
- <para>
- To test that SSO authentication is enabled from portal instances to other web
applications (in this case, the JMX Console), do the following:
- </para>
+ </procedure>
+
+ <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Testing_SSO_With_Other_Web_Applications">
+ <title>Testing SSO With Other Web Applications</title>
+ <para>
+ To test that SSO authentication is enabled from portal instances to other
web applications (in this case, the JMX Console), do the following:
+ </para>
- </formalpara>
- <procedure
id="proc-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Test_SSO_Between_Portal_and_JMX_Console">
- <title>Test SSO Between Portal and JMX Console</title>
- <step>
- <para>
- Start a portal instance on one node:
- </para>
-
+ </formalpara>
+ <procedure
id="proc-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Test_SSO_Between_Portal_and_JMX_Console">
+ <title>Test SSO Between Portal and JMX Console</title>
+ <step>
+ <para>
+ Start a portal instance on one node:
+ </para>
+
<programlisting>./run.sh -c node1 -Djboss.service.binding.set=ports-default
-Dexo.profiles=cluster -Djboss.messaging.ServerPeerID=0 &
</programlisting>
- </step>
- <step>
- <para>
- Navigate to <ulink type="http"
url="http://localhost:8080/portal/private/classic" /> and authenticate with
the pre-configured user account "<systemitem>root</systemitem>"
(password "<systemitem>gtn</systemitem>").
- </para>
+ </step>
+ <step>
+ <para>
+ Navigate to <ulink type="http"
url="http://localhost:8080/portal/private/classic" /> and authenticate with
the pre-configured user account "<systemitem>root</systemitem>"
(password "<systemitem>gtn</systemitem>").
+ </para>
- </step>
- <step>
- <para>
- Navigate to <ulink type="http"
url="http://localhost:8080/jmx-console" />. You should be automatically
authenticated into the JMX Console.
- </para>
+ </step>
+ <step>
+ <para>
+ Navigate to <ulink type="http"
url="http://localhost:8080/jmx-console" />. You should be automatically
authenticated into the JMX Console.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Using_SSO_to_Authenticate_From_the_Public_Page">
- <title>Using SSO to Authenticate From the Public Page</title>
- <para>
- The previous configuration changes in this section are useful if a user is using a
private URL (<ulink type="http"
url="http://localhost:8080/portal/private/classic" />, for example) to log in
to the portal instance.
- </para>
+ </procedure>
+
+ <formalpara
id="form-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Using_SSO_to_Authenticate_From_the_Public_Page">
+ <title>Using SSO to Authenticate From the Public Page</title>
+ <para>
+ The previous configuration changes in this section are useful if a user
is using a private URL (<ulink type="http"
url="http://localhost:8080/portal/private/classic" />, for example) to log in
to the portal instance.
+ </para>
- </formalpara>
- <para>
- Further changes are needed however, if SSO authentication is required to work with the
<guilabel>Sign In</guilabel> button on the front page of the portal (<ulink
type="http" url="http://localhost:8080/portal/public/classic" />).
- </para>
- <para>
- To enable this functionality, the <guilabel>Sign In</guilabel> link must
redirect to the <filename>login.jsp</filename> file edited earlier to call the
JAAS authentication directly.
- </para>
- <procedure
id="proc-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Redirect_to_Use_SSO_Valve_Authentication">
- <title>Redirect to Use SSO Valve Authentication</title>
- <step>
- <para>
- Open the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename>
file and edit the line:
- </para>
-
+ </formalpara>
+ <para>
+ Further changes are needed however, if SSO authentication is required to work
with the <guilabel>Sign In</guilabel> button on the front page of the portal
(<ulink type="http"
url="http://localhost:8080/portal/public/classic" />).
+ </para>
+ <para>
+ To enable this functionality, the <guilabel>Sign In</guilabel>
link must redirect to the <filename>login.jsp</filename> file edited earlier
to call the JAAS authentication directly.
+ </para>
+ <procedure
id="proc-Reference_Guide-Enabling_SSO_using_JBoss_SSO_Valve-Redirect_to_Use_SSO_Valve_Authentication">
+ <title>Redirect to Use SSO Valve Authentication</title>
+ <step>
+ <para>
+ Open the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename>
file and edit the line:
+ </para>
+
<programlisting language="Java" role="java"><a
class="Login"
onclick="$signInAction"><%=_ctx.appRes("UILoginForm.label.Signin")%></a>
</programlisting>
- <para>
- To read:
- </para>
-
+ <para>
+ To read:
+ </para>
+
<programlisting language="Java" role="java"><a
class="Login"
href="/portal/private/classic"><%=_ctx.appRes("UILoginForm.label.Signin")%></a>
</programlisting>
- </step>
- <step>
- <para>
- Open the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename>
file and change the line:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Open the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename>
file and change the line:
+ </para>
+
<programlisting language="Java" role="java"><a
onclick="$signInAction"><%=_ctx.appRes("UILogoPortlet.action.signin")%></a>
</programlisting>
- <para>
- To read:
- </para>
-
+ <para>
+ To read:
+ </para>
+
<programlisting language="Java" role="java"><a
href="/portal/private/classic"><%=_ctx.appRes("UILogoPortlet.action.signin")%></a>
</programlisting>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </section>
-
- <section
id="sect-Reference_Guide-SSO_Single_Sign_On-CAS_Central_Authentication_Service">
- <title>CAS - Central Authentication Service</title>
- <para>
- This Single Sign On plugin enables seamless integration between JBoss Enterprise
Portal Platform and the Central Authentication Service (<emphasis
role="bold">CAS</emphasis>) Single Sign On Framework. Details about CAS
can be found <ulink
url="http://www.ja-sig.org/products/cas/">here</ulink>.
- </para>
- <procedure
id="proc-Reference_Guide-CAS_Central_Authentication_Service-CAS_server">
- <title>CAS server</title>
- <step>
- <para>
- Set up the server to authenticate against the portal login module.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-SSO_Single_Sign_On-CAS_Central_Authentication_Service">
+ <title>CAS - Central Authentication Service</title>
+ <para>
+ This Single Sign On plugin enables seamless integration between JBoss
Enterprise Portal Platform and the Central Authentication Service (<emphasis
role="bold">CAS</emphasis>) Single Sign On Framework. Details about CAS
can be found <ulink
url="http://www.ja-sig.org/products/cas/">here</ulink>.
+ </para>
+ <procedure
id="proc-Reference_Guide-CAS_Central_Authentication_Service-CAS_server">
+ <title>CAS server</title>
+ <step>
+ <para>
+ Set up the server to authenticate against the portal login module.
+ </para>
- </step>
- <step>
- <para>
- Downloaded CAS from <ulink type="http"
url="http://www.jasig.org/cas/download">http://www.jasig.org...;.
- </para>
+ </step>
+ <step>
+ <para>
+ Downloaded CAS from <ulink type="http"
url="http://www.jasig.org/cas/download">http://www.jasig.org...;.
+ </para>
- </step>
- <step>
- <para>
- Extract the downloaded file into a suitable location. This location will be referred
to as <replaceable>CAS_DIR</replaceable> in the following example.
- </para>
+ </step>
+ <step>
+ <para>
+ Extract the downloaded file into a suitable location. This location
will be referred to as <replaceable>CAS_DIR</replaceable> in the following
example.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <para>
- The simplest way to configure the web archive is to make the necessary changes
directly into the CAS codebase.
- </para>
- <note>
- <para>
- To perform the final build step and complete these instructions you will need the
Apache Maven 2. Download it from <ulink type="http"
url="http://maven.apache.org/download.html">here</ulink>.
- </para>
+ </procedure>
+
+ <para>
+ The simplest way to configure the web archive is to make the necessary
changes directly into the CAS codebase.
+ </para>
+ <note>
+ <para>
+ To perform the final build step and complete these instructions you will
need the Apache Maven 2. Download it from <ulink type="http"
url="http://maven.apache.org/download.html">here</ulink>.
+ </para>
- </note>
- <para>
- The CAS Server Plugin makes secure callbacks to a RESTful service installed on the
remote JBoss Enterprise Portal Platform server to authenticate a user.
- </para>
- <para>
- In order for the plugin to function correctly, it needs to be properly configured to
connect to this service. This configuration is controlled by the
<filename>cas.war/WEB-INF/deployerConfigContext.xml </filename> file.
- </para>
- <procedure
id="proc-Reference_Guide-CAS_Central_Authentication_Service-Modifying_CAS_server">
- <title>Modifying CAS server</title>
- <step>
- <para>
- Open
<filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml</filename>
- </para>
+ </note>
+ <para>
+ The CAS Server Plugin makes secure callbacks to a RESTful service installed
on the remote JBoss Enterprise Portal Platform server to authenticate a user.
+ </para>
+ <para>
+ In order for the plugin to function correctly, it needs to be properly
configured to connect to this service. This configuration is controlled by the
<filename>cas.war/WEB-INF/deployerConfigContext.xml </filename> file.
+ </para>
+ <procedure
id="proc-Reference_Guide-CAS_Central_Authentication_Service-Modifying_CAS_server">
+ <title>Modifying CAS server</title>
+ <step>
+ <para>
+ Open
<filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml</filename>
+ </para>
- </step>
- <step>
- <para>
- Replace this code:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Replace this code:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default102.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- with:
- </para>
-
+ <para>
+ with:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default103.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- Make sure to set the <emphasis>host</emphasis>,
<emphasis>port</emphasis> and <emphasis>context</emphasis> with
the values corresponding to your portal (also available in
<filename><replaceable>PORTAL_SSO</replaceable>/cas/plugin/WEB-INF/deployerConfigContext.xml</filename>).
- </para>
+ <para>
+ Make sure to set the <emphasis>host</emphasis>,
<emphasis>port</emphasis> and <emphasis>context</emphasis> with
the values corresponding to your portal (also available in
<filename><replaceable>PORTAL_SSO</replaceable>/cas/plugin/WEB-INF/deployerConfigContext.xml</filename>).
+ </para>
- </step>
- <step>
- <para>
- Copy
<filename><replaceable>PORTAL_SSO</replaceable>/cas/plugin/WEB-INF/lib/sso-cas-plugin-<VERSION>.jar</filename>
and
<filename><replaceable>PORTAL_SSO</replaceable>/cas/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar</filename>
into the
<filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp/src/main/webapp/WEB-INF/lib</filename>
created directory.
- </para>
+ </step>
+ <step>
+ <para>
+ Copy
<filename><replaceable>PORTAL_SSO</replaceable>/cas/plugin/WEB-INF/lib/sso-cas-plugin-<VERSION>.jar</filename>
and
<filename><replaceable>PORTAL_SSO</replaceable>/cas/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar</filename>
into the
<filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp/src/main/webapp/WEB-INF/lib</filename>
created directory.
+ </para>
- </step>
- <step>
- <para>
- If you have not already done so, download an instance of Tomcat and extract it into
a suitable location (which will be called <filename>TOMCAT_HOME</filename> for
these instructions).
- </para>
+ </step>
+ <step>
+ <para>
+ If you have not already done so, download an instance of Tomcat and
extract it into a suitable location (which will be called
<filename>TOMCAT_HOME</filename> for these instructions).
+ </para>
- </step>
- <step>
- <para>
- Edit <filename>TOMCAT_HOME/conf/server.xml</filename> and change the
8080 port to 8888 to avoid a conflict with the default JBoss Enterprise Portal Platform .
- </para>
- <note>
- <para>
- If JBoss Enterprise Portal Platform is running on the same machine as Tomcat other
ports will need to be changed in addition to 8080 in order to avoid conflicts. They can be
changed to any free port. For example; you can change the admin port from 8005 to 8805 and
the AJP port from 8009 to 8809.
- </para>
+ </step>
+ <step>
+ <para>
+ Edit <filename>TOMCAT_HOME/conf/server.xml</filename> and
change the 8080 port to 8888 to avoid a conflict with the default JBoss Enterprise Portal
Platform .
+ </para>
+ <note>
+ <para>
+ If JBoss Enterprise Portal Platform is running on the same
machine as Tomcat other ports will need to be changed in addition to 8080 in order to
avoid conflicts. They can be changed to any free port. For example; you can change the
admin port from 8005 to 8805 and the AJP port from 8009 to 8809.
+ </para>
- </note>
+ </note>
- </step>
- <step>
- <para>
- Navigate locally to the
<filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp</filename>
directory and execute the following command:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Navigate locally to the
<filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp</filename>
directory and execute the following command:
+ </para>
+
<programlisting>mvn install
</programlisting>
- </step>
- <step>
- <para>
- Copy the
<filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp/target/cas.war</filename>
file into the <filename>TOMCAT_HOME/webapps</filename> directory.
- </para>
- <para>
- Tomcat should start without issue and should be accessible at <ulink
type="http"
url="http://localhost:8888/cas">http://localhost:8888/cas</ulink>.
- </para>
- <note>
- <para>
- At this stage the login functionality will not be available.
- </para>
+ </step>
+ <step>
+ <para>
+ Copy the
<filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp/target/cas.war</filename>
file into the <filename>TOMCAT_HOME/webapps</filename> directory.
+ </para>
+ <para>
+ Tomcat should start without issue and should be accessible at
<ulink type="http"
url="http://localhost:8888/cas">http://localhost:8888/cas</ulink>.
+ </para>
+ <note>
+ <para>
+ At this stage the login functionality will not be available.
+ </para>
- </note>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/AuthenticationAndIdentity/SSO/cas.png"
format="PNG" scale="100" width="444" />
- </imageobject>
+ </note>
+ <mediaobject>
+ <imageobject>
+ <imagedata
fileref="images/AuthenticationAndIdentity/SSO/cas.png" format="PNG"
scale="100" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
+ </step>
- </procedure>
-
- <procedure
id="proc-Reference_Guide-CAS_Central_Authentication_Service-Setup_the_CAS_client">
- <title>Setup the CAS client</title>
- <step>
- <para>
- Copy all the libraries from the
<filename><replaceable>PORTAL_SSO</replaceable>/cas/gatein.ear/lib</filename>
directory into the
<filename>JBOSS_HOME/server/default/deploy/gatein.ear/lib</filename>)
directory.
- </para>
+ </procedure>
+
+ <procedure
id="proc-Reference_Guide-CAS_Central_Authentication_Service-Setup_the_CAS_client">
+ <title>Setup the CAS client</title>
+ <step>
+ <para>
+ Copy all the libraries from the
<filename><replaceable>PORTAL_SSO</replaceable>/cas/gatein.ear/lib</filename>
directory into the
<filename>JBOSS_HOME/server/default/deploy/gatein.ear/lib</filename>)
directory.
+ </para>
- </step>
- <step>
- <para>
- Edit the
<filename>jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename>
and uncomment this section:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Edit the
<filename>jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename>
and uncomment this section:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default105.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- There's a line comment already in this source file to assist you.
- </para>
+ <para>
+ There's a line comment already in this source file to assist
you.
+ </para>
- </step>
- <step>
- <para>
- The installation can be tested at this point (assuming the CAS server on Tomcat is
running):
- </para>
- <procedure>
- <step>
- <para>
- Start (or restart) JBoss Enterprise Portal Platform and direct your web browser to
<ulink type="http"
url="http://localhost:8888/cas">http://localhost:8888/cas</ulink>.
- </para>
+ </step>
+ <step>
+ <para>
+ The installation can be tested at this point (assuming the CAS server
on Tomcat is running):
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Start (or restart) JBoss Enterprise Portal Platform and
direct your web browser to <ulink type="http"
url="http://localhost:8888/cas">http://localhost:8888/cas</ulink>.
+ </para>
- </step>
- <step>
- <para>
- Login with the username <literal>root</literal> and the password
<literal>gtn</literal> (or any other account created through the portal).
- </para>
+ </step>
+ <step>
+ <para>
+ Login with the username <literal>root</literal>
and the password <literal>gtn</literal> (or any other account created through
the portal).
+ </para>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </step>
+ </step>
- </procedure>
-
- <para>
- To utilize the Central Authentication Service, JBoss Enterprise Portal Platform needs
to redirect all user authentication to the CAS server.
- </para>
- <para>
- Information about where the CAS is hosted must be properly configured within the JBoss
Enterprise Portal Platform instance. The required configuration is done by modifying three
files.
- </para>
- <procedure
id="proc-Reference_Guide-CAS_Central_Authentication_Service-Redirect_to_CAS">
- <title>Redirect to CAS</title>
- <step>
- <para>
- Modify the '<emphasis role="bold">Sign In</emphasis>'
link in the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename>
file as follows:
- </para>
-
+ </procedure>
+
+ <para>
+ To utilize the Central Authentication Service, JBoss Enterprise Portal
Platform needs to redirect all user authentication to the CAS server.
+ </para>
+ <para>
+ Information about where the CAS is hosted must be properly configured within
the JBoss Enterprise Portal Platform instance. The required configuration is done by
modifying three files.
+ </para>
+ <procedure
id="proc-Reference_Guide-CAS_Central_Authentication_Service-Redirect_to_CAS">
+ <title>Redirect to CAS</title>
+ <step>
+ <para>
+ Modify the '<emphasis role="bold">Sign
In</emphasis>' link in the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename>
file as follows:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default106.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Modify the '<emphasis role="bold">Sign In</emphasis>'
link in the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename>
file as follows:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Modify the '<emphasis role="bold">Sign
In</emphasis>' link in the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename>
file as follows:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default107.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Replace the entire contents of
<filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Replace the entire contents of
<filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default108.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Add the following Filters at the top of the filter chain in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Add the following Filters at the top of the filter chain in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default109.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Replace the <literal>InitiateLoginServlet</literal> declaration in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> with:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Replace the <literal>InitiateLoginServlet</literal>
declaration in <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>
with:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default110.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
+ </step>
- </procedure>
-
- <para>
- Once these changes have been made, all links to the user authentication pages will
redirect to the CAS centralized authentication form and CAS can be used as an SSO
implementation in your portal.
- </para>
+ </procedure>
+
+ <para>
+ Once these changes have been made, all links to the user authentication pages
will redirect to the CAS centralized authentication form and CAS can be used as an SSO
implementation in your portal.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-SSO_Single_Sign_On-JOSSO_Java_Open_Single_Sign_On_Project">
- <title>JOSSO - Java Open Single Sign-On Project</title>
- <para>
- This Single Sign On plugin enables seamless integration between JBoss Enterprise
Portal Platform and the Java Open Single Sign-On Project (<emphasis
role="bold">JOSSO</emphasis>) Single Sign On Framework. Details about
JOSSO can be found at <ulink
url="http://www.josso.org">www.josso.org</ulink>.
- </para>
- <para>
- This section details setting up the JOSSO server to authenticate against the JBoss
Enterprise Portal Platform login module.
- </para>
- <procedure
id="proc-Reference_Guide-JOSSO_Java_Open_Single_Sign_On_Project-JOSSO_server">
- <title>JOSSO server</title>
- <step>
- <para>
- Download JOSSO from <ulink type="http"
url="http://sourceforge.net/projects/josso/files/">http://so...;.
- </para>
- <note>
- <para>
- Use the package that embeds Apache Tomcat. The integration was tested with
JOSSO-1.8.1.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-SSO_Single_Sign_On-JOSSO_Java_Open_Single_Sign_On_Project">
+ <title>JOSSO - Java Open Single Sign-On Project</title>
+ <para>
+ This Single Sign On plugin enables seamless integration between JBoss
Enterprise Portal Platform and the Java Open Single Sign-On Project (<emphasis
role="bold">JOSSO</emphasis>) Single Sign On Framework. Details about
JOSSO can be found at <ulink
url="http://www.josso.org">www.josso.org</ulink>.
+ </para>
+ <para>
+ This section details setting up the JOSSO server to authenticate against the
JBoss Enterprise Portal Platform login module.
+ </para>
+ <procedure
id="proc-Reference_Guide-JOSSO_Java_Open_Single_Sign_On_Project-JOSSO_server">
+ <title>JOSSO server</title>
+ <step>
+ <para>
+ Download JOSSO from <ulink type="http"
url="http://sourceforge.net/projects/josso/files/">http://so...;.
+ </para>
+ <note>
+ <para>
+ Use the package that embeds Apache Tomcat. The integration was
tested with JOSSO-1.8.1.
+ </para>
- </note>
+ </note>
- </step>
- <step>
- <para>
- Extract the package into what will be called
<filename>JOSSO_HOME</filename> in this example.
- </para>
+ </step>
+ <step>
+ <para>
+ Extract the package into what will be called
<filename>JOSSO_HOME</filename> in this example.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <procedure
id="proc-Reference_Guide-JOSSO_Java_Open_Single_Sign_On_Project-Modifying_JOSSO_server">
- <title>Modifying JOSSO server</title>
- <step>
- <para>
- Copy the files from
<filename><replaceable>PORTAL_SSO</replaceable>/josso/plugin</filename>
into the <filename>JOSSO_HOME</filename> directory created in the last step.
- </para>
- <para>
- This action should replace or add the following files to the
<filename>JOSSO_HOME/webapps/josso/WEB-INF/lib</filename> directory:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>JOSSO_HOME/lib/josso-gateway-config.xml</filename>
- </para>
+ </procedure>
+
+ <procedure
id="proc-Reference_Guide-JOSSO_Java_Open_Single_Sign_On_Project-Modifying_JOSSO_server">
+ <title>Modifying JOSSO server</title>
+ <step>
+ <para>
+ Copy the files from
<filename><replaceable>PORTAL_SSO</replaceable>/josso/plugin</filename>
into the <filename>JOSSO_HOME</filename> directory created in the last step.
+ </para>
+ <para>
+ This action should replace or add the following files to the
<filename>JOSSO_HOME/webapps/josso/WEB-INF/lib</filename> directory:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+
<filename>JOSSO_HOME/lib/josso-gateway-config.xml</filename>
+ </para>
- </listitem>
- <listitem>
- <para>
- <filename>JOSSO_HOME/lib/josso-gateway-gatein-stores.xml</filename>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+
<filename>JOSSO_HOME/lib/josso-gateway-gatein-stores.xml</filename>
+ </para>
- </listitem>
- <listitem>
- <para>
- <filename>JOSSO_HOME/webapps/josso/WEB-INF/classes/gatein.properties</filename>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+
<filename>JOSSO_HOME/webapps/josso/WEB-INF/classes/gatein.properties</filename>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
- <step>
- <para>
- Edit <filename>TOMCAT_HOME/conf/server.xml</filename> file and change
the 8080 port to 8888 to avoid a conflict with the default JBoss Enterprise Portal
Platform port.
- <note>
- <title>Port Conflicts</title>
- <para>
- If JBoss Enterprise Portal Platform is running on the same machine as Tomcat,
other ports need to be changed in addition to 8080 in order to avoid port conflicts. They
can be changed to any free port. For example, you can change admin port from 8005 to 8805,
and AJP port from 8009 to 8809.
- </para>
+ </step>
+ <step>
+ <para>
+ Edit <filename>TOMCAT_HOME/conf/server.xml</filename>
file and change the 8080 port to 8888 to avoid a conflict with the default JBoss
Enterprise Portal Platform port.
+ <note>
+ <title>Port Conflicts</title>
+ <para>
+ If JBoss Enterprise Portal Platform is running on the same
machine as Tomcat, other ports need to be changed in addition to 8080 in order to avoid
port conflicts. They can be changed to any free port. For example, you can change admin
port from 8005 to 8805, and AJP port from 8009 to 8809.
+ </para>
- </note>
+ </note>
- </para>
+ </para>
- </step>
- <step>
- <para>
- Tomcat should now start and allow access to <ulink type="http"
url="http://localhost:8888/josso/signon/login.do">http://localhost:8888/josso/signon/login.do</ulink>
but at this stage login will not be available.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/AuthenticationAndIdentity/SSO/opensso.png"
format="PNG" width="444" />
- </imageobject>
+ </step>
+ <step>
+ <para>
+ Tomcat should now start and allow access to <ulink
type="http"
url="http://localhost:8888/josso/signon/login.do">http://localhost:8888/josso/signon/login.do</ulink>
but at this stage login will not be available.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata
fileref="images/AuthenticationAndIdentity/SSO/opensso.png"
format="PNG" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
+ </step>
- </procedure>
-
- <procedure
id="proc-Reference_Guide-JOSSO_Java_Open_Single_Sign_On_Project-Setup_the_JOSSO_client">
- <title>Setup the JOSSO client</title>
- <step>
- <para>
- Copy the library files from
<filename><replaceable>PORTAL_SSO</replaceable>/josso/gatein.ear/lib</filename>
into <filename>gatein.ear/lib</filename>
- </para>
+ </procedure>
+
+ <procedure
id="proc-Reference_Guide-JOSSO_Java_Open_Single_Sign_On_Project-Setup_the_JOSSO_client">
+ <title>Setup the JOSSO client</title>
+ <step>
+ <para>
+ Copy the library files from
<filename><replaceable>PORTAL_SSO</replaceable>/josso/gatein.ear/lib</filename>
into <filename>gatein.ear/lib</filename>
+ </para>
- </step>
- <step>
- <para>
- Copy the
<filename><replaceable>PORTAL_SSO</replaceable>/josso/gatein.ear/02portal.war/WEB-INF/classes/josso-agent-config.xml</filename>
file into the <filename>gatein.ear/02portal.war/WEB-INF/classes</filename>
directory.
- </para>
+ </step>
+ <step>
+ <para>
+ Copy the
<filename><replaceable>PORTAL_SSO</replaceable>/josso/gatein.ear/02portal.war/WEB-INF/classes/josso-agent-config.xml</filename>
file into the <filename>gatein.ear/02portal.war/WEB-INF/classes</filename>
directory.
+ </para>
- </step>
- <step>
- <para>
- Edit
<filename>jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename>
and uncomment this section:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Edit
<filename>jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename>
and uncomment this section:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default111.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- The installation can be tested at this point.
- </para>
- <procedure>
- <step>
- <para>
- Start (or restart) JBoss Enterprise Portal Platform, and (assuming the JOSSO
server on Tomcat is running) direct your browser to <ulink type="http"
url="http://localhost:8888/josso/signon/login.do">http://localhost:8888/josso/signon/login.do</ulink>.
- </para>
+ </step>
+ <step>
+ <para>
+ The installation can be tested at this point.
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Start (or restart) JBoss Enterprise Portal Platform, and
(assuming the JOSSO server on Tomcat is running) direct your browser to <ulink
type="http"
url="http://localhost:8888/josso/signon/login.do">http://localhost:8888/josso/signon/login.do</ulink>.
+ </para>
- </step>
- <step>
- <para>
- Login with the username <literal>root</literal> and the password
<literal>gtn</literal> or any account created through the portal.
- </para>
+ </step>
+ <step>
+ <para>
+ Login with the username <literal>root</literal>
and the password <literal>gtn</literal> or any account created through the
portal.
+ </para>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </step>
+ </step>
- </procedure>
-
- <para>
- The next part of the process is to redirect all user authentication to the JOSSO
server.
- </para>
- <para>
- Information about where the JOSSO server is hosted must be properly configured within
the JBoss Enterprise Portal Platform instance. The required configuration is done by
modifying four files:
- </para>
- <procedure
id="proc-Reference_Guide-JOSSO_Java_Open_Single_Sign_On_Project-Setup_the_portal_to_redirect_to_JOSSO">
- <title>Setup the portal to redirect to JOSSO</title>
- <step>
- <para>
- In the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename>
file modify the 'Sign In' link as follows:
- </para>
-
+ </procedure>
+
+ <para>
+ The next part of the process is to redirect all user authentication to the
JOSSO server.
+ </para>
+ <para>
+ Information about where the JOSSO server is hosted must be properly
configured within the JBoss Enterprise Portal Platform instance. The required
configuration is done by modifying four files:
+ </para>
+ <procedure
id="proc-Reference_Guide-JOSSO_Java_Open_Single_Sign_On_Project-Setup_the_portal_to_redirect_to_JOSSO">
+ <title>Setup the portal to redirect to JOSSO</title>
+ <step>
+ <para>
+ In the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename>
file modify the 'Sign In' link as follows:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default112.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Modify the '<emphasis role="bold">Sign In</emphasis>'
link in the
<filename>gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename>
file as follows:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Modify the '<emphasis role="bold">Sign
In</emphasis>' link in the
<filename>gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename>
file as follows:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default113.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Replace the entire contents of
<filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Replace the entire contents of
<filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default114.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Add the following Filters to the top of the filter chain in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Add the following Filters to the top of the filter chain in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default115.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Replace the <literal>InitiateLoginServlet</literal> declaration in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> with:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Replace the <literal>InitiateLoginServlet</literal>
declaration in <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>
with:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default116.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Remove the <literal>PortalLoginController</literal> servlet declaration
and mapping in <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>
- </para>
+ </step>
+ <step>
+ <para>
+ Remove the <literal>PortalLoginController</literal>
servlet declaration and mapping in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>
+ </para>
- </step>
+ </step>
- </procedure>
-
- <para>
- From now on, all links redirecting to the user authentication pages will redirect to
the JOSSO centralized authentication form.
- </para>
+ </procedure>
+
+ <para>
+ From now on, all links redirecting to the user authentication pages will
redirect to the JOSSO centralized authentication form.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-SSO_Single_Sign_On-OpenSSO_The_Open_Web_SSO_project">
- <title>OpenSSO - The Open Web SSO project</title>
- <para>
- This Single Sign On plugin enables seamless integration between JBoss Enterprise
Portal Platform and the Open Web SSO project (<emphasis
role="bold">OpenSSO</emphasis>) Single Sign On Framework. Details about
OpenSSO can be found <ulink
url="https://opensso.dev.java.net/">here</ulink>.
- </para>
- <para>
- This section details the setting up of OpenSSO server to authenticate against the
JBoss Enterprise Portal Platform login module.
- </para>
- <procedure
id="proc-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Obtaining_OpenSSO">
- <title>Obtaining OpenSSO</title>
- <step>
- <para>
- Download OpenSSO from <ulink type="http"
url="https://opensso.dev.java.net/public/use/index.html">htt...;.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-SSO_Single_Sign_On-OpenSSO_The_Open_Web_SSO_project">
+ <title>OpenSSO - The Open Web SSO project</title>
+ <para>
+ This Single Sign On plugin enables seamless integration between JBoss
Enterprise Portal Platform and the Open Web SSO project (<emphasis
role="bold">OpenSSO</emphasis>) Single Sign On Framework. Details about
OpenSSO can be found <ulink
url="https://opensso.dev.java.net/">here</ulink>.
+ </para>
+ <para>
+ This section details the setting up of OpenSSO server to authenticate against
the JBoss Enterprise Portal Platform login module.
+ </para>
+ <procedure
id="proc-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Obtaining_OpenSSO">
+ <title>Obtaining OpenSSO</title>
+ <step>
+ <para>
+ Download OpenSSO from <ulink type="http"
url="https://opensso.dev.java.net/public/use/index.html">htt...;.
+ </para>
- </step>
- <step>
- <para>
- Extract the package into a suitable location. This location will be referred to as
<filename>OPENSSO_HOME</filename> in this example.
- </para>
+ </step>
+ <step>
+ <para>
+ Extract the package into a suitable location. This location will be
referred to as <filename>OPENSSO_HOME</filename> in this example.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <para>
- To configure the web server as required, it is simpler to directly modify the source
files.
- </para>
- <para>
- The first step is to add the JBoss Enterprise Portal Platform Authentication Plugin.
- </para>
- <para>
- The plugin makes secure callbacks to a RESTful service installed on the remote JBoss
Enterprise Portal Platform server to authenticate a user.
- </para>
- <para>
- In order for the plugin to function correctly, it needs to be properly configured to
connect to this service. This configuration is done via the
<filename>opensso.war/config/auth/default/AuthenticationPlugin.xml</filename>
file.
- </para>
- <procedure
id="proc-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Modifying_OpenSSO_server">
- <title>Modifying OpenSSO server</title>
- <step>
- <para>
- Obtain a copy of Tomcat and extract it into a suitable location. This location will
be referred to as <filename>TOMCAT_HOME</filename> in this example.
- </para>
+ </procedure>
+
+ <para>
+ To configure the web server as required, it is simpler to directly modify the
source files.
+ </para>
+ <para>
+ The first step is to add the JBoss Enterprise Portal Platform Authentication
Plugin.
+ </para>
+ <para>
+ The plugin makes secure callbacks to a RESTful service installed on the
remote JBoss Enterprise Portal Platform server to authenticate a user.
+ </para>
+ <para>
+ In order for the plugin to function correctly, it needs to be properly
configured to connect to this service. This configuration is done via the
<filename>opensso.war/config/auth/default/AuthenticationPlugin.xml</filename>
file.
+ </para>
+ <procedure
id="proc-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Modifying_OpenSSO_server">
+ <title>Modifying OpenSSO server</title>
+ <step>
+ <para>
+ Obtain a copy of Tomcat and extract it into a suitable location. This
location will be referred to as <filename>TOMCAT_HOME</filename> in this
example.
+ </para>
- </step>
- <step>
- <para>
- Edit <filename>TOMCAT_HOME/conf/server.xml</filename> and change the
8080 port to 8888 to avoid a conflict with the default JBoss Enterprise Portal Platform
port.
- <note>
- <para>
- If JBoss Enterprise Portal Platform is running on the same machine as Tomcat,
other ports need to be changed in addition to 8080 in order to avoid port conflicts. They
can be changed to any free port. For example, you can change the admin port from 8005 to
8805 and the AJP port from 8009 to 8809.
- </para>
+ </step>
+ <step>
+ <para>
+ Edit <filename>TOMCAT_HOME/conf/server.xml</filename> and
change the 8080 port to 8888 to avoid a conflict with the default JBoss Enterprise Portal
Platform port.
+ <note>
+ <para>
+ If JBoss Enterprise Portal Platform is running on the same
machine as Tomcat, other ports need to be changed in addition to 8080 in order to avoid
port conflicts. They can be changed to any free port. For example, you can change the
admin port from 8005 to 8805 and the AJP port from 8009 to 8809.
+ </para>
- </note>
+ </note>
- </para>
+ </para>
- </step>
- <step>
- <para>
- Ensure the
<filename>TOMCAT_HOME/webapps/opensso/config/auth/default/AuthenticationPlugin.xml</filename>
file matches the following:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Ensure the
<filename>TOMCAT_HOME/webapps/opensso/config/auth/default/AuthenticationPlugin.xml</filename>
file matches the following:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default117.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Copy the following files;
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/sso-opensso-plugin-<VERSION>.jar</filename>
- </para>
+ </step>
+ <step>
+ <para>
+ Copy the following files;
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+
<filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/sso-opensso-plugin-<VERSION>.jar</filename>
+ </para>
- </listitem>
- <listitem>
- <para>
- <filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar</filename>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+
<filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar</filename>
+ </para>
- </listitem>
- <listitem>
- <para>
- <filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/commons-logging-<VERSION>.jar</filename>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+
<filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/commons-logging-<VERSION>.jar</filename>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- ...into the Tomcat directory at
<filename>TOMCAT_HOME/webapps/opensso/WEB-INF/lib</filename>.
- </para>
+ </itemizedlist>
+ <para>
+ ...into the Tomcat directory at
<filename>TOMCAT_HOME/webapps/opensso/WEB-INF/lib</filename>.
+ </para>
- </step>
- <step>
- <para>
- Copy the
<filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/classes/gatein.properties</filename>
file into the <filename>TOMCAT_HOME/webapps/opensso/WEB-INF/classes</filename>
directory.
- </para>
+ </step>
+ <step>
+ <para>
+ Copy the
<filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/classes/gatein.properties</filename>
file into the <filename>TOMCAT_HOME/webapps/opensso/WEB-INF/classes</filename>
directory.
+ </para>
- </step>
- <step>
- <para>
- Tomcat should start and be able to access <ulink type="http"
url="http://localhost:8888/opensso/UI/Login?realm=gatein">http://localhost:8888/opensso/UI/Login?realm=gatein</ulink>.
- </para>
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center"
fileref="images/AuthenticationAndIdentity/SSO/opensso-shot.png"
format="PNG" scale="110" width="444" />
- </imageobject>
- <imageobject role="fo">
- <imagedata align="center" contentwidth="150mm"
fileref="images/AuthenticationAndIdentity/SSO/opensso-shot.png"
format="PNG" width="444" />
- </imageobject>
+ </step>
+ <step>
+ <para>
+ Tomcat should start and be able to access <ulink
type="http"
url="http://localhost:8888/opensso/UI/Login?realm=gatein">http://localhost:8888/opensso/UI/Login?realm=gatein</ulink>.
+ </para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata align="center"
fileref="images/AuthenticationAndIdentity/SSO/opensso-shot.png"
format="PNG" scale="110" width="444" />
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata align="center"
contentwidth="150mm"
fileref="images/AuthenticationAndIdentity/SSO/opensso-shot.png"
format="PNG" width="444" />
+ </imageobject>
- </mediaobject>
- <note>
- <para>
- Login will not be available at this point.
- </para>
+ </mediaobject>
+ <note>
+ <para>
+ Login will not be available at this point.
+ </para>
- </note>
+ </note>
- </step>
+ </step>
- </procedure>
-
- <procedure
id="proc-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Configure_the_gatein_realm">
- <title>Configure the "gatein" realm</title>
- <step>
- <para>
- Direct your browser to <ulink type="http"
url="http://localhost:8888/opensso">http://localhost:8888/opensso</ulink>
- </para>
+ </procedure>
+
+ <procedure
id="proc-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Configure_the_gatein_realm">
+ <title>Configure the "gatein" realm</title>
+ <step>
+ <para>
+ Direct your browser to <ulink type="http"
url="http://localhost:8888/opensso">http://localhost:8888/opensso</ulink>
+ </para>
- </step>
- <step>
- <para>
- Create a default configuration.
- </para>
+ </step>
+ <step>
+ <para>
+ Create a default configuration.
+ </para>
- </step>
- <step>
- <para>
- Login as <literal>admin</literal>.
- </para>
- <important>
- <para>
- Go to the "<emphasis
role="bold">Configuration</emphasis>" tab then to
"<emphasis role="bold">Authentication</emphasis>".
- </para>
- <para>
- Follow the link to "<emphasis
role="bold">Core</emphasis>" and add a new value with the class
name
"<literal>org.gatein.sso.opensso.plugin.AuthenticationPlugin</literal>".
- </para>
- <para>
- If this is not done <literal>AuthenticationPlugin</literal> is not
available among other OpenSSO authentication modules.
- </para>
+ </step>
+ <step>
+ <para>
+ Login as <literal>admin</literal>.
+ </para>
+ <important>
+ <para>
+ Go to the "<emphasis
role="bold">Configuration</emphasis>" tab then to
"<emphasis role="bold">Authentication</emphasis>".
+ </para>
+ <para>
+ Follow the link to "<emphasis
role="bold">Core</emphasis>" and add a new value with the class
name
"<literal>org.gatein.sso.opensso.plugin.AuthenticationPlugin</literal>".
+ </para>
+ <para>
+ If this is not done
<literal>AuthenticationPlugin</literal> is not available among other OpenSSO
authentication modules.
+ </para>
- </important>
+ </important>
- </step>
- <step>
- <para>
- Go to the "<emphasis role="bold">Access
control</emphasis>" tab and create new realm called
"<literal>gatein</literal>".
- </para>
+ </step>
+ <step>
+ <para>
+ Go to the "<emphasis role="bold">Access
control</emphasis>" tab and create new realm called
"<literal>gatein</literal>".
+ </para>
- </step>
- <step>
- <procedure>
- <step>
- <para>
- Go to the new "<literal>gatein</literal>" realm and click on
the "<emphasis role="bold">Authentication</emphasis>"
tab.
- </para>
+ </step>
+ <step>
+ <procedure>
+ <step>
+ <para>
+ Go to the new
"<literal>gatein</literal>" realm and click on the
"<emphasis role="bold">Authentication</emphasis>" tab.
+ </para>
- </step>
- <step>
- <para>
- Click on "<emphasis
role="bold">ldapService</emphasis>" (at the bottom in the
"Authentication chaining" section).
- </para>
+ </step>
+ <step>
+ <para>
+ Click on "<emphasis
role="bold">ldapService</emphasis>" (at the bottom in the
"Authentication chaining" section).
+ </para>
- </step>
- <step>
- <para>
- Change the selection from "<literal>Datastore</literal>",
which is the default module in the authentication chain, to
"<literal>AuthenticationPlugin</literal>".
- </para>
+ </step>
+ <step>
+ <para>
+ Change the selection from
"<literal>Datastore</literal>", which is the default module in the
authentication chain, to "<literal>AuthenticationPlugin</literal>".
+ </para>
- </step>
+ </step>
- </procedure>
-
- <para>
- These changes enable authentication of the
"<literal>gatein</literal>" realm using the <literal>GateIn
REST</literal> service instead of the OpenSSO LDAP server.
- </para>
+ </procedure>
+
+ <para>
+ These changes enable authentication of the
"<literal>gatein</literal>" realm using the <literal>GateIn
REST</literal> service instead of the OpenSSO LDAP server.
+ </para>
- </step>
- <step>
- <para>
- Go to "<emphasis role="bold">Advanced
properties</emphasis>" and change <literal>UserProfile</literal>
from "<parameter>Required</parameter>" to
"<parameter>Dynamic</parameter>" to ensure all new users are
automatically created in the OpenSSO datastore after successful authentication.
- </para>
+ </step>
+ <step>
+ <para>
+ Go to "<emphasis role="bold">Advanced
properties</emphasis>" and change <literal>UserProfile</literal>
from "<parameter>Required</parameter>" to
"<parameter>Dynamic</parameter>" to ensure all new users are
automatically created in the OpenSSO datastore after successful authentication.
+ </para>
- </step>
- <step>
- <para>
- Increase the user privileges to allow REST access with the following procedure:
- </para>
- <procedure>
- <step>
- <para>
- Go to "<emphasis role="bold">Access
control</emphasis>", then <emphasis role="bold">Top level
realm</emphasis>, then click on the "<emphasis
role="bold">Privileges</emphasis>" tab and go to
"<emphasis role="bold">All authenticated
users</emphasis>".
- </para>
+ </step>
+ <step>
+ <para>
+ Increase the user privileges to allow REST access with the following
procedure:
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Go to "<emphasis role="bold">Access
control</emphasis>", then <emphasis role="bold">Top level
realm</emphasis>, then click on the "<emphasis
role="bold">Privileges</emphasis>" tab and go to
"<emphasis role="bold">All authenticated
users</emphasis>".
+ </para>
- </step>
- <step>
- <para>
- Check the last two checkboxes:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Read and write access only for policy properties
- </para>
+ </step>
+ <step>
+ <para>
+ Check the last two checkboxes:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Read and write access only for policy properties
+ </para>
- </listitem>
- <listitem>
- <para>
- Read and write access to all realm and policy properties
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Read and write access to all realm and policy
properties
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </step>
- <step>
- <para>
- Repeat step 7 for the '<literal>gatein</literal>' realm as
well.
- </para>
+ </step>
+ <step>
+ <para>
+ Repeat step 7 for the '<literal>gatein</literal>'
realm as well.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <!-- <para>
+ </procedure>
+
+ <!-- <para>
TODO: The above OpenSSO manual configuration could be replaced by configuration files
prepared in advance
</para> --> <procedure
id="proc-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Setup_the_OpenSSO_client">
- <title>Setup the OpenSSO client</title>
- <step>
- <para>
- Copy all libraries from the
<filename><replaceable>PORTAL_SSO</replaceable>/opensso/gatein.ear/lib</filename>
directory into the
<filename>JBOSS_HOME/server/default/deploy/gatein.ear/lib</filename>
directory.
- </para>
- <para>
- Alternatively, in a Tomcat environment, copy the libraries into the
<filename>GATEIN_HOME/lib</filename> directory.
- </para>
+ <title>Setup the OpenSSO client</title>
+ <step>
+ <para>
+ Copy all libraries from the
<filename><replaceable>PORTAL_SSO</replaceable>/opensso/gatein.ear/lib</filename>
directory into the
<filename>JBOSS_HOME/server/default/deploy/gatein.ear/lib</filename>
directory.
+ </para>
+ <para>
+ Alternatively, in a Tomcat environment, copy the libraries into the
<filename>GATEIN_HOME/lib</filename> directory.
+ </para>
- </step>
- <step>
- <para>
- Edit the
<filename>jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename>
and uncomment this section:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Edit the
<filename>jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename>
and uncomment this section:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default118.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Test the installation:
- </para>
- <procedure>
- <step>
- <para>
- Access JBoss Enterprise Portal Platform by going to <ulink
type="http"
url="http://localhost:8888/opensso/UI/Login?realm=gatein">http://localhost:8888/opensso/UI/Login?realm=gatein</ulink>
(assuming that the OpenSSO server using Tomcat is still running).
- </para>
+ </step>
+ <step>
+ <para>
+ Test the installation:
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Access JBoss Enterprise Portal Platform by going to <ulink
type="http"
url="http://localhost:8888/opensso/UI/Login?realm=gatein">http://localhost:8888/opensso/UI/Login?realm=gatein</ulink>
(assuming that the OpenSSO server using Tomcat is still running).
+ </para>
- </step>
- <step>
- <para>
- Login with the username <literal>root</literal> and the password
<literal>gtn</literal> or any account created through the portal.
- </para>
+ </step>
+ <step>
+ <para>
+ Login with the username <literal>root</literal>
and the password <literal>gtn</literal> or any account created through the
portal.
+ </para>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </step>
+ </step>
- </procedure>
-
- <para>
- The next part of the process is to redirect all user authentication to the OpenSSO
server.
- </para>
- <para>
- Information about where the OpenSSO server is hosted must be properly configured
within the Enterprise Portal Platform instance. The required configuration is done by
modifying three files:
- </para>
- <procedure
id="proc-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Setup_the_portal_to_redirect_to_OpenSSO">
- <title>Setup the portal to redirect to OpenSSO</title>
- <step>
- <para>
- Modify the '<emphasis role="bold">Sign In</emphasis>'
link in the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename>
file as follows:
- </para>
-
+ </procedure>
+
+ <para>
+ The next part of the process is to redirect all user authentication to the
OpenSSO server.
+ </para>
+ <para>
+ Information about where the OpenSSO server is hosted must be properly
configured within the Enterprise Portal Platform instance. The required configuration is
done by modifying three files:
+ </para>
+ <procedure
id="proc-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Setup_the_portal_to_redirect_to_OpenSSO">
+ <title>Setup the portal to redirect to OpenSSO</title>
+ <step>
+ <para>
+ Modify the '<emphasis role="bold">Sign
In</emphasis>' link in the
<filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename>
file as follows:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default119.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Modify the '<emphasis role="bold">Sign In</emphasis>'
link in the
<filename>gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename>
file as follows:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Modify the '<emphasis role="bold">Sign
In</emphasis>' link in the
<filename>gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename>
file as follows:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default120.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Replace the entire contents of
<filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Replace the entire contents of
<filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default121.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Add the following Filters to the top of the filter chain in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Add the following Filters to the top of the filter chain in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default122.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Replace the <literal>InitiateLoginServlet</literal> declaration in
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> with:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Replace the <literal>InitiateLoginServlet</literal>
declaration in <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>
with:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default123.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
+ </step>
- </procedure>
-
- <para>
- From now on, all links redirecting to the user authentication pages will redirect to
the OpenSSO centralized authentication form.
- </para>
+ </procedure>
+
+ <para>
+ From now on, all links redirecting to the user authentication pages will
redirect to the OpenSSO centralized authentication form.
+ </para>
- </section>
-
- <section
id="sect-Reference_Guide-SSO_Single_Sign_On-SPNEGO_Simple_and_Protected_GSSAPI_Negotiation_Mechanism">
- <title>SPNEGO - Simple and Protected GSSAPI Negotiation Mechanism</title>
- <para>
- The Simple and Protected GSSAPI Negotiation Mechanism (<emphasis
role="bold">SPNEGO</emphasis>) uses desktop credentials provided during
a desktop login to transparently authenticate a portal user through a web browser.
- </para>
- <para>
- For illustrative purposes; a typical use case would be:
- </para>
- <procedure>
- <step>
- <para>
- A user logs into their desktop computer with a login that is governed by an Active
Directory domain.
- </para>
+ </section>
+
+ <section
id="sect-Reference_Guide-SSO_Single_Sign_On-SPNEGO_Simple_and_Protected_GSSAPI_Negotiation_Mechanism">
+ <title>SPNEGO - Simple and Protected GSSAPI Negotiation
Mechanism</title>
+ <para>
+ The Simple and Protected GSSAPI Negotiation Mechanism (<emphasis
role="bold">SPNEGO</emphasis>) uses desktop credentials provided during
a desktop login to transparently authenticate a portal user through a web browser.
+ </para>
+ <para>
+ For illustrative purposes; a typical use case would be:
+ </para>
+ <procedure>
+ <step>
+ <para>
+ A user logs into their desktop computer with a login that is governed
by an Active Directory domain.
+ </para>
- </step>
- <step>
- <para>
- The user then launches a web browser to access a web application (that uses JBoss
Negotiation) hosted on JBoss Enterprise Portal Platform.
- </para>
+ </step>
+ <step>
+ <para>
+ The user then launches a web browser to access a web application
(that uses JBoss Negotiation) hosted on JBoss Enterprise Portal Platform.
+ </para>
- </step>
- <step>
- <para>
- The browser transfers the desktop credentials to the web application.
- </para>
+ </step>
+ <step>
+ <para>
+ The browser transfers the desktop credentials to the web
application.
+ </para>
- </step>
- <step>
- <para>
- JBoss EAP/AS uses background GSS messages with the Active Directory (or any Kerberos
Server) to validate the user.
- </para>
+ </step>
+ <step>
+ <para>
+ JBoss EAP/AS uses background GSS messages with the Active Directory
(or any Kerberos Server) to validate the user.
+ </para>
- </step>
- <step>
- <para>
- The user experiences a seamless single sign on (SSO) into the web application.
- </para>
+ </step>
+ <step>
+ <para>
+ The user experiences a seamless single sign on (SSO) into the web
application.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <para>
- JBoss Enterprise Portal Platform uses JBoss Negotiation to enable SPNEGO-based desktop
SSO.
- </para>
- <para>
- The following procedure outlines how to integrate SPNEGO with the JBoss Enterprise
Portal Platform.
- </para>
- <procedure
id="proc-Reference_Guide-SPNEGO_Simple_and_Protected_GSSAPI_Negotiation_Mechanism-SPNEGO_Configuration">
- <title>SPNEGO Configuration</title>
- <step>
- <para>
- Activate the Host authentication. Add the following host login module to the
<filename>jboss-as/server/<replaceable>PROFILE</replaceable>/conf/login-config.xml</filename>:
- </para>
-
+ </procedure>
+
+ <para>
+ JBoss Enterprise Portal Platform uses JBoss Negotiation to enable
SPNEGO-based desktop SSO.
+ </para>
+ <para>
+ The following procedure outlines how to integrate SPNEGO with the JBoss
Enterprise Portal Platform.
+ </para>
+ <procedure
id="proc-Reference_Guide-SPNEGO_Simple_and_Protected_GSSAPI_Negotiation_Mechanism-SPNEGO_Configuration">
+ <title>SPNEGO Configuration</title>
+ <step>
+ <para>
+ Activate the Host authentication. Add the following host login module
to the
<filename>jboss-as/server/<replaceable>PROFILE</replaceable>/conf/login-config.xml</filename>:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default124.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- The '<literal>keyTab</literal>' value should point to the keytab
file that was generated by the <literal>kadmin</literal> Kerberos tool. See
the <ulink type="http"
url="http://community.jboss.org/wiki/SettingupyourKerberosDevelopmen...
up your Kerberos Development Environment</ulink> guide for more details.
- </para>
+ <para>
+ The '<literal>keyTab</literal>' value should
point to the keytab file that was generated by the <literal>kadmin</literal>
Kerberos tool. See the <ulink type="http"
url="http://community.jboss.org/wiki/SettingupyourKerberosDevelopmen...
up your Kerberos Development Environment</ulink> guide for more details.
+ </para>
- </step>
- <step>
- <para>
- Extend the core authentication mechanisms to support SPNEGO. Under
<filename>deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml</filename>,
add a '<literal>SPNEGO</literal>' authenticators property
- </para>
-
+ </step>
+ <step>
+ <para>
+ Extend the core authentication mechanisms to support SPNEGO. Under
<filename>deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml</filename>,
add a '<literal>SPNEGO</literal>' authenticators property
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default125.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- </step>
- <step>
- <para>
- Add the Gatein SSO module binaries by adding
<filename><replaceable>PORTAL_SSO</replaceable>/spnego/gatein.ear/lib/sso-agent.jar</filename>
and
<filename><replaceable>PORTAL_SSO</replaceable>/spnego/gatein.ear/lib/spnego-<replaceable>VERSION</replaceable>-epp-GA.jar</filename>
to <filename>deploy/gatein.ear/lib</filename>.
- </para>
+ </step>
+ <step>
+ <para>
+ Add the Gatein SSO module binaries by adding
<filename><replaceable>PORTAL_SSO</replaceable>/spnego/gatein.ear/lib/sso-agent.jar</filename>
and
<filename><replaceable>PORTAL_SSO</replaceable>/spnego/gatein.ear/lib/spnego-<replaceable>VERSION</replaceable>-epp-GA.jar</filename>
to <filename>deploy/gatein.ear/lib</filename>.
+ </para>
- </step>
- <step>
- <para>
- Modifying
<filename>deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename> to
match the following:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Modifying
<filename>deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename> to
match the following:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default126.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- This activates the SPNEGO <literal>LoginModule</literal> for use with
JBoss Enterprise Portal Platform.
- </para>
+ <para>
+ This activates the SPNEGO <literal>LoginModule</literal>
for use with JBoss Enterprise Portal Platform.
+ </para>
- </step>
- <step>
- <para>
- Modify <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> to
match:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Modify
<filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> to match:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default127.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- This integrates SPNEGO support into the Portal web archive by switching
authentication mechanism from the default
"<literal>FORM</literal>"-based to
"<literal>SPNEGO</literal>"-based authentication.
- </para>
+ <para>
+ This integrates SPNEGO support into the Portal web archive by
switching authentication mechanism from the default
"<literal>FORM</literal>"-based to
"<literal>SPNEGO</literal>"-based authentication.
+ </para>
- </step>
- <step>
- <para>
- Add the following filters to the top of the Filter chain in the
<filename>web.xml</filename> file:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Add the following filters to the top of the Filter chain in the
<filename>web.xml</filename> file:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include
href="../../extras/Authentication_Identity_SSO/default128.xml"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- This integrates request pre-processing needed for SPNEGO.
- </para>
+ <para>
+ This integrates request pre-processing needed for SPNEGO.
+ </para>
- </step>
- <step>
- <para>
- Edit the '<emphasis role="bold">Sign In</emphasis>'
link in
<filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtmpl</filename>
to match the following:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Edit the '<emphasis role="bold">Sign
In</emphasis>' link in
<filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtmpl</filename>
to match the following:
+ </para>
+
<programlisting language="Java" role="Java"><xi:include
href="../../extras/Authentication_Identity_SSO/default129.java"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- This modifies the Portal's '<emphasis role="bold">Sign
In</emphasis>' link to perform SPNEGO authentication.
- </para>
+ <para>
+ This modifies the Portal's '<emphasis
role="bold">Sign In</emphasis>' link to perform SPNEGO
authentication.
+ </para>
- </step>
- <step>
- <para>
- Start the JBoss Enterprise Portal Platform;
- </para>
-
+ </step>
+ <step>
+ <para>
+ Start the JBoss Enterprise Portal Platform;
+ </para>
+
<programlisting language="Java" role="Java"><xi:include
href="../../extras/Authentication_Identity_SSO/default130.java"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"
/></programlisting>
- <para>
- The <replaceable>PROFILE</replaceable> parameter in the above command
should be replaced with the server profile modified with the above configuration.
- </para>
+ <para>
+ The <replaceable>PROFILE</replaceable> parameter in the
above command should be replaced with the server profile modified with the above
configuration.
+ </para>
- </step>
- <step>
- <para>
- Login to Kerberos:
- </para>
-
+ </step>
+ <step>
+ <para>
+ Login to Kerberos:
+ </para>
+
<programlisting>kinit -A demo
</programlisting>
- </step>
+ </step>
- </procedure>
-
- <para>
- Clicking the 'Sign In' link on the JBoss Enterprise Portal Platform should
automatically sign the 'demo' user into the portal.
- </para>
+ </procedure>
+
+ <para>
+ Clicking the 'Sign In' link on the JBoss Enterprise Portal Platform
should automatically sign the 'demo' user into the portal.
+ </para>
- </section>
-
+ </section>
+
</section>