gatein SVN: r8785 - epp/docs/branches/5.2/API_Documentation/tmp.
by do-not-reply@jboss.org
Author: jaredmorgs
Date: 2012-07-17 02:58:15 -0400 (Tue, 17 Jul 2012)
New Revision: 8785
Removed:
epp/docs/branches/5.2/API_Documentation/tmp/dist-git/
epp/docs/branches/5.2/API_Documentation/tmp/en-US/
epp/docs/branches/5.2/API_Documentation/tmp/rpm/
epp/docs/branches/5.2/API_Documentation/tmp/tar/
Log:
Removing .tmp files that were accidentally committed into the repo
12 years, 5 months
gatein SVN: r8783 - in epp/portal/branches/EPP_5_2_Branch: component/common/src/main/java/org/exoplatform/commons/xml and 3 other directories.
by do-not-reply@jboss.org
Author: ppalaga
Date: 2012-07-13 10:36:12 -0400 (Fri, 13 Jul 2012)
New Revision: 8783
Added:
epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/xml/XMLDeclarationParser.java
epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/xml/TestXMLDeclarationParser.java
Modified:
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/LocalGadgetData.java
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIGadgetEditor.java
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_de.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_en.properties
Log:
Bug 803115 - Invalid encoding in gadget source not handled properly
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/LocalGadgetData.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/LocalGadgetData.java 2012-07-12 06:19:52 UTC (rev 8782)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/LocalGadgetData.java 2012-07-13 14:36:12 UTC (rev 8783)
@@ -22,14 +22,14 @@
import org.apache.shindig.gadgets.spec.GadgetSpec;
import org.apache.shindig.gadgets.spec.ModulePrefs;
import org.chromattic.api.annotations.*;
-import org.chromattic.api.annotations.PrimaryType;
import org.chromattic.ext.format.BaseEncodingObjectFormatter;
import org.chromattic.ext.ntdef.NTFile;
import org.chromattic.ext.ntdef.Resource;
import org.chromattic.ext.ntdef.NTFolder;
-import org.exoplatform.application.gadget.EncodingDetector;
+import org.exoplatform.commons.xml.XMLDeclarationParser;
-import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
import java.util.Date;
@@ -78,9 +78,17 @@
// Get the related content
GadgetSpec spec = new GadgetSpec(Uri.parse("http://www.gatein.org"), gadgetXML);
ModulePrefs prefs = spec.getModulePrefs();
- byte[] bytes = gadgetXML.getBytes();
- String encoding = EncodingDetector.detect(new ByteArrayInputStream(bytes));
+ // detect the encoding declared in the XML source
+ // note that we do not need to detect the encoding of gadgetXML because
+ // it is a String and not a stream
+ String encoding = new XMLDeclarationParser(gadgetXML).parse().get(XMLDeclarationParser.ENCODING);
+ if (encoding == null || !Charset.isSupported(encoding)) {
+ throw new UnsupportedEncodingException(encoding);
+ }
+ // get the bytes in the declared encoding
+ byte[] bytes = gadgetXML.getBytes(encoding);
+
// Update def
def.setDescription(prefs.getDescription());
def.setThumbnail(prefs.getThumbnail().toString()); // Do something better than that
Added: epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/xml/XMLDeclarationParser.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/xml/XMLDeclarationParser.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/xml/XMLDeclarationParser.java 2012-07-13 14:36:12 UTC (rev 8783)
@@ -0,0 +1,268 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.commons.xml;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.xml.sax.SAXException;
+
+/**
+ * Parses XML 1.0 and XML 1.1 declarations. This class can be used in a
+ * situation where the actual encoding of an XML document is known but the
+ * encoding stated in the XML declaration of the given XML file needs to be
+ * determined, e.g. if it is necessary to find out if the declared encoding is
+ * the same as the actual encoding.
+ *
+ * Usage Example: <code>new XMLDeclarationParser("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").parse().get(XMLDeclarationParser.ENCODING)</code>
+ * returns <code>"UTF-8"</code>
+ *
+ * @author ppalaga(a)redhat.com
+ *
+ */
+public class XMLDeclarationParser
+{
+
+ public static final char APOS = '\'';
+ public static final char CR = '\r';
+ public static final char EQ = '=';
+ public static final char GT = '>';
+ public static final char LF = '\n';
+ public static final char LT = '<';
+ public static final char QUESTION_MARK = '?';
+ public static final char QUOT = '"';
+ public static final char SPACE = ' ';
+ public static final char TAB = '\t';
+
+ public static final String ENCODING = "encoding";
+ public static final String STANDALONE = "standalone";
+ public static final String VERSION = "version";
+ public static final String XML = "xml";
+
+ private static final int INVALID = -1;
+
+ private boolean atEndOfInput = false;
+
+ private Map<String, String> attributes = new HashMap<String, String>(4);
+
+ private StringBuilder charBuffer = new StringBuilder(16);
+ private int currentChar = INVALID;
+ private Reader in;
+ private int pos = 0;
+
+ public XMLDeclarationParser(Reader in)
+ {
+ super();
+ this.in = in;
+ }
+
+ public XMLDeclarationParser(String xml)
+ {
+ this(new StringReader(xml));
+ }
+
+ private void consumeOptionalWhiteSpace() throws IOException
+ {
+ while (true && !atEndOfInput)
+ {
+ int ch = current();
+ switch (ch)
+ {
+ case SPACE:
+ case TAB:
+ case CR:
+ case LF:
+ next();
+ break;
+ default:
+ return;
+ }
+ }
+ }
+
+ private int current() throws IOException
+ {
+ if (currentChar < 0)
+ {
+ next();
+ }
+ return currentChar;
+ }
+
+ private void ensureNotEndOfInput() throws SAXException,
+ IOException
+ {
+ if (current() < 0)
+ {
+ throw new SAXException("Unexpected end of input.");
+ }
+ }
+
+ private String key() throws IOException
+ {
+ charBuffer.setLength(0);
+ ENDOFKEY: while (true && !atEndOfInput)
+ {
+ int ch = current();
+ switch (ch)
+ {
+ case EQ:
+ case SPACE:
+ case TAB:
+ case CR:
+ case LF:
+ break ENDOFKEY;
+ default:
+ charBuffer.append((char) ch);
+ next();
+ }
+ }
+ return charBuffer.toString();
+ }
+
+ private void keyVal() throws IOException, SAXException
+ {
+ String key = key();
+ consumeOptionalWhiteSpace();
+ match(EQ);
+ consumeOptionalWhiteSpace();
+ String value = value();
+ attributes.put(key, value);
+ consumeOptionalWhiteSpace();
+ }
+
+ private void match(char toMatch) throws SAXException,
+ IOException
+ {
+ ensureNotEndOfInput();
+ int ch = current();
+ if (ch != toMatch)
+ {
+ throw new SAXException("Unexpected character '"
+ + (char) ch + "' at position " + pos + "; expected '" + toMatch
+ + "'.");
+ }
+ next();
+ }
+
+ private void match(String toMatch) throws SAXException,
+ IOException
+ {
+ for (int i = 0; i < toMatch.length(); i++)
+ {
+ match(toMatch.charAt(i));
+ }
+ }
+
+ private void matchWhiteSpace() throws IOException,
+ SAXException
+ {
+ ensureNotEndOfInput();
+ int ch = current();
+ switch (ch)
+ {
+ case SPACE:
+ case TAB:
+ case CR:
+ case LF:
+ next();
+ break;
+ default:
+ throw new SAXException(
+ "Whitespace expected at postion " + pos
+ + " of an XML declaration.");
+ }
+ consumeOptionalWhiteSpace();
+ }
+
+ private int next() throws IOException
+ {
+ if (!atEndOfInput)
+ {
+ currentChar = in.read();
+ pos++;
+ if (currentChar < 0)
+ {
+ atEndOfInput = true;
+ }
+ }
+ return currentChar;
+ }
+
+ public Map<String, String> parse() throws SAXException,
+ IOException
+ {
+ match(LT);
+ match(QUESTION_MARK);
+ match(XML);
+ matchWhiteSpace();
+
+ while (current() != QUESTION_MARK && !atEndOfInput)
+ {
+ keyVal();
+ }
+
+ match(QUESTION_MARK);
+ match(GT);
+
+ return attributes;
+ }
+
+ private String value() throws IOException, SAXException
+ {
+ ensureNotEndOfInput();
+ int quote = current();
+ switch (quote)
+ {
+ case QUOT:
+ case APOS:
+ next();
+ break;
+ default:
+ throw new SAXException("Unexpected character '"
+ + (char) quote + "' at position " + pos + "; expected '" + QUOT
+ + "' or '" + APOS + "'.");
+ }
+
+ charBuffer.setLength(0);
+ ENDOFLITERAL: while (true && !atEndOfInput)
+ {
+ int ch = current();
+ if (ch == quote)
+ {
+ next();
+ break ENDOFLITERAL;
+ }
+ else
+ {
+ charBuffer.append((char) ch);
+ next();
+ }
+ }
+ return charBuffer.toString();
+ }
+
+}
Added: epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/xml/TestXMLDeclarationParser.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/xml/TestXMLDeclarationParser.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/xml/TestXMLDeclarationParser.java 2012-07-13 14:36:12 UTC (rev 8783)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.commons.xml;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.xml.sax.SAXException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+public class TestXMLDeclarationParser extends TestCase
+{
+
+ private static Map<String, String> map(String... keyVal) {
+ Map<String, String> result = new HashMap<String, String>(4);
+ int i = 0;
+ while (i < keyVal.length) {
+ result.put(keyVal[i++], keyVal[i++]);
+ }
+ return result;
+ }
+
+ public void testUnexpectedEndOfInput() throws SAXException, IOException {
+ assertFail("<?");
+ assertFail("<?xml");
+ assertFail("<?xml ");
+ assertFail("<?xml version");
+ assertFail("<?xml version=");
+ assertFail("<?xml version= ");
+ assertFail("<?xml version='");
+ assertFail("<?xml version='1.0'");
+ assertFail("<?xml version='1.0' ");
+ assertFail("<?xml version='1.0' encoding='UTF-8'?");
+ }
+
+ private static void assertFail(String xml) throws IOException {
+ XMLDeclarationParser parser = new XMLDeclarationParser(xml);
+ try
+ {
+ parser.parse();
+ fail("XMLDeclarationParseException expected.");
+ }
+ catch (SAXException e)
+ {
+ }
+ }
+
+ public void testParse() throws SAXException, IOException {
+ /* with apos */
+ XMLDeclarationParser parser = new XMLDeclarationParser("<?xml version='1.0' encoding='UTF-8'?>");
+ Assert.assertEquals(map("version", "1.0", "encoding", "UTF-8"), parser.parse());
+
+ /* with quot */
+ parser = new XMLDeclarationParser("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+ Assert.assertEquals(map("version", "1.0", "encoding", "UTF-8"), parser.parse());
+
+ /* with some white space */
+ parser = new XMLDeclarationParser("<?xml version =\n\"1.0\" \t\t encoding=\r\"UTF-8\" ?>");
+ Assert.assertEquals(map("version", "1.0", "encoding", "UTF-8"), parser.parse());
+
+ }
+}
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIGadgetEditor.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIGadgetEditor.java 2012-07-12 06:19:52 UTC (rev 8782)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIGadgetEditor.java 2012-07-13 14:36:12 UTC (rev 8783)
@@ -51,6 +51,7 @@
import org.exoplatform.webui.form.validator.Validator;
import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
import java.util.Calendar;
/**
@@ -73,17 +74,15 @@
private String dirPath;
- private String gadgetName_;
-
public UIGadgetEditor(InitParams initParams) throws Exception
{
Param param = initParams.getParam("SampleGadget");
WebuiRequestContext context = WebuiRequestContext.getCurrentInstance();
String sample = (String)param.getMapGroovyObject(context);
addUIFormInput(new UIFormStringInput(FIELD_NAME, FIELD_NAME, null).addValidator(MandatoryValidator.class)
- .addValidator(StringLengthValidator.class, 2, 50)
- .addValidator(ResourceValidator.class)
- .addValidator(ExpressionValidator.class, "^[\\p{L}][\\p{L}._\\-\\d]+$","UIGadgetEditor.msg.Invalid"));
+ .addValidator(StringLengthValidator.class, 2, 50)
+ .addValidator(ResourceValidator.class)
+ .addValidator(ExpressionValidator.class, "^[\\p{L}][\\p{L}._\\-\\d]+$","UIGadgetEditor.msg.Invalid"));
addUIFormInput(new UIFormTextAreaInput(FIELD_SOURCE, FIELD_SOURCE, sample).addValidator(MandatoryValidator.class)
.addValidator(GadgetSpecValidator.class));
}
@@ -102,8 +101,8 @@
}
public void setGadgetName(String name) {
- UIFormStringInput uiInputName = getUIStringInput(FIELD_NAME);
- uiInputName.setValue(name);
+ UIFormStringInput uiInputName = getUIStringInput(FIELD_NAME);
+ uiInputName.setValue(name);
}
public String getSourceFullName()
@@ -124,7 +123,7 @@
//uiInputSource.setValue(uiInputSource.getValue());
if(this.isEdit()) {
- uiInputName.setEditable(false);
+ uiInputName.setEditable(false);
}
super.processRender(context);
@@ -160,18 +159,18 @@
boolean isEdit = uiForm.isEdit();
if (isEdit)
{
- gadgetName = uiForm.getSourceFullName();
+ gadgetName = uiForm.getSourceFullName();
}
else
{
- gadgetName = uiForm.getUIStringInput(UIGadgetEditor.FIELD_NAME).getValue();
+ gadgetName = uiForm.getUIStringInput(UIGadgetEditor.FIELD_NAME).getValue();
}
//
Gadget gadget = service.getGadget(gadgetName);
if(isEdit) {
- if (gadget == null)
+ if (gadget == null)
{
UIApplication uiApp = event.getRequestContext().getUIApplication();
uiApp.addMessage(new ApplicationMessage("gadget.msg.changeNotExist", null, ApplicationMessage.WARNING));
@@ -180,7 +179,7 @@
}
}
else {
- // If gadget is null we need to create it first
+ // If gadget is null we need to create it first
if (gadget == null)
{
gadget = new Gadget();
@@ -197,37 +196,46 @@
service.saveGadget(gadget);
}
else {
- UIApplication uiApp = event.getRequestContext().getUIApplication();
+ UIApplication uiApp = event.getRequestContext().getUIApplication();
uiApp.addMessage(new ApplicationMessage("UIGadgetEditor.gadget.msg.gadgetIsExist", null, ApplicationMessage.WARNING));
return;
- }
+ }
}
//
Source source = new Source(gadgetName, "application/xml");
source.setTextContent(text);
source.setLastModified(Calendar.getInstance());
- sourceStorage.saveSource(gadget, source);
- uiManagement.removeChild(UIGadgetEditor.class);
- // This will update the source and also update the gadget related
- // cached meta data
- // from the source
- uiManagement.initData();
- uiManagement.setSelectedGadget(gadget.getName());
- event.getRequestContext().addUIComponentToUpdateByAjax(uiManagement);
-
- //Send request to invalidate the cache to Shindig
- String gadgetServerUrl = GadgetUtil.getGadgetServerUrl();
- String gadgetUrl = GadgetUtil.reproduceUrl(gadget.getUrl(), gadget.isLocal());
- String metadataUrl = gadgetServerUrl + (gadgetServerUrl.endsWith("/") ? "" : "/") + "metadata";
- String queryString = "{\"context\":{\"ignoreCache\":\"true\"},\"gadgets\":[" + "{\"url\":\"" + gadgetUrl + "\"}]}";
- event.getRequestContext().getJavascriptManager().addJavascript("ajaxRequest('POST', '" + metadataUrl + "', true, '" + queryString + "');");
+ try
+ {
+ sourceStorage.saveSource(gadget, source);
+ uiManagement.removeChild(UIGadgetEditor.class);
+ // This will update the source and also update the gadget related
+ // cached meta data
+ // from the source
+ uiManagement.initData();
+ uiManagement.setSelectedGadget(gadget.getName());
+ event.getRequestContext().addUIComponentToUpdateByAjax(uiManagement);
+
+ //Send request to invalidate the cache to Shindig
+ String gadgetServerUrl = GadgetUtil.getGadgetServerUrl();
+ String gadgetUrl = GadgetUtil.reproduceUrl(gadget.getUrl(), gadget.isLocal());
+ String metadataUrl = gadgetServerUrl + (gadgetServerUrl.endsWith("/") ? "" : "/") + "metadata";
+ String queryString = "{\"context\":{\"ignoreCache\":\"true\"},\"gadgets\":[" + "{\"url\":\"" + gadgetUrl + "\"}]}";
+ event.getRequestContext().getJavascriptManager().addJavascript("ajaxRequest('POST', '" + metadataUrl + "', true, '" + queryString + "');");
+ }
+ catch (UnsupportedEncodingException e)
+ {
+ UIApplication uiApp = event.getRequestContext().getUIApplication();
+ uiApp.addMessage(new ApplicationMessage("UIGadgetEditor.msg.unsupportedEncoding", new Object[] {e.getMessage()}, ApplicationMessage.ERROR));
+ return;
+ }
}
}
private boolean isEdit() {
- return (this.getSource() != null);
+ return (this.getSource() != null);
}
public static class CancelActionListener extends EventListener<UIGadgetEditor>
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties 2012-07-12 06:19:52 UTC (rev 8782)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties 2012-07-13 14:36:12 UTC (rev 8783)
@@ -75,22 +75,23 @@
UICategorySelector.header.choose=Vybrat
UICategorySelector.msg.NoCategory=Nen\u00ed tu \u017e\u00e1dn\u00e1 kategorie
+## org.exoplatform.applicationregistry.webui.component.UIGadgetEditor
+UIGadgetEditor.label.source=Zdrojov\u00fd k\u00f3d XML:
+UIGadgetEditor.label.name=N\u00e1zev:
+UIGadgetEditor.action.Save=#{word.save}
UIGadgetEditor.action.Cancel=#{word.cancel}
-UIGadgetEditor.action.Save=#{word.save}
+UIGadgetEditor.msg.invalidSpec=Tento XML zdrojov\u00fd k\u00f3d nevyhovuje specifikaci Gadget\u016f OpenSocial Core Gadget Specification.
UIGadgetEditor.gadget.msg.gadgetIsExist=Tento n\u00e1zev ji\u017e existuje, vyberte pros\u00edm jin\u00fd.
-UIGadgetEditor.label.name=N\u00e1zev:
-## org.exoplatform.applicationregistry.webui.component.UIGadgetEditor
-UIGadgetEditor.label.source=Zdroj:
UIGadgetEditor.msg.Invalid=Pole "{0}" nem\u016f\u017ee obsahovat speci\u00e1ln\u00ed znaky.
-UIGadgetEditor.msg.invalidSpec=Tento zdroj nevyhovuje specifikaci Gadget\u016f.
+UIGadgetEditor.msg.unsupportedEncoding=K\u00f3dov\u00e1n\u00ed "{0}" nen\u00ed podporovan\u00e9. Tento probl\u00e9m m\u016f\u017eete bezpe\u010dn\u011b vy\u0159e\u0161it t\u00edm, \u017ee ve zdrojov\u00e9m XML k\u00f3du va\u0161eho gadgetu p\u0159ep\u00ed\u0161ete "{0}" nap\u0159. na "UTF-8".
+## org.exoplatform.applicationregistry.webui.component.UIGadgetInfo
UIGadgetInfo.label.categories=Categories:
UIGadgetInfo.label.categories.clickHere=Klikn\u011bte zde pro p\u0159id\u00e1n\u00ed do kategori\u00ed
UIGadgetInfo.label.categories.guide=Mus\u00edte p\u0159idat tento gadget do kategori\u00ed, aby mohl b\u00fdt pou\u017eit na n\u00e1st\u011bnce.
UIGadgetInfo.label.description=#{label.description}
UIGadgetInfo.label.displayName=#{label.displayName}
UIGadgetInfo.label.editUrl=URL pro editaci:
-## org.exoplatform.applicationregistry.webui.component.UIGadgetInfo
UIGadgetInfo.label.gadgetDetails=Detaily gadgetu
UIGadgetInfo.label.name=N\u00e1zev gadgetu:
UIGadgetInfo.label.reference=Odkaz:
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_de.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_de.properties 2012-07-12 06:19:52 UTC (rev 8782)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_de.properties 2012-07-13 14:36:12 UTC (rev 8783)
@@ -141,11 +141,16 @@
UIAddGadget.label.urlError=Die Daten der URL '{0}' sind nicht g\u00fcltig.
## org.exoplatform.applicationregistry.webui.component.UIGadgetEditor
-UIGadgetEditor.label.source=Quelle:
+UIGadgetEditor.label.source=XML-Quelltext:
+UIGadgetEditor.label.name=Name:
UIGadgetEditor.action.Save=#{word.save}
UIGadgetEditor.action.Cancel=#{word.cancel}
-UIGadgetEditor.msg.invalidSpec=Diese Quelle enth\u00e4lt eine ung\u00fcltige Gadget-Spezifikation.
-##package org.exoplatform.organization.webui.component.UIListPermissionSelector
+UIGadgetEditor.msg.invalidSpec=Der angegebene XML-Quelltext entspricht nicht der OpenSocial Core Gadget Specification.
+UIGadgetEditor.gadget.msg.gadgetIsExist=Der angegebene Name ist bereits vorhanden. Bitte geben Sie einen anderen Namen an.
+UIGadgetEditor.msg.Invalid=Das Feld "{0}" darf keine Sonderzeiche enthalten.
+UIGadgetEditor.msg.unsupportedEncoding=Die Zeichenkodierung "{0}" wird nicht unterst\u00fctzt. Sie k\u00f6nnen dieses Problem auf sichere Weise l\u00f6sen, indem Sie in Ihrem XML-Quelltext "{0}" durch z.B. "UTF-8" ersetzen.
+
+## org.exoplatform.organization.webui.component.UIListPermissionSelector
UIListPermissionSelector.header.groupId=Gruppe
UIListPermissionSelector.header.membership=Rolle
UIListPermissionSelectorPopup.title.ListPermissionSelector=Berechtigung ausw\u00e4hlen
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_en.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_en.properties 2012-07-12 06:19:52 UTC (rev 8782)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_en.properties 2012-07-13 14:36:12 UTC (rev 8783)
@@ -143,14 +143,16 @@
UIAddGadget.label.urlError=Data in url: '{0}' is not valid
## org.exoplatform.applicationregistry.webui.component.UIGadgetEditor
-UIGadgetEditor.label.source=Source:
+UIGadgetEditor.label.source=XML Source Code:
UIGadgetEditor.label.name=Name:
UIGadgetEditor.action.Save=#{word.save}
UIGadgetEditor.action.Cancel=#{word.cancel}
-UIGadgetEditor.msg.invalidSpec=This source is invalid gadget specification.
+UIGadgetEditor.msg.invalidSpec=The given XML source code is invalid with respect to OpenSocial Core Gadget Specification.
UIGadgetEditor.gadget.msg.gadgetIsExist=This name already exists, please enter a different name.
UIGadgetEditor.msg.Invalid=The "{0}" field must not contain special characters.
-##package org.exoplatform.organization.webui.component.UIListPermissionSelector
+UIGadgetEditor.msg.unsupportedEncoding=The encoding "{0}" is not supported. You can safely solve this problem by replacing "{0}" with e.g. "UTF-8" in the XML source code of your gadget.
+
+## org.exoplatform.organization.webui.component.UIListPermissionSelector
UIListPermissionSelector.header.groupId=Group
UIListPermissionSelector.header.membership=Membership
UIListPermissionSelectorPopup.title.ListPermissionSelector=Select Permission
\ No newline at end of file
12 years, 5 months
gatein SVN: r8782 - epp/docs/branches/5.2/Release_Notes/en-US.
by do-not-reply@jboss.org
Author: jaredmorgs
Date: 2012-07-12 02:19:52 -0400 (Thu, 12 Jul 2012)
New Revision: 8782
Added:
epp/docs/branches/5.2/Release_Notes/en-US/feature_requests.xml
epp/docs/branches/5.2/Release_Notes/en-US/known_issues.xml
epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues.xml
epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues_eXo.xml
epp/docs/branches/5.2/Release_Notes/en-US/sp_known.xml
epp/docs/branches/5.2/Release_Notes/en-US/sp_needinfo.xml
epp/docs/branches/5.2/Release_Notes/en-US/sp_resolved.xml
Modified:
epp/docs/branches/5.2/Release_Notes/en-US/5.2.1_Release_Notes.xml
epp/docs/branches/5.2/Release_Notes/en-US/Book_Info.xml
epp/docs/branches/5.2/Release_Notes/en-US/Revision_History.xml
epp/docs/branches/5.2/Release_Notes/en-US/known.xml
epp/docs/branches/5.2/Release_Notes/en-US/needinfo.xml
epp/docs/branches/5.2/Release_Notes/en-US/resolved.xml
Log:
Adding release notes stuff into repo
Modified: epp/docs/branches/5.2/Release_Notes/en-US/5.2.1_Release_Notes.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/5.2.1_Release_Notes.xml 2012-07-11 06:00:45 UTC (rev 8781)
+++ epp/docs/branches/5.2/Release_Notes/en-US/5.2.1_Release_Notes.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This document was created with Syntext Serna Free. -->
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!-- This document was created with Syntext Serna Free. --><!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.1_Release_Notes.ent">
%BOOK_ENTITIES;
]>
@@ -63,7 +62,7 @@
</chapter>
<chapter id="Release_Notes-Component_Features">
<title>Component Versions </title>
- <para><remark>Updated table from https://docspace.corp.redhat.com/docs/DOC-68705 (version 25)</remark></para>
+ <para><remark>Updated table from https://docspace.corp.redhat.com/docs/DOC-68705 (version 27)</remark></para>
<table frame="all" pgwide="1">
<title>Component Versions</title>
<tgroup cols="2" colsep="1">
@@ -98,7 +97,7 @@
</row>
<row>
<entry>eXo JCR</entry>
- <entry>1.14.6GA</entry>
+ <entry>1.14.6-GA</entry>
</row>
<row>
<entry>Apache Shindig</entry>
@@ -186,7 +185,7 @@
</row>
<row>
<entry>GateIn Management</entry>
- <entry>1.0.0-GA</entry>
+ <entry>1.0.1-GA</entry>
</row>
<row>
<entry>Gatein JON Plugin</entry>
Modified: epp/docs/branches/5.2/Release_Notes/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/Book_Info.xml 2012-07-11 06:00:45 UTC (rev 8781)
+++ epp/docs/branches/5.2/Release_Notes/en-US/Book_Info.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -9,7 +9,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.1</edition>
- <pubsnumber>50</pubsnumber>
+ <pubsnumber>52</pubsnumber>
<abstract>
<para>
These release notes contain important information related to JBoss Enterprise Portal Platform &VZ;, and the Site Publisher plug-in that may not be currently available in the Product Manuals. You should read these Release Notes in their entirety before installing the product.
Modified: epp/docs/branches/5.2/Release_Notes/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/Revision_History.xml 2012-07-11 06:00:45 UTC (rev 8781)
+++ epp/docs/branches/5.2/Release_Notes/en-US/Revision_History.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -7,8 +7,21 @@
<title>Revision History</title>
<simpara>
<revhistory>
-
<revision>
+ <revnumber>5.2.1-52</revnumber>
+ <date>Tue Apr 19 2012</date>
+ <author>
+ <firstname>Jared</firstname>
+ <surname>Morgan</surname>
+ <email/>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>Final Draft Release Notes, updated with the bugs moved to their correct locations.</member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ <revision>
<revnumber>5.2.1-50</revnumber>
<date>Tue Apr 17 2012</date>
<author>
@@ -22,7 +35,6 @@
</simplelist>
</revdescription>
</revision>
-
<revision>
<revnumber>5.2.0-101</revnumber>
<date>Thu Dec 14 2011</date>
Added: epp/docs/branches/5.2/Release_Notes/en-US/feature_requests.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/feature_requests.xml (rev 0)
+++ epp/docs/branches/5.2/Release_Notes/en-US/feature_requests.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -0,0 +1,4 @@
+
+<para>
+There are no feature requests in this release.
+</para>
Modified: epp/docs/branches/5.2/Release_Notes/en-US/known.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/known.xml 2012-07-11 06:00:45 UTC (rev 8781)
+++ epp/docs/branches/5.2/Release_Notes/en-US/known.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -37,34 +37,14 @@
</varlistentry>
<varlistentry>
- <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=794461"><citetitle>BZ#794461</citetitle></ulink> - Patch required for CVE-2012-0818</term>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=810345"><citetitle>BZ#810345</citetitle></ulink> - one-off patch: File name is not displayed correctly if it contains Portuguese accent characters during uploading</term>
<listitem>
- <remark>Status: ON_QA</remark>
+ <remark>Status: ASSIGNED</remark>
<para>
- It was found that RESTEasy was vulnerable to XML External Entity (XXE) attacks. If a remote attacker submitted a request containing an external XML entity to a RESTEasy endpoint, the entity would be resolved, allowing the attacker to read files accessible to the user running the application server. This flaw affected DOM (Document Object Model) Document and JAXB (Java Architecture for XML Binding) input. (<ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=785631">CVE-2012-0818</ulink>)
+ It was discovered that an issue with exo.portal.component.web.server caused the names of uploaded files to display incorrectly if they contained Portuguese accent characters. The fix provides an updated version of exo.portal.component.web.server with improvements to special international character encoding. The originally reported issue is resolved as a result of these improvements.
</para>
</listitem>
</varlistentry>
-<varlistentry>
- <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=806965"><citetitle>BZ#806965</citetitle></ulink> - PortletModes and WindowStates are not properly broadcasting events in webui</term>
- <listitem>
- <remark>Status: ON_QA</remark>
- <para>
- It was discovered that an issue with exo.portal.webui.portal caused pre-configured window states (maximized, normal, minimized) to be ignored when navigating between portlets. This caused the maximized portlet to hide the other portlets that were set to normal or minimized. Refreshing the page forced the window state to behave correctly. The fix provides an updated version of exo.portal.webui.portal with improvements to window state behavior. The originally reported issue is resolved as a result of these improvements.
- </para>
- </listitem>
-</varlistentry>
-
-<varlistentry>
- <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=805875"><citetitle>BZ#805875</citetitle></ulink> - WSRP configuration files to be picked up from gatein.conf.dir on Windows machine</term>
- <listitem>
- <remark>Status: ON_QA</remark>
- <para>
- The WSRP extension didn't properly compute paths to the configuration files, resulting in the extension not being able to find the configuration files on Windows systems. The path computing algorithm has been changed to resolve this issue.
- </para>
- </listitem>
-</varlistentry>
-
</variablelist>
</chapter>
Added: epp/docs/branches/5.2/Release_Notes/en-US/known_issues.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/known_issues.xml (rev 0)
+++ epp/docs/branches/5.2/Release_Notes/en-US/known_issues.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -0,0 +1,4 @@
+
+<para>
+There are no known issues in this release.
+</para>
Modified: epp/docs/branches/5.2/Release_Notes/en-US/needinfo.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/needinfo.xml 2012-07-11 06:00:45 UTC (rev 8781)
+++ epp/docs/branches/5.2/Release_Notes/en-US/needinfo.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -15,15 +15,5 @@
</remark>
<variablelist>
-<varlistentry>
- <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=810345"><citetitle>BZ#810345</citetitle></ulink> - one-off patch: File name is not displayed correctly if it contains Portuguese accent characters during uploading</term>
- <listitem>
- <para>The status is ASSIGNED, assigned to ghu(a)redhat.com.</para>
- <para>
- It was discovered that an issue with exo.portal.component.web.server caused file name is not displayed correctly if it contains Portuguese accent characters during uploading. The fix provides an updated version of exo.portal.component.web.server with improvements to special international characters encoding. The originally reported issue is resolved as a result of these improvements.
- </para>
- </listitem>
-</varlistentry>
-
</variablelist>
</chapter>
Modified: epp/docs/branches/5.2/Release_Notes/en-US/resolved.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/resolved.xml 2012-07-11 06:00:45 UTC (rev 8781)
+++ epp/docs/branches/5.2/Release_Notes/en-US/resolved.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -101,6 +101,16 @@
</varlistentry>
<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=794461"><citetitle>BZ#794461</citetitle></ulink> - Patch required for CVE-2012-0818</term>
+ <listitem>
+ <remark>Status: VERIFIED</remark>
+ <para>
+ It was found that RESTEasy was vulnerable to XML External Entity (XXE) attacks. If a remote attacker submitted a request containing an external XML entity to a RESTEasy endpoint, the entity would be resolved, allowing the attacker to read files accessible to the user running the application server. This flaw affected DOM (Document Object Model) Document and JAXB (Java Architecture for XML Binding) input. (<ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=785631">CVE-2012-0818</ulink>)
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
<term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=794390"><citetitle>BZ#794390</citetitle></ulink> - List of users in group counts with users from all realms (paging is displayed, but no user)</term>
<listitem>
<remark>Status: VERIFIED</remark>
@@ -211,6 +221,16 @@
</varlistentry>
<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=805875"><citetitle>BZ#805875</citetitle></ulink> - WSRP configuration files to be picked up from gatein.conf.dir on Windows machine</term>
+ <listitem>
+ <remark>Status: VERIFIED</remark>
+ <para>
+ The WSRP extension didn't properly compute paths to the configuration files, resulting in the extension not being able to find the configuration files on Windows systems. The path computing algorithm has been changed to resolve this issue.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
<term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=793666"><citetitle>BZ#793666</citetitle></ulink> - WSRP admin interface graphics has minor problems</term>
<listitem>
<remark>Status: VERIFIED</remark>
@@ -282,7 +302,7 @@
</varlistentry>
<varlistentry>
- <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=793938"><citetitle>BZ#793938</citetitle></ulink> - Replicated seesion is corrupted in Portlet Bridge Seam application</term>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=793938"><citetitle>BZ#793938</citetitle></ulink> - Replicated session is corrupted in Portlet Bridge Seam application</term>
<listitem>
<remark>Status: CLOSED</remark>
<para>
Added: epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues.xml (rev 0)
+++ epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -0,0 +1,4 @@
+
+<para>
+There are no resolved issues in this release.
+</para>
Added: epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues_eXo.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues_eXo.xml (rev 0)
+++ epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues_eXo.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -0,0 +1,68 @@
+<?xml version='1.0'?>
+<!DOCTYPE variablelist PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+
+<variablelist>
+
+ <!-- https://jira.exoplatform.org/browse/ECMS-1206 -->
+ <varlistentry>
+ <term><ulink url="https://jira.exoplatform.org/browse/ECMS-1206">ECMS-1206</ulink></term>
+ <listitem>
+ <para>
+ Publication : restoring a previous version should retain the publication dates properties
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <!-- https://jira.exoplatform.org/browse/ECMS-3246 -->
+ <varlistentry>
+ <term><ulink url="https://jira.exoplatform.org/browse/ECMS-3246">ECMS-3246</ulink></term>
+ <listitem>
+ <para>
+ Wrong UI when using InContextEditing feature
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <!-- https://jira.exoplatform.org/browse/ECMS-3381 -->
+ <varlistentry>
+ <term><ulink url="https://jira.exoplatform.org/browse/ECMS-3381">ECMS-3381</ulink></term>
+ <listitem>
+ <para>
+ Navigation By Content is broken
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <!-- https://jira.exoplatform.org/browse/ECMS-3442 -->
+ <varlistentry>
+ <term><ulink url="https://jira.exoplatform.org/browse/ECMS-3442">ECMS-3442</ulink></term>
+ <listitem>
+ <para>
+ Summary of article is not displayed
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <!-- https://jira.exoplatform.org/browse/ECMS-3450 -->
+ <varlistentry>
+ <term><ulink url="https://jira.exoplatform.org/browse/ECMS-3450">ECMS-3450</ulink></term>
+ <listitem>
+ <para>
+ File: Content of file is not displayed when editing
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <!-- https://jira.exoplatform.org/browse/ECMS-3509 -->
+ <varlistentry>
+ <term><ulink url="https://jira.exoplatform.org/browse/ECMS-3509">ECMS-3509</ulink></term>
+ <listitem>
+ <para>
+ Exception when edit Content Detail portlet
+ </para>
+ </listitem>
+ </varlistentry>
+
+</variablelist>
Added: epp/docs/branches/5.2/Release_Notes/en-US/sp_known.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/sp_known.xml (rev 0)
+++ epp/docs/branches/5.2/Release_Notes/en-US/sp_known.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -0,0 +1,140 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id = "sp_known_issues">
+ <title>Known Issues</title>
+
+ <para>
+ The following issues are known to exist in this release of the JBoss Enterprise Portal Platform Site Publisher Add-on, and will be fixed in a subsequent release.
+ </para>
+ <remark>
+ Do some of these issues look more like <emphasis>Resolved Issues</emphasis>? If they do, its because the ticket has not been set to the correct
+ Resolved Issue status (VERIFIED, CLOSED).
+ </remark>
+ <variablelist>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809507"><citetitle>BZ#809507</citetitle></ulink> - EPP-SP migration: Click at tag cloud throws exception</term>
+ <listitem>
+ <remark>Status: NEW</remark>
+ <para>
+ After migrating EPP-SP from version 5.1.x to 5.2.x, invoking a method that is related to user specific JCR data results in a javax.jcr.PathNotFoundException. Operations affected by this bug include:</para>
+<itemizedlist>
+<listitem>
+<para>Click at Tag Cloud icon in Content Explorer</para>
+</listitem>
+<listitem>
+<para>Change user password</para>
+</listitem>
+</itemizedlist>
+<para>A fix is currently being investigated.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809521"><citetitle>BZ#809521</citetitle></ulink> - EPP-SP: Content language is incorrectly set to 'uk' when user language is set to <language>_<country> like pt_BR</term>
+ <listitem>
+ <remark>Status: NEW</remark>
+ <para>
+ When using SitePublisher with a language defined by <language>_<country> (such as Brazillian Portuguese: pt_BR), the drop down fields to select the content language is not automatically set to this language. Instead, the first language in the list - 'uk' - is auto-selected. A fix is currently being investigated.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809522"><citetitle>BZ#809522</citetitle></ulink> - EPP-SP: "Upload Image" from "WCM Content Selector" doesn't work for a custom form</term>
+ <listitem>
+ <remark>Status: NEW</remark>
+ <para>
+ When using a custom form created by the Form Builder, the Upload Image function does not work in the Rich Editor using WCM Content Selector. A fix is currently being investigated.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809525"><citetitle>BZ#809525</citetitle></ulink> - EPP-SP: Javascript priority doesn't work</term>
+ <listitem>
+ <remark>Status: NEW</remark>
+ <para>
+ Using the priority field when creating JavaScript content in Content Explorer does not have an influence on the content ordering inside the merged JavaScript file. Changing the priority values has no impact on the generated compressed JavaScript output. A fix is currently being investigated.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809528"><citetitle>BZ#809528</citetitle></ulink> - EPP-SP: MissingResourceException in UIPresentationContainer.gtmpl</term>
+ <listitem>
+ <remark>Status: NEW</remark>
+ <para>
+ When using EPP-SP with language set to Brazillian Portuguese (pt_BR), changing to Edit mode on a page containing a Single Content Viewer Portlet results in a java.util.MissingResourceException. A fix will be included in an upcoming release. </para>
+
+<para>The workaround for the current release is to add keys for pt_BR locale in the <filename>gatein-wcm-extension-<replaceable>VERSION</replaceable>/presentation.war/WEB-INF/classes/locale/portlet/SingleContentViewer/SingleContentViewer_pt_BR.properties</filename> file:
+
+<programlisting>UIPresentationContainer.msg.internal-server-error=Um erro ocorreu ao efetuar uma requisicao ao servidor.
+UIPresentationContainer.msg.empty-title-error=Informe um novo titulo</programlisting>
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809531"><citetitle>BZ#809531</citetitle></ulink> - EPP-SP: Problem with SP content export/import</term>
+ <listitem>
+ <remark>Status: NEW</remark>
+ <para>
+ An issue with the Site Publisher Import with History function was discovered with exported parent folders that contained an article, as well as a child folder that contained another article. This issue will be fixed in a subsequent release. There is currently no workaround to this issue.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=811320"><citetitle>BZ#811320</citetitle></ulink> - Quick Search doesn't work after migration from 5.1.0 to 5.2.1</term>
+ <listitem>
+ <remark>Status: NEW</remark>
+ <para>
+ The quick search function does not work after upgrading Site Publisher from v5.1.0 to v5.2.1. Searching using the quick search field returns no search results and causes a Null Pointer Exception in the server log. To workaround the issue, perform the following modifications:</para>
+<orderedlist>
+ <listitem>
+ <para>Log onto the "classic" portal using administrator credentials.</para>
+ </listitem>
+ <listitem>
+ <para>Open the "classic" portal Quick Search page.</para>
+ </listitem>
+ <listitem>
+ <para>Click Edit Page</para>
+ </listitem>
+ <listitem>
+ <para>Edit the "Search Result" portlet.</para>
+ </listitem>
+ <listitem>
+ <para>Update the Base Path setting to point to the portal detail page instead of the parameterizedviewer page, as per the example at [1]</para>
+ </listitem>
+</orderedlist>
+<para>[1] Change from http://<replaceable><host></replaceable>:8080/ecmdemo/classic/parameterizedviewer? to http://<replaceable><host></replaceable>:8080/ecmdemo/classic/detail?
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=813321"><citetitle>BZ#813321</citetitle></ulink> - Content with Portugese title cannot be saved after edited</term>
+ <listitem>
+ <remark>Status: NEW</remark>
+ <para>
+ If an uploaded file contains accented characters in the title (for example, a file named "ááááá ã ã ã óóóó.txt") the file can not be saved after it is edited in Content Explorer. A "Cannot save the file. PathNotFoundException" error occurs. There is no current workaround for this issue, apart from not including accented characters in file names.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809545"><citetitle>BZ#809545</citetitle></ulink> - EPP-SP migration: Overriding search form template location not working after migration</term>
+ <listitem>
+ <remark>Status: ASSIGNED</remark>
+ <para>
+ If the EPP-SP instance was migrated from EPP 5.2.x to EPP 5.2.1, the built-in templates and views were not automatically updated to the new version. This resulted in some functions not working correctly in some use-cases, such as using the advanced search. This behavior has been corrected in the current version by upgrading the built-in templates and views automatically during a migration from a previous EPP-SP version.
+ </para>
+ </listitem>
+</varlistentry>
+
+ </variablelist>
+</chapter>
Added: epp/docs/branches/5.2/Release_Notes/en-US/sp_needinfo.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/sp_needinfo.xml (rev 0)
+++ epp/docs/branches/5.2/Release_Notes/en-US/sp_needinfo.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -0,0 +1,29 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id = "sp_needinfo_issues">
+ <title>NEEDINFO</title>
+
+ <para>
+ The following issues require more information from developers, or need to be processed by the lead writer before they can be approved for Release Note inclusion.
+ </para>
+ <remark>
+ These tickets will not be included in Release Notes as they currently stand.
+ This could be because the tickets have not been docs Ack'd (still at release_note?)
+ or the tickets have not been set to the correct resolution status (VERIFIED, CLOSED).
+ </remark>
+ <variablelist>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=810340"><citetitle>BZ#810340</citetitle></ulink> - EPP-SP: cumulative patch for EPP-SP 5.2.0</term>
+ <listitem>
+ <para>The status is ASSIGNED, assigned to ghu(a)redhat.com.</para>
+ <para>
+
+ </para>
+ </listitem>
+</varlistentry>
+
+ </variablelist>
+</chapter>
Added: epp/docs/branches/5.2/Release_Notes/en-US/sp_resolved.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/sp_resolved.xml (rev 0)
+++ epp/docs/branches/5.2/Release_Notes/en-US/sp_resolved.xml 2012-07-12 06:19:52 UTC (rev 8782)
@@ -0,0 +1,94 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id = "sp_resolved">
+ <title>Resolved Issues</title>
+ <para>
+ The following issues have been resolved in this release of the JBoss Enterprise Portal Platform Site Publisher Add-on.
+ </para>
+ <variablelist>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809517"><citetitle>BZ#809517</citetitle></ulink> - EPP-SP: File name is not displayed correctly if it contains Portuguese accent characters during uploading</term>
+ <listitem>
+ <remark>Status: VERIFIED</remark>
+ <para>
+ After uploading a file with special characters in the name, the displayed file name showed incorrect characters. This has been fixed, and special characters in file names are now handled correctly during file upload.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809509"><citetitle>BZ#809509</citetitle></ulink> - EPP-SP: Search results page shows incorrect links</term>
+ <listitem>
+ <remark>Status: VERIFIED</remark>
+ <para>
+ A search in the ACME portal returned incorrect links for the search results if the server was accessed over port 80. This has been corrected, to generate working search links regardless of the port the server instance is running on.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809526"><citetitle>BZ#809526</citetitle></ulink> - EPP-SP: UIDefaultSearchResult throws "NullPointerException: No null parameter name"</term>
+ <listitem>
+ <remark>Status: VERIFIED</remark>
+ <para>
+ Using the Advanced Search Portlet after migrating from EPP-SP 5.1.x to 5.2.0 did not return any results for some search terms, and instead an exception could be seen in the log file. The reason for this exception was a missing portlet preference in the migration data. This has been fixed in the current release.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809538"><citetitle>BZ#809538</citetitle></ulink> - EPP-SP: content name is not displayed correctly if it contains Portuguese accent characters</term>
+ <listitem>
+ <remark>Status: VERIFIED</remark>
+ <para>
+ An issue with language encoding resulted in the name and title fields being displayed incorrectly if content was created with special characters in these fields. This bug has been corrected.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=809547"><citetitle>BZ#809547</citetitle></ulink> - EPP-SP: Context menu incorrecly displayed</term>
+ <listitem>
+ <remark>Status: VERIFIED</remark>
+ <para>
+ After upgrading from EPP-SP 5.1.x to 5.2.0 the context menu in Content Explorer was not being displayed correctly. The fix introduces a new binary to the current release, which automatically upgrades the underlying templates during the migration from an earlier EPP-SP version.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=794453"><citetitle>BZ#794453</citetitle></ulink> - gatein-wcm-extension-5.2.0-exo-2.3.3-CP01.ear should not be signed.</term>
+ <listitem>
+ <remark>Status: VERIFIED</remark>
+ <para>
+ It was discovered that the gatein-wcm-extension-5.2.0-exo-2.3.3-CP01.ear was signed with a JBoss signature. This prevented customers from modifying the contents of the archive. The signature is no longer applied to the .ear file, which allows customers to alter the contents and fixes the originally reported issue.
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=741683"><citetitle>BZ#741683</citetitle></ulink> - clarify need for multiple repositories</term>
+ <listitem>
+ <remark>Status: VERIFIED</remark>
+ <para>
+ An issue was found in the Site Publisher Installation Guide regarding the requirement for Site Publisher to have a separate database to Enterprise Portal Platform. A customer identified an issue with the clarity of this information when they encountered a problem with database provisioning for the platform. The Site Publisher Installation Guide has been merged with the Installation Guide. The Database Configuration section has been extensively reworked to specify Site Publisher must have its own IDM and JCR database configured, and matching database connector JNDI name directives specified in gatein-ds.xml
+ </para>
+ </listitem>
+</varlistentry>
+
+<varlistentry>
+ <term><ulink url="https://bugzilla.redhat.com/show_bug.cgi?id=794392"><citetitle>BZ#794392</citetitle></ulink> - EPP-SP Broken portalsite template</term>
+ <listitem>
+ <remark>Status: CLOSED</remark>
+ <para>
+ When Site publisher was installed on top of Enterprise Portal Platform, picking a site layout would not create a working
+site. The problem has been fixed so that the new sites are created properly.
+ </para>
+ </listitem>
+</varlistentry>
+
+ </variablelist>
+</chapter>
12 years, 5 months
gatein SVN: r8781 - in epp/docs/branches/5.2/Reference_Guide: en-US and 14 other directories.
by do-not-reply@jboss.org
Author: jaredmorgs
Date: 2012-07-11 02:00:45 -0400 (Wed, 11 Jul 2012)
New Revision: 8781
Modified:
epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Reference_Guide/en-US/Preface.xml
epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent
epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml
epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletBridge_Configuration/default205.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Profiles.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/System_Properties.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationTokenConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/CoreOrganizationInitializer.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PasswordEncryption.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DataImportStrategy.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalPermissionConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/InternationalizationConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/JavascriptInterApplicationCommunication.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/RTLFramework.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/Skinning.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/XMLResourceBundles.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/gettingstarted.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/overview.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/portlet_development.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/backup-client.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/exojcr-backup-service.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/use-external-backup-tool.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/cluster-config.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/search-configuration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/link-producer.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/performance-tuning-guide.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/query-handler-config.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-check-controller.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-and-settings.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/jcr-query-usecases.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/searching-repository-content.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/statistics.xml
epp/docs/branches/5.2/Reference_Guide/publican.cfg
Log:
BZ#794433 - Incorporated clarifying comments from Marek about JOSSO, and made procedures in this section easier to follow.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -9,7 +9,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.2</edition>
- <pubsnumber>2</pubsnumber>
+ <pubsnumber>9</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.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Preface.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Preface.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Preface.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,16 +1,72 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<preface id="pref-Reference_Guide-Preface">
- <title>Preface</title>
- <!-- FOR PUBLICAN --> <xi:include href="Common_Content/Conventions.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/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- </xi:fallback>
- </xi:include>
- <!-- FOR PUBLICAN --> <xi:include href="Common_Content/Feedback.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/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- </xi:fallback>
- </xi:include>
+ <title>Preface</title>
+ <section id="sect-File_Name_Conventions">
+ <title>File Name Conventions</title>
+ <para>The following naming conventions are used in file paths for readability. Each convention is styled so that it stands out from the rest of text:
+
+ </para>
+ <variablelist id="vari-Reference_Guide-Introduction-Devices">
+ <varlistentry>
+ <term>
+ <replaceable>EPP_DIST</replaceable>
+ </term>
+ <listitem>
+ <para>The installation root of the JBoss Enterprise Application Platform instance. This folder contains the main folders that comprise the server such as <filename>/jboss-as</filename>.
+ </para>
+ <para>For example, if the JBoss Enterprise Portal Platform instance is deployed into the <filename>/opt/jboss/jboss-epp-&VY;/</filename> directory, the <replaceable>EPP_DIST</replaceable> directory is <filename>/opt/jboss/jboss-epp-&VY;</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <replaceable>PORTAL_SSO</replaceable>
+ </term>
+ <listitem>
+ <para>The zip file located in the <filename><filename>EPP_DIST</filename>/gatein-sso</filename> directory of the JBoss Enterprise Portal Platform binary package. Used throughout <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On"/>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <replaceable>CAS_DIR</replaceable>
+ </term>
+ <listitem>
+ <para>The installation root of the Central Authentication Service (CAS) Single Sign-on Framework. This directory is an arbitrary location chosen when CAS is downloaded and installed.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <replaceable>HTTPD_DIST</replaceable>
+ </term>
+ <listitem>
+ <para>The installation root of the Apache httpd Server. This folder contains the main folders that comprise the server such as <filename>/conf</filename>, <filename>/webapps</filename>, and <filename>/bin</filename>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <replaceable>PROFILE</replaceable>
+ </term>
+ <listitem>
+ <para>The name of the server profile used as part of testing or production configuration. The server profiles reside in <filename>EPP_DIST/jboss-as/server</filename>.</para>
+ <para>For example, to use the <literal>default</literal> profile, replace the <replaceable>PROFILE</replaceable> text in the file path to read <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>default</replaceable>/</filename>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+<!-- FOR PUBLICAN --> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Common_Content/Conventions.xml">
+ <!-- FOR JDOCBOOK: --> <xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="fallback_content/Conventions.xml"/>
+ </xi:fallback>
+ </xi:include>
+<!-- FOR PUBLICAN --> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Common_Content/Feedback.xml">
+ <!-- FOR JDOCBOOK: --> <xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="fallback_content/Feedback.xml"/>
+ </xi:fallback>
+ </xi:include>
</preface>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent 2012-07-11 06:00:45 UTC (rev 8781)
@@ -17,4 +17,4 @@
<!ENTITY VX "5">
<!ENTITY VY "5.2">
<!ENTITY VZ "5.2.2">
-<!ENTITY WSRP_VERSION "2.1.0-GA">
+<!ENTITY WSRP_VERSION "2.1.6-EPP522-GA">
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -8,6 +8,34 @@
<simpara>
<revhistory>
<revision>
+ <revnumber>5.2.2-9</revnumber>
+ <date>Wed Jul 11 2012</date>
+ <author>
+ <firstname>Jared</firstname>
+ <surname>Morgan</surname>
+ <email/>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>BZ#794433 - Incorporated clarifying comments from Marek about JOSSO, and made procedures in this section easier to follow.</member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>5.2.2-6</revnumber>
+ <date>Tue Jul 10 2012</date>
+ <author>
+ <firstname>Jared</firstname>
+ <surname>Morgan</surname>
+ <email/>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>BZ#812412 - Extensive peer review comments incorporated. Book-wide spell-check run.</member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ <revision>
<revnumber>5.2.2-2</revnumber>
<date>Thu Jul 5 2012</date>
<author>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletBridge_Configuration/default205.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletBridge_Configuration/default205.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletBridge_Configuration/default205.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,3 +1,3 @@
-<script src="/faces/rfRes/org/ajax4jsf/framework.pack.js" type="text/javascript"></script>
-<script src="/faces/rfRes/org/richfaces/ui.pack.js" type="text/javascript"></script>
-<link rel="stylesheet" type="text/css" href="/faces/rfRes/org/richfaces/skin.xcss"/>
+<script src="/richFacesPortlet/faces/rfRes/org/ajax4jsf/framework.pack.js" type="text/javascript"></script>
+<script src="/richFacesPortlet/faces/rfRes/org/richfaces/ui.pack.js" type="text/javascript"></script>
+<link rel="stylesheet" type="text/css" href="/richFacesPortlet/faces/rfRes/org/richfaces/skin.xcss"/>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -14,17 +14,17 @@
<procedure>
<step>
<para>
- Services default <envar>RootContainer</envar> configurations from JAR files <filename><replaceable>EPP_HOME</replaceable>/conf/gatein/configuration.xml</filename>.
+ Services default <envar>RootContainer</envar> configurations from JAR files <filename><replaceable>EPP_DIST/jboss-as/</replaceable>/conf/gatein/configuration.xml</filename>.
</para>
</step>
<step>
<para>
- External <envar>RootContainer</envar> configuration can be found at <filename><replaceable>EPP_HOME</replaceable>/conf/gatein/configuration.xml</filename>.
+ External <envar>RootContainer</envar> configuration can be found at <filename><replaceable>EPP_DIST/jboss-as/</replaceable>/conf/gatein/configuration.xml</filename>.
</para>
</step>
<step>
<para>
- Services default <envar>PortalContainer</envar> configurations from JAR files <filename>/conf/portal/configuration.xml</filename>.
+ Services default <envar>PortalContainer</envar> configurations from JAR files <filename><replaceable>EPP_DIST</replaceable>/jboss-as/conf/portal/configuration.xml</filename>.
</para>
</step>
<step>
@@ -34,7 +34,7 @@
</step>
<step>
<para>
- External configuration for services of named portal can be found at <filename><replaceable>EPP_HOME</replaceable>/conf/gatein/configuration.xml</filename>.
+ External configuration for services of named portal can be found at <filename><replaceable>EPP_DIST</replaceable>/jboss-as/conf/gatein/configuration.xml</filename>.
</para>
</step>
</procedure>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -21,7 +21,7 @@
All <filename>configuration.xml</filename> files located at <filename>conf/portal/configuration.xml</filename> in the classpath will have their services configured at the <literal>PortalContainer</literal> scope.
</para>
<para>
- Additionally, <emphasis role="bold">portal extensions</emphasis> can use configuration information stored in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/configuration.xml</filename>, and will also have their services configured in the <literal>PortalContainer</literal> scope.
+ Additionally, <emphasis role="bold">portal extensions</emphasis> can use configuration information stored in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/configuration.xml</filename>, and will also have their services configured in the <literal>PortalContainer</literal> scope.
</para>
<para>
When eXo kernel reads a configuration, it loads the file from the kernel jar using the classloader and does not use an internet connection to resolve the file.
@@ -36,13 +36,13 @@
<section id="sect-Reference_Guide-Configuration_syntax-Components">
<title>Components</title>
<para>
- A service component is defined in <filename>configuration.xml</filename> by using a <emphasis role="bold"><component></emphasis> element.
+ A service component is defined in <filename>configuration.xml</filename> by using a <component> element.
</para>
<para>
- Only one piece of information is required when defining a service; the service implementation class. This is specified using <literal><type></literal>
+ Only one piece of information is required when defining a service; the service implementation class. This is specified using <type>
</para>
<para>
- Every component has a <literal><key></literal> that identifies it. If not explicitly set, a key defaults to the value of <literal><type></literal>. If a key can be loaded as a class, a class object is used as a key, otherwise a string is used.
+ Every component has a <key> that identifies it. If not explicitly set, a key defaults to the value of <type>. If a key can be loaded as a class, a class object is used as a key, otherwise a string is used.
</para>
<para>
The usual approach is to specify an interface as a key.
@@ -188,7 +188,7 @@
</listitem>
<listitem>
<para>
- Web application configurations from the portal.war file - or the <emphasis>portal</emphasis> weppapp (folder <emphasis>/WEB-INF/conf/configuration.xml</emphasis>)
+ Web application configurations from the portal.war file - or the <emphasis>portal</emphasis> web app (folder <emphasis>/WEB-INF/conf/configuration.xml</emphasis>)
</para>
</listitem>
<listitem>
@@ -395,25 +395,24 @@
</section>
</section>
<section id="sect-Reference_Guide-Configuration_syntax-InitParams_configuration_element">
- <title>InitParams configuration element</title>
- <para>
- <parameter>InitParams</parameter> is a configuration element that is essentially a map of key-value pairs, where <emphasis role="bold">key</emphasis> is always a <literal>String</literal>, and <emphasis role="bold">value</emphasis> can be any type that can be described using the kernel XML configuration.
+ <title><init-params> configuration element</title>
+ <para><init-params> is a configuration element that is essentially a map of key-value pairs, where <emphasis role="bold">key</emphasis> is always a <literal>String</literal>, and <emphasis role="bold">value</emphasis> can be any type that can be described using the kernel XML configuration.
</para>
<para>
- Service components that form the JBoss Enterprise Portal Platform infrastructure use <parameter>InitParams</parameter> elements to configure themselves. A component can have one instance of <parameter>InitParams</parameter> injected at most.
+ Service components that form the JBoss Enterprise Portal Platform infrastructure use <init-params> elements to configure themselves. A component can have one instance of <init-params> injected at most.
</para>
<para>
- If the service component's constructor takes <parameter>InitParams</parameter> as any of the parameters it will automatically be injected at component instantiation time.
+ If the service component's constructor takes <init-params> as any of the parameters it will automatically be injected at component instantiation time.
</para>
<para>
- The XML configuration for a service component that expects an <parameter>InitParams</parameter> element must have an <parameter><init-params></parameter> element present, however this element can be left empty.
+ The XML configuration for a service component that expects an <init-params> element must have an <init-params> element present, however this element can be left empty.
</para>
<para>
- Below is an example of how the kernel XML configuration syntax looks when creating <parameter>InitParams</parameter> instances:
+ Below is an example of how the kernel XML configuration syntax looks when creating <init-params> instances:
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default4.xml" parse="text"/></programlisting>
<para>
- An <parameter>InitParams</parameter> element description begins with an <parameter><init-params></parameter> element.
+ An <init-params> element description begins with an <init-params> element.
</para>
<para>
It can have zero or more children elements, each of which is one of the following:
@@ -421,61 +420,72 @@
<itemizedlist>
<listitem>
<para>
- <parameter><value-param></parameter>
+ <value-param>
</para>
</listitem>
<listitem>
<para>
- <parameter><values-param></parameter>
+ <values-param>
</para>
</listitem>
<listitem>
<para>
- <parameter><properties-param></parameter>
+ <properties-param>
</para>
</listitem>
- </itemizedlist>
- <para>
- or
- </para>
- <itemizedlist>
<listitem>
<para>
- <parameter><object-param></parameter>
+ <object-param>
</para>
</listitem>
</itemizedlist>
<para>
- Each of these child elements takes a <parameter><name></parameter> that serves as a map entry key, and an optional <parameter><description></parameter>. It also takes a type-specific <emphasis role="bold">value</emphasis> specification.
+ Each of these child elements takes a <name> that serves as a map entry key, and an optional <description>. It also takes a type-specific <emphasis role="bold">value</emphasis> specification.
</para>
<para>
- The value specification for the <parameter><properties-param></parameter> defines one or more <parameter><property></parameter> elements, each of which specifies two strings; a property name and a property value. This is evident in the two previous examples.
+ The value specification for the <properties-param> defines one or more <property> elements, each of which specifies two strings; a property name and a property value. This is evident in the two previous examples.
</para>
<para>
- Each <parameter><properties-params></parameter> defines one <literal>java.util.Properties</literal> instance.
+ Each <properties-params> defines one <literal>java.util.Properties</literal> instance.
</para>
+ <example>
+ <title><properties-param> Hibernate Example</title>
+ <programlisting language="XML" role="XML"> <component>
+ <key>org.exoplatform.services.database.HibernateService</key>
+ <type>org.exoplatform.services.database.impl.HibernateServiceImpl</type>
+ <init-params>
+ <properties-param>
+ <name>hibernate.properties</name>
+ <description>Default Hibernate Service</description>
+ <property name="hibernate.show_sql" value="false"/>
+ <property name="hibernate.cglib.use_reflection_optimizer" value="true"/>
+ <property name="hibernate.connection.url" value="jdbc:hsqldb:file:../temp/data/exodb"/>
+ <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
+...
+ </properties-param>
+ </init-params>
+ </component></programlisting>
+ <para>
+ In the org.exoplatform.services.database.impl.HibernateServiceImpl you will find that the name "hibernate.properties" of the properties-param is used to access the properties.
+ </para>
+ <programlisting language="Java" role="Java">package org.exoplatform.services.database.impl;
+
+public class HibernateServiceImpl implements HibernateService, ComponentRequestLifecycle {
+ public HibernateServiceImpl(InitParams initParams, CacheService cacheService) {
+ PropertiesParam param = initParams.getPropertiesParam("hibernate.properties");
+...
+}</programlisting>
+ </example>
<para>
- The value specification for <parameter><value-param></parameter> elements is a <parameter><value></parameter> element which defines a <literal>String</literal> instance.
+ The value specification for <value-param> elements is a <value> element which defines a <literal>String</literal> instance.
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default5.xml" parse="text"/></programlisting>
<para>
- The value specification for <parameter><values-param></parameter> requires one or more <parameter><value></parameter> elements. Each <parameter><value></parameter> represents one <literal>String</literal> instance. All <literal>String</literal> values are then collected into a <literal>java.util.List</literal> instance.
+ The value specification for <values-param> requires one or more <value> elements. Each <value> represents one <literal>String</literal> instance. All <literal>String</literal> values are then collected into a <literal>java.util.List</literal> instance.
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default6.xml" parse="text"/></programlisting>
- <para>
- For <parameter><object-param></parameter> entries, the value specification consists of an <parameter><object></parameter> element which is used for plain Java style object specification (specifying an implementation <emphasis>class - <parameter><type></parameter></emphasis>, and <emphasis>property values - <parameter><field></parameter></emphasis>).
- </para>
- <para>
- The following section has an example of specifying a field of with a <literal>Collection</literal> type.
- </para>
- <para>
- The <parameter>InitParams</parameter> structure (the names and types of entries) is specific for each service, as it is the code inside a service components' class that defines which entry names to look up and what types it expects to find.
- </para>
- <section id="sect-Reference_Guide-InitParams_configuration_element-Value_Param">
- <title>Value-Param</title>
- <para>
- There is an value-param example:
- </para>
+ <example>
+ <title><value-param> Example</title>
<programlisting language="XML" role="XML"> <component>
<key>org.exoplatform.portal.config.UserACL</key>
<type>org.exoplatform.portal.config.UserACL</type>
@@ -489,7 +499,7 @@
...
</component></programlisting>
<para>
- The UserACL class accesses to the <emphasis role="bold">value-param</emphasis> in its constructor.
+ The UserACL class accesses to the <value-param> in its constructor.
</para>
<programlisting language="Java" role="Java">package org.exoplatform.portal.config;
public class UserACL {
@@ -499,46 +509,15 @@
ValueParam accessControlWorkspaceParam = params.getValueParam("access.control.workspace");
if(accessControlWorkspaceParam != null) md.setAccessControlWorkspace(accessControlWorkspaceParam.getValue());
...</programlisting>
- </section>
- <section id="sect-Reference_Guide-InitParams_configuration_element-Properties_Param">
- <title>Properties-Param</title>
+ </example>
+ <para>
+ For <object-param> entries, the value specification consists of an <object> element which is used for plain Java style object specification (specifying an implementation <emphasis>class - <type></emphasis>, and <emphasis>property values - <field></emphasis>).
+</para>
+ <example>
+ <title><object-param> and LDAP Example</title>
<para>
- Properties are name-value pairs. Both the name and the value are Java Strings.
+ Let's have a look at the configuration of the LDAPService. It is not important to understand LDAP, we only discuss the parameters as they relate to <object-param>.
</para>
- <para>
- Here you see the hibernate configuration example:
- </para>
- <programlisting language="XML" role="XML"> <component>
- <key>org.exoplatform.services.database.HibernateService</key>
- <type>org.exoplatform.services.database.impl.HibernateServiceImpl</type>
- <init-params>
- <properties-param>
- <name>hibernate.properties</name>
- <description>Default Hibernate Service</description>
- <property name="hibernate.show_sql" value="false"/>
- <property name="hibernate.cglib.use_reflection_optimizer" value="true"/>
- <property name="hibernate.connection.url" value="jdbc:hsqldb:file:../temp/data/exodb"/>
- <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
-...
- </properties-param>
- </init-params>
- </component></programlisting>
- <para>
- In the org.exoplatform.services.database.impl.HibernateServiceImpl you will find that the name "hibernate.properties" of the properties-param is used to access the properties.
- </para>
- <programlisting language="Java" role="Java">package org.exoplatform.services.database.impl;
-
-public class HibernateServiceImpl implements HibernateService, ComponentRequestLifecycle {
- public HibernateServiceImpl(InitParams initParams, CacheService cacheService) {
- PropertiesParam param = initParams.getPropertiesParam("hibernate.properties");
-...
-}</programlisting>
- </section>
- <section id="sect-Reference_Guide-InitParams_configuration_element-Object_Param">
- <title>Object-Param</title>
- <para>
- Let's have a look at the configuration of the LDAPService. It's not important to know LDAP, we only discuss the parameters.
- </para>
<programlisting language="XML" role="XML"><component>
<key>org.exoplatform.services.LDAP.LDAPService</key>
<type>org.exoplatform.services.LDAP.impl.LDAPServiceImpl</type>
@@ -560,7 +539,7 @@
</init-params>
</component></programlisting>
<para>
- You see here an <emphasis role="bold">object-param</emphasis> is being used to pass the parameters inside an object (actually a java bean). It consists of a <emphasis role="bold">name</emphasis>, a <emphasis role="bold">description</emphasis> and exactly one <emphasis role="bold">object</emphasis>. The object defines the <emphasis role="bold">type</emphasis> and a number of <emphasis role="bold">fields</emphasis>.
+ You see here an <object-param> element is being used to pass the parameters inside an object (actually a java bean). It consists of a <emphasis role="bold">name</emphasis>, a <emphasis role="bold">description</emphasis> and exactly one <emphasis role="bold">object</emphasis>. The object defines the <emphasis role="bold">type</emphasis> and a number of <emphasis role="bold">fields</emphasis>.
</para>
<para>
Here you see how the service accesses the object:
@@ -602,7 +581,13 @@
<para>
Have a look on this type test xml file: <ulink url="https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...">https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...</ulink>.
</para>
- </section>
+ </example>
+ <para>
+ The following section has an example of specifying a field of with a <literal>Collection</literal> type.
+ </para>
+ <para>
+ The <init-params> structure (the names and types of entries) is specific for each service, as it is the code inside a service components' class that defines which entry names to look up and what types it expects to find.
+ </para>
<section id="sect-Reference_Guide-InitParams_configuration_element-Collection">
<title>Collection</title>
<para>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Profiles.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Profiles.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Profiles.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -55,12 +55,12 @@
<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.
+ 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>
+ <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:
+ 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>
@@ -73,9 +73,9 @@
</component></programlisting>
</section>
<section id="sect-Reference_Guide-Profiles_capable_configuration_elements-Component_plugin_element">
- <title>Component plug-in element</title>
+ <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:
+ The <component-plugin> element is used to dynamically extend the configuration of a given component. Thanks to the profiles the <component-plugin> elements can be enabled or disabled:
</para>
<programlisting language="XML" role="XML"><external-component-plugins>
<target-component>Component</target-component>
@@ -93,18 +93,18 @@
</external-component-plugins></programlisting>
</section>
<section id="sect-Reference_Guide-Profiles_capable_configuration_elements-Import_element">
- <title>Import element</title>
+ <title><import> element</title>
<para>
- The import element imports a referenced configuration file when activated:
+ 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>
+ <title><init-params> element</title>
<para>
- The init param element configures the parameter argument of the construction of a component service:
+ The <init-params> element configures the parameter argument of the construction of a component service:
</para>
<programlisting language="XML" role="XML"><component>
<key>Component</key>
@@ -126,9 +126,9 @@
</component></programlisting>
</section>
<section id="sect-Reference_Guide-Profiles_capable_configuration_elements-Value_collection_element">
- <title>Value collection element</title>
+ <title><value-collection> element</title>
<para>
- The value collection element configures one of the value of collection data:
+ 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">
@@ -141,9 +141,9 @@
</object></programlisting>
</section>
<section id="sect-Reference_Guide-Profiles_capable_configuration_elements-Field_configuration_element">
- <title>Field configuration element</title>
+ <title><field-configuration> element</title>
<para>
- The field configuration element configures the field of an object:
+ The <field-configuration> element configures the field of an object:
</para>
<programlisting language="XML" role="XML"><object-param>
<name>test.configuration</name>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/System_Properties.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/System_Properties.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/System_Properties.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,42 +1,40 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-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>
+ <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>
<init-params>
<properties-param>
<name>properties</name>
- <property name="foo" value="bar"/>
+ <property name="foo" value="bar"/>
</properties-param>
</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>
-
-<programlisting language="XML" role="XML"><component>
+ </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>
<init-params>
@@ -46,33 +44,24 @@
</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>
-
- </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-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>
-
-
+ </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-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>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -44,7 +44,7 @@
Authentication workflow consists of HTTP requests and redirects which include handshakes. Source code related to authentication is partially included in the WCI module, as the authentication process differs on <ulink url="http://www.jcp.org/en/jsr/detail?id=154" type="http">Servlet 2.5</ulink> containers and <ulink url="http://www.jcp.org/en/jsr/detail?id=315" type="http">Servlet 3.0</ulink> containers.
</para>
<para>
- First you can see in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> that authentication is triggered by accessing a secured URL:
+ First you can see in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> that authentication is triggered by accessing a secured URL:
</para>
<programlisting language="XML" role="XML">
<![CDATA[
@@ -87,7 +87,7 @@
]]>
</programlisting>
<para>
- <literal>InitiateLoginServlet</literal> simply redirects user to login page placed in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename>.
+ <literal>InitiateLoginServlet</literal> simply redirects user to login page placed in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename>.
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="images/AuthenticationAndIdentity/Overview/loginScreen.png" format="PNG"/>
@@ -98,7 +98,7 @@
</mediaobject>
</para>
<para>
- Changes to the appearance of this login page can be made in this JSP file. You can also change image or CSS placed in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/login/skin</filename> .
+ Changes to the appearance of this login page can be made in this JSP file. You can also change image or CSS placed in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/login/skin</filename> .
</para>
<para>
After a user submits the login form, they are redirected to the login URL; <ulink url="http://localhost:8080/portal/login?username=root&password=gtn&ini..." type="http">http://localhost:8080/portal/login?username=root&password=gtn&ini...</ulink>.
@@ -429,7 +429,7 @@
</itemizedlist>
</section>
<section id="sect-Authentication_Authorization_Intro-RememberMeAuthentication-reauthentication">
- <title>Reauthentication</title>
+ <title>Re-authentication</title>
<itemizedlist>
<listitem>
<para>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationTokenConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationTokenConfiguration.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationTokenConfiguration.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -33,7 +33,7 @@
<section id="sect-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services">
<title>Configuring Token Services</title>
<para>
- Token services configuration includes specifying the token validity period. The token service is configured as a portal component using the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/common/autologin-configuration.xml</filename> file.
+ Token services configuration includes specifying the token validity period. The token service is configured as a portal component using the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/common/autologin-configuration.xml</filename> file.
</para>
<para>
In the XML example below, <emphasis>CookieTokenService</emphasis> is a subclass of <emphasis role="bold">AbstractTokenService</emphasis> so it has a property which specifies the validity period of the token.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/CoreOrganizationInitializer.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/CoreOrganizationInitializer.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/CoreOrganizationInitializer.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -9,11 +9,11 @@
<para>The plug-in is particularly useful when using the Site Publisher add-on, and directly adding users or groups to a LDAP server through LDIF files, or into a database using SQL. </para>
<section>
<title>Enable Initializer</title>
- <para>The initializer is disabled by default. To activate it, uncomment the block containing the path to the <filename>initializer-configuration.xml</filename> file in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/configuration.xml</filename>.
+ <para>The initializer is disabled by default. To activate it, uncomment the block containing the path to the <filename>initializer-configuration.xml</filename> file in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/configuration.xml</filename>.
</para>
<programlisting language="XML"><!-- Uncomment for enable initializer (OrganizationListenersInitializerService and related stuff) -->
<import>war:/conf/organization/initializer-configuration.xml</import></programlisting>
- <para>All configuration for the initializer occurs in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename>, which is the main configuration file
+ <para>All configuration for the initializer occurs in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename>, which is the main configuration file
for this initializer. More details about configuration options, along with alternatives to XML directive configuration, are described in subsequent sections.</para>
</section>
<section>
@@ -84,7 +84,7 @@
</section>
<section id="Triggering_Operations">
<title>Using configuration directives</title>
- <para>There are a number of ways of controlling operations associated with CoreOrganizationInitializer. All parameters are configured in <value-param> directive blocks in the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename> file.</para>
+ <para>There are a number of ways of controlling operations associated with CoreOrganizationInitializer. All parameters are configured in <value-param> directive blocks in the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename> file.</para>
<example>
<title><value-param> block for initializer directives</title>
<programlisting language="XML"><value-param>
@@ -96,7 +96,7 @@
<title>Disable launchAll at Startup</title>
<para>For large implementations with many users and groups, consider disabling <parameter>launchAll</parameter> functionality during start-up for each portal container. Disabling this operation during start-up will result in a performance improvement.</para>
<step>
- <para>Open <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename></para>
+ <para>Open <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename></para>
</step>
<step>
<para>Locate the <parameter>executeAllListenersDuringBoot</parameter> <value-param> parameter.</para>
@@ -109,7 +109,7 @@
<title>Disable launchAll Job Scheduler</title>
<para>A job scheduler is configured to run by default, and executes <parameter>launchAll</parameter> periodically. For large implementations with many users and groups, consider disabling the Job scheduler <parameter>launchAll</parameter> functionality for each portal container. Disabling this operation may result in a performance improvement.</para>
<step>
- <para>Open <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename></para>
+ <para>Open <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename></para>
</step>
<step>
<para>Search for "scheduler" in the file.</para>
@@ -122,7 +122,7 @@
<title>Alter the way JCR objects are created on-demand, at user login. </title>
<para>When a user logs into the portal, the <parameter>treatUser</parameter> operation runs on-demand to create the required JCR objects. This operation (activated by default) improves overall performance of the portal, because user objects are only created when needed. To disable the operation (not recommended), follow the guidelines below.</para>
<step>
- <para>Open <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename></para>
+ <para>Open <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/organization/initializer-configuration.xml</filename></para>
</step>
<step>
<para>Locate the <parameter>ExtensibleFilter</parameter> directive block.</para>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -8,7 +8,7 @@
<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>EPP_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.
+ For ease of readability the following section uses the notational device <replaceable>ID_HOME</replaceable> to represent the file path <filename><replaceable>EPP_DIST</replaceable>/jboss-as/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>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PasswordEncryption.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PasswordEncryption.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PasswordEncryption.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -17,7 +17,7 @@
<orderedlist>
<listitem>
<para>
- The <emphasis>Remember Me</emphasis> feature can be disabled by removing the corresponding checkbox in: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename> and <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/groovy/portal/webui/UILoginForm.gtmpl</filename>.
+ The <emphasis>Remember Me</emphasis> feature can be disabled by removing the corresponding checkbox in: <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename> and <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/groovy/portal/webui/UILoginForm.gtmpl</filename>.
</para>
</listitem>
<listitem>
@@ -45,7 +45,7 @@
</step>
<step>
<para>
- Deploy the <filename>codec-example.jar</filename> into your <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib/</filename> directory.
+ Deploy the <filename>codec-example.jar</filename> into your <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib/</filename> directory.
</para>
</step>
<step>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -8,7 +8,7 @@
<section id="sect-Reference_Guide-Predefined_User_Configuration-Overview">
<title>Overview</title>
<para>
- The initial Organization configuration should be specified by editing the content of <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</filename>. This file uses the portal XML configuration schema. It lists several configuration plug-ins.
+ The initial Organization configuration should be specified by editing the content of <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</filename>. This file uses the portal XML configuration schema. It lists several configuration plug-ins.
</para>
</section>
<section id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_adding_users_groups_and_membership_types">
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -6,7 +6,7 @@
<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>
+ <title>Overview and Configuration Assumptions</title>
<para>
JBoss Enterprise Portal Platform provides an implementation of Single Sign On (<literal>SSO</literal>) as an integration and aggregation platform.
</para>
@@ -48,7 +48,7 @@
</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.
+ All the packages required for SSO setup can be found in a zip file located in the <filename><filename>EPP_DIST</filename>/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>.
@@ -62,6 +62,10 @@
Remove <filename>JBOSS_HOME/server/PROFILE/deploy/gatein-sample-extension.ear</filename> and <filename>JBOSS_HOME/server/PROFILE/deploy/gatein-sample-portal.ear</filename> which are packaged by default with JBoss Enterprise Portal Platform.
</para> --> </warning>
</section>
+ <section>
+ <title>SSO Conf</title>
+ <para/>
+ </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
@@ -104,7 +108,7 @@
<title>SSO Integration</title>
<step>
<para>
- Open the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/jbossweb.sar/server.xml</filename> file and uncomment one of the two <parameter>Valve</parameter> entries:
+ Open the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/jbossweb.sar/server.xml</filename> file and uncomment one of the two <parameter>Valve</parameter> entries:
</para>
<itemizedlist>
<listitem>
@@ -167,7 +171,7 @@
</step>
<step>
<para>
- Open the <filename><replaceable>EPP_HOME</replaceable>/server/all/<replaceable>PROFILE</replaceable>/jbossweb.sar/server.xml</filename> file.
+ Open the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/all/<replaceable>PROFILE</replaceable>/jbossweb.sar/server.xml</filename> file.
</para>
</step>
<step>
@@ -236,7 +240,7 @@
<title/>
<step>
<para>
- Open the <filename><replaceable>EPP_HOME</replaceable>/server/node1/deploy/jmx-console.war/WEB-INF/web.xml</filename> file and edit it as follows:
+ Open the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/node1/deploy/jmx-console.war/WEB-INF/web.xml</filename> file and edit it as follows:
</para>
<substeps>
<step>
@@ -302,7 +306,7 @@
<title>Redirect to Use SSO Valve Authentication</title>
<step>
<para>
- Open the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename> file and edit the line:
+ Open the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/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>
@@ -314,7 +318,7 @@
</step>
<step>
<para>
- Open the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename> file and change the line:
+ Open the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/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>
@@ -335,23 +339,20 @@
The integration consists of two parts; the first part consists of installing or configuring a CAS server, the second part consists of setting up the portal to use the CAS server.
</para>
<procedure id="proc-Reference_Guide-Central_Authentication_Service-CAS_server">
- <title>CAS server</title>
+ <title>Installing CAS server, and defining <replaceable>CAS_DIR</replaceable></title>
<step>
<para>
- Set up the server to authenticate against the portal login module.
+ Set up the server to authenticate against the portal login module, as described in <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On_-Enabling_SSO_using_JBoss_SSO_Valve"/>.
</para>
</step>
<step>
<para>
- Downloaded CAS from <ulink url="http://www.jasig.org/cas/download" type="http"> http://www.jasig.org/cas/download </ulink> .
+ Download the latest version of CAS from <ulink url="http://www.jasig.org/cas/download" type="http"/> .
</para>
- <para>
- The version, tested with these instructions is <emphasis role="bold">CAS 3.3.5</emphasis>. Other versions may work.
- </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.
+ Extract the downloaded file into a suitable location. This location is referred to as <replaceable>CAS_DIR</replaceable> in the following example.
</para>
</step>
</procedure>
@@ -370,7 +371,7 @@
The CAS Server Plug-in 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 plug-in 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.
+ In order for the plug-in 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-Central_Authentication_Service-Modifying_CAS_server">
<title>Modifying CAS server</title>
@@ -385,23 +386,32 @@
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default102.xml" parse="text"/></programlisting>
<para>
- with the following (ensure you set the host, port and context with the values corresponding to your portal). Also available in <filename>PORTAL_SSO/cas/plugin/WEB-INF/deployerConfigContext.xml</filename>.):
+ with the following (ensure you set the host, port and context with the values corresponding to your portal). The code is available for direct copy in the <filename>PORTAL_SSO/cas/plugin/WEB-INF/deployerConfigContext.xml</filename> file:
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default103.xml" parse="text"/></programlisting>
</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>
+ Copy the following files into the <filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp/src/main/webapp/WEB-INF/lib</filename> directory:</para>
+ <itemizedlist>
+ <listitem>
+ <para><filename><replaceable>PORTAL_SSO</replaceable>/cas/plugin/WEB-INF/lib/sso-cas-plugin-<replaceable>VERSION</replaceable>.jar</filename></para>
+ </listitem>
+ <listitem>
+ <para><filename><replaceable>PORTAL_SSO</replaceable>/cas/plugin/WEB-INF/lib/commons-httpclient-<replaceable>VERSION</replaceable>.jar</filename></para>
+ </listitem>
+ </itemizedlist>
</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).
+ If you have not already done so, download an instance of Tomcat and extract it into a suitable location (which will be called <filename>
+ <replaceable>HTTPD_DIST</replaceable>
+ </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.
+ Edit <filename><replaceable>HTTPD_DIST</replaceable>/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>
@@ -418,7 +428,7 @@
</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.
+ Copy the <filename><replaceable>CAS_DIR</replaceable>/cas-server-webapp/target/cas.war</filename> file into the <filename>HTTPD_DIST/webapps</filename> directory.
</para>
<para>
Tomcat should start without issue and should be accessible at <ulink url="http://localhost:8888/cas" type="http"> http://localhost:8888/cas </ulink> .
@@ -452,12 +462,12 @@
<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>EPP_HOME/server/default/deploy/gatein.ear/lib</filename>) directory.
+ Copy all the libraries from the <filename><replaceable>PORTAL_SSO</replaceable>/cas/gatein.ear/lib</filename> directory into the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/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:
+ Edit the <filename><replaceable>EPP_DIST</replaceable>/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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default105.xml" parse="text"/></programlisting>
<para>
@@ -501,13 +511,13 @@
<title>Redirect to CAS</title>
<step>
<para>
- Modify the '<emphasis role="bold">Sign In</emphasis>' link in the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename> file as follows:
+ Modify the '<emphasis role="bold">Sign In</emphasis>' link in the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default106.xml" parse="text"/></programlisting>
</step>
<step>
<para>
- Modify the '<emphasis role="bold">Sign In</emphasis>' link in the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/groovy/portal/webui/component/UILogoPortlet.gtmpl</filename> file as follows:
+ Modify the '<emphasis role="bold">Sign In</emphasis>' link in the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default107.xml" parse="text"/></programlisting>
</step>
@@ -529,157 +539,130 @@
</para>
</section>
<section id="sect-Reference_Guide-SSO_Single_Sign_On_-Java_Open_Single_Sign_On_Project">
- <title>Java Open Single Sign-On Project</title>
+ <title><remark>BZ#794433</remark>Java Open Single Sign-On Project</title>
+ <para>Configuring JOSSO for JBoss Enterprise Application Platform requires an Apache server instance to host JOSSO. JBoss Enterprise Application Platform communicates with the JOSSO Apache instance through the Single Sign On plug-in.</para>
<para>
- This Single Sign On plug-in 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> .
+ This Single Sign On plug-in enables seamless integration between JBoss Enterprise Portal Platform and the Java Open Single Sign-On Project (JOSSO) Single Sign On Framework. Details about JOSSO can be found at <ulink url="http://www.josso.org"/> .
</para>
- <para>
- This section details setting up the JOSSO server to authenticate against the JBoss Enterprise Portal Platform login module.
+ <para> The procedures in this section detail setting up the JOSSO server to authenticate against the JBoss Enterprise Portal Platform login module.
</para>
+ <para>After completing all procedures in this section, all links redirecting to the user authentication pages will redirect to the JOSSO centralized authentication form.
+ </para>
<procedure id="proc-Reference_Guide-Java_Open_Single_Sign_On_Project-JOSSO_server">
- <title>JOSSO server</title>
+ <title>Download and extract JOSSO server</title>
<step>
<para>
- Download JOSSO from <ulink url="http://sourceforge.net/projects/josso/files/" type="http"> http://sourceforge.net/projects/josso/files/ </ulink> .
+ Download an embedded Apache JOSSO version from <ulink url="http://sourceforge.net/projects/josso/files/JOSSO/" type="http"> http://sourceforge.net/projects/josso/files/ </ulink> .
</para>
<note>
- <para>
- Use the package that embeds Apache Tomcat. The integration was tested with JOSSO-1.8.1.
- </para>
+ <para>JOSSO versions between 1.8.1 to 1.8.4 are supported. Versions other than these do not offer an embedded Apache instance.</para>
+ <para>The JOSSO version is referred to as <replaceable>josso-18X</replaceable> in all procedures within this section. </para>
</note>
</step>
<step>
<para>
- Extract the package into what will be called <filename>JOSSO_HOME</filename> in this example.
+ Extract the package to an appropriate directory. This location is referred to as <filename>JOSSO_HOME</filename> in this example.
</para>
</step>
</procedure>
<procedure id="proc-Reference_Guide-Java_Open_Single_Sign_On_Project-Modifying_JOSSO_server">
- <title>Modifying JOSSO server</title>
+ <title>Configure the 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>If you have JOSSO 1.8.1, copy the files from <filename>PORTAL_SSO/josso/josso-181/plugin</filename> into the Tomcat directory (<filename>JOSSO_HOME</filename>).</para>
- <para>If you have JOSSO 1.8.2 or newer, copy the files from <filename>PORTAL_SSO/josso/josso-182/plugin</filename> into the Tomcat directory (<filename>JOSSO_HOME</filename>).</para>
- <para>
- This action should replace or add the following files to the <filename>JOSSO_HOME/webapps/josso/WEB-INF/lib</filename> directory:
- </para>
+ <para>Copy the specified files from <filename>PORTAL_SSO/josso/<replaceable>josso-18X</replaceable>/plugin</filename> </para>
<itemizedlist>
<listitem>
- <para>
- <filename>JOSSO_HOME/lib/josso-gateway-config.xml</filename>
- </para>
+ <para>josso-gateway-config.xml</para>
</listitem>
<listitem>
- <para>
- <filename>JOSSO_HOME/lib/josso-gateway-gatein-stores.xml</filename>
- </para>
+ <para>josso-gateway-gatein-stores.xml</para>
</listitem>
- <listitem>
- <para>
- <filename>JOSSO_HOME/webapps/josso/WEB-INF/classes/gatein.properties</filename>
- </para>
- </listitem>
</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.
+ <para>Paste the files into the <filename><replaceable>JOSSO_HOME</replaceable>/webapps/josso/WEB-INF/lib</filename> directory.</para>
+ </step>
+ <step>
+ <para>Copy <filename>PORTAL_SSO/josso/<replaceable>josso-18X</replaceable>/plugin/gatein.properties</filename> to the <filename><replaceable>JOSSO_HOME</replaceable>/webapps/josso/WEB-INF/classes/</filename> directory</para>
+ </step>
+ <step>
+ <para> Edit the <filename>JOSSO_HOME/conf/server.xml</filename> file and change all ports from 8080 to 8888. This port change prevents 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.
+ If JBoss Enterprise Portal Platform is running on the same machine as Apache, 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 <literal>admin</literal> port from 8005 to 8805, and the <literal>AJP</literal> port from 8009 to 8809.
</para>
</note>
</para>
</step>
<step>
- <para>
- Tomcat will start and allow access to <ulink url="http://localhost:8888/josso/signon/login.do" type="http"> http://localhost:8888/josso/signon/login.do </ulink> but at this stage login will not be available.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata width="444" fileref="images/AuthenticationAndIdentity/SSO/opensso.png" format="PNG"/>
- </imageobject>
- </mediaobject>
+ <para>Follow the steps in <xref linkend="proc-Reference_Guide-Java_Open_Single_Sign_On_Project-Setup_the_JOSSO_client"/> to configure the JOSSO Client. </para>
</step>
</procedure>
<procedure id="proc-Reference_Guide-Java_Open_Single_Sign_On_Project-Setup_the_JOSSO_client">
- <title> Setup the JOSSO client</title>
+ <title> Configure the JOSSO client </title>
<note>
<para>
There are some changes in JOSSO agent API between versions 1.8.1 and 1.8.2, which require different modules for different JOSSO versions.
-This procedure uses <replaceable>josso-18X</replaceable> to substitute the directory <emphasis>josso-181</emphasis> if you
-have JOSSO 1.8.1 and <emphasis>josso-182</emphasis> if you have JOSSO 1.8.2 or newer.
+This procedure uses <replaceable>josso-18X</replaceable> to substitute the directory <filename>josso-181</filename>, or josso-182 or newer.
</para>
</note>
<step>
- <para>Copy the library files from <filename><replaceable>PORTAL_SSO</replaceable>/josso/<replaceable>josso-18X</replaceable>/gatein.ear/lib</filename> into <filename>gatein.ear/lib</filename>.</para>
+ <para>Copy the library files from <filename><replaceable>PORTAL_SSO</replaceable>/josso/<replaceable>josso-18X</replaceable>/gatein.ear/lib</filename> into <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib</filename>.</para>
</step>
<step>
<para>
- Copy the <filename><replaceable>PORTAL_SSO</replaceable>/josso/<replaceable>josso-18X</replaceable>/gatein.ear/portal.war/WEB-INF/classes/josso-agent-config.xml</filename> file into the <filename>gatein.ear/02portal.war/WEB-INF/classes</filename> directory.
+ Copy <filename><replaceable>PORTAL_SSO</replaceable>/josso/<replaceable>josso-18X</replaceable>/gatein.ear/portal.war/WEB-INF/classes/josso-agent-config.xml</filename> and paste the file into the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/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:
+ Edit <filename><replaceable>EPP_DIST</replaceable>/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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default111.xml" parse="text"/></programlisting>
</step>
<step>
- <para>
- In Tomcat, edit <filename>EPP_HOME/conf/jaas.conf</filename> and uncomment this section:
- </para>
- <programlisting>org.gatein.sso.agent.login.SSOLoginModule required;
-org.exoplatform.services.security.j2ee.TomcatLoginModule requiredtm
-portalContainerName=portal
-realmName=gatein-domain;
-</programlisting>
+ <para>Follow the procedure in <xref linkend="proc-Test_the_JOSSO_Installation"/> to verify the login configuration is correct. </para>
</step>
+ </procedure>
+ <procedure id="proc-Test_the_JOSSO_Installation">
+ <title>Test the JOSSO Installation</title>
<step>
<para>
- The installation can be tested at this point.
- </para>
- <substeps>
- <step>
- <para>
- Start (or restart) JBoss Enterprise Portal Platform, and (assuming the JOSSO server on Tomcat is running) direct your browser to <ulink url="http://localhost:8888/josso/signon/login.do" type="http"> http://localhost:8888/josso/signon/login.do </ulink> .
+ Start (or restart) JBoss Enterprise Portal Platform.
</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>
- </substeps>
</step>
+ <step>
+ <para>Start (or restart) the JOSSO Apache instance.</para>
+ </step>
+ <step>
+ <para>Open <ulink url="http://localhost:8888/josso/signon/login.do"/> to display the JOSSO login screen.</para>
+ </step>
+ <step>
+ <para>
+ Login with the user name <literal>root</literal> and the password <literal>gtn</literal> or any account created through the portal to verify the configuration to this point is correct. </para>
+ </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-Java_Open_Single_Sign_On_Project-Setup_the_portal_to_redirect_to_JOSSO">
- <title>Setup the portal to redirect to JOSSO</title>
+ <title>Redirect portal authentication to JOSSO</title>
+ <para>Redirect all user authentication to the JOSSO server.
+ Information about where the JOSSO server is hosted must be properly configured within the JBoss Enterprise Portal Platform instance.
+ </para>
<step>
<para>
- In the <filename><replaceable>EPP_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:
+ In the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename> file modify the <guilabel>Sign In</guilabel> link as follows:
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default112.xml" parse="text"/></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:
+ Modify the <guilabel>Sign In</guilabel> 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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default113.xml" parse="text"/></programlisting>
</step>
<step>
<para>
- Replace the entire contents of <filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
+ Replace the entire contents of <filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with the following HTML code:
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default114.xml" parse="text"/></programlisting>
</step>
@@ -690,9 +673,6 @@
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default115.xml" parse="text"/></programlisting>
</step>
</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">
<title>OpenSSO</title>
@@ -765,17 +745,17 @@
<itemizedlist>
<listitem>
<para>
- <filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/sso-opensso-plugin-<VERSION>.jar</filename>
+ <filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/sso-opensso-plugin-<replaceable>VERSION</replaceable>.jar</filename>
</para>
</listitem>
<listitem>
<para>
- <filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar</filename>
+ <filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/commons-httpclient-<replaceable>VERSION</replaceable>.jar</filename>
</para>
</listitem>
<listitem>
<para>
- <filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/commons-logging-<VERSION>.jar</filename>
+ <filename><replaceable>PORTAL_SSO</replaceable>/opensso/plugin/WEB-INF/lib/commons-logging-<replaceable>VERSION</replaceable>.jar</filename>
</para>
</listitem>
</itemizedlist>
@@ -914,15 +894,15 @@
<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>EPP_HOME/server/default/deploy/gatein.ear/lib</filename> directory.
+ Copy all libraries from the <filename><replaceable>PORTAL_SSO</replaceable>/opensso/gatein.ear/lib</filename> directory into the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/default/deploy/gatein.ear/lib</filename> directory.
</para>
<para>
- Alternatively, in a Tomcat environment, copy the libraries into the <filename>EPP_HOMEibib</filename> directory.
+ Alternatively, in a Tomcat environment, copy the libraries into the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/ibib</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:
+ Edit the <filename><replaceable>EPP_DIST</replaceable>/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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default118.xml" parse="text"/></programlisting>
</step>
@@ -968,7 +948,7 @@
<title>Setup the portal to redirect to OpenSSO</title>
<step>
<para>
- Modify the '<emphasis role="bold">Sign In</emphasis>' link in the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtml</filename> file as follows:
+ Modify the '<emphasis role="bold">Sign In</emphasis>' link in the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default119.xml" parse="text"/></programlisting>
</step>
@@ -997,7 +977,7 @@
</section>
</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>
+ <title>Simple and Protected GSSAPI Negotiation Mechanism (SPNEGO)</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>
@@ -1312,10 +1292,10 @@
</step>
<step>
<para>
- Add the SSO module binaries by copying <filename>PORTAL_SSO/spnego/gatein.ear/lib/sso-agent.jar</filename> to the <filename>EPP_HOME/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib/</filename> directory.
+ Add the SSO module binaries by copying <filename>PORTAL_SSO/spnego/gatein.ear/lib/sso-agent.jar</filename> to the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib/</filename> directory.
</para>
<para>
- Copy the <filename>PORTAL_SSO/spnego/gatein.ear/lib/sso-spnego.jar</filename> file to the <filename>EPP_HOME/server/<replaceable>PROFILE</replaceable>/lib</filename> directory.
+ Copy the <filename>PORTAL_SSO/spnego/gatein.ear/lib/sso-spnego.jar</filename> file to the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/lib</filename> directory.
</para>
</step>
<!-- This step not required as EPP already has the correct version of Negotiation 2.0.4.GA
@@ -1328,7 +1308,7 @@
</step>
--> <step>
<para>
- Modify the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename> file to match the following:
+ Modify the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename> file to match the following:
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default126.xml" parse="text"/></programlisting>
<para>
@@ -1337,7 +1317,7 @@
</step>
<step>
<para>
- Modify <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> to match:
+ Modify <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> to match:
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default127.xml" parse="text"/></programlisting>
<para>
@@ -1371,13 +1351,13 @@
</step>
<step>
<para>
- Integrate the request pre-processing needed for SPNEGO via filters by adding the following filters to the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> at the top of the Filter chain.
+ Integrate the request pre-processing needed for SPNEGO via filters by adding the following filters to the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> at the top of the Filter chain.
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default128.xml" parse="text"/></programlisting>
</step>
<step>
<para>
- Edit the '<emphasis role="bold">Sign In</emphasis>' link in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtmpl</filename> to match the following:
+ Edit the '<emphasis role="bold">Sign In</emphasis>' link in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default129.java" parse="text"/></programlisting>
</step>
@@ -1405,7 +1385,7 @@
Clicking the 'Sign In' link on the JBoss Enterprise Portal Platform should automatically sign the 'demo' user into the portal.
</para>
<para>
- If you destroy your kerberos ticket with command <command>kdestroy</command>, then try to login again, you will directed to the login screen of JBoss Enterprise Portal Product because you don't have active Kerberos ticket. You can login with predefined account and password "demo"/"gtn" .
+ If you destroy your kerberos ticket with command <command>kdestroy</command>, then try to login again, you will directed to the login screen of JBoss Enterprise Portal Product because you do not have active Kerberos ticket. You can login with predefined account and password "demo"/"gtn" .
</para>
</section>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -19,47 +19,6 @@
<para>
This book provides a deep-dive information about installation and configuration of the services provided by JBoss Enterprise Portal Platform.
</para>
- <note>
- <title>Notational Devices</title>
- <para>
- Along with the <emphasis>Document Conventions</emphasis> outlined in the <xref linkend="pref-Reference_Guide-Preface"/>, this document will also use the following notational devices:
- <variablelist id="vari-Reference_Guide-Introduction-Devices">
- <title>Devices</title>
- <varlistentry>
- <term>
- <replaceable>EPP_HOME</replaceable>
- </term>
- <listitem>
- <para>
- This device refers to the JBoss Enterprise Application Platform <application>
- <filename>jboss-as</filename>
- </application> directory deployed in JBoss Enterprise Portal Platform by default.
- </para>
- <para>
- Therefore, if your JBoss Enterprise Portal Platform instance is deployed into a directory called <filename>/opt/jboss/jboss-epp-&VY;/</filename>, your <replaceable>EPP_HOME</replaceable> directory is <filename>/opt/jboss/jboss-epp-&VY;/jboss-as/</filename>.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <replaceable>PROFILE</replaceable>
- </term>
- <listitem>
- <para>
- This device will usually follow an instance of <replaceable>EPP_HOME</replaceable> in a file path and refers to the directory that contains the server profile your JBoss Enterprise Portal Platform instance is configured to use.
- </para>
- <para>
- JBoss Enterprise Portal Platform comes with six profiles by default; <emphasis role="bold">all</emphasis>, <emphasis role="bold">default</emphasis>, <emphasis role="bold">minimal</emphasis>, <emphasis role="bold">production</emphasis>, <emphasis role="bold">standard</emphasis> and <emphasis role="bold">web</emphasis>. These profiles are found in the <filename><replaceable>EPP_HOME</replaceable>/server/</filename> directory.
- </para>
- <para>
- Therefore, if you are using the <emphasis>default</emphasis> profile, your <replaceable>PROFILE</replaceable> directory would be <filename><replaceable>EPP_HOME</replaceable>/server/default/</filename>
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- </para>
- </note>
<section id="sect-Reference_Guide-Introduction-Related_Links">
<title>Related Links</title>
<variablelist>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DataImportStrategy.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DataImportStrategy.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DataImportStrategy.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -8,67 +8,63 @@
<section id="sect-Reference_Guide-Data_Import_Strategy-Introduction">
<title>Introduction</title>
<para>
- In the Portal extension mechanism, developers can define an extension that Portal data can be customized by configurations in the extension. There are several cases which an extension developer wants to define how to customize the Portal data, for example modifying, overwriting or just inserting a bit into the data defined by the portal. Therefore, GateIn also defines several modes for each case and the only thing which a developer has to do is to clarify the usecase and reasonably configure extensions.
+ In the Portal extension mechanism, developers can define an extension that Portal data can be customized by configurations in the extension. There are several cases which an extension developer wants to define how to customize the Portal data, for example modifying, overwriting or just inserting a bit into the data defined by the portal. Therefore, GateIn also defines several modes for each case and the only thing which a developer has to do is to clarify the use-case and reasonably configure extensions.
</para>
<para>
This section shows you how data are changes in each mode.
</para>
</section>
- <section id="sect-Reference_Guide-Data_Import_Strategy-Import_Mode">
- <title>Import Mode</title>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Data_Import_Strategy">
+ <title>Data Import Strategy</title>
<para>
- In this section, the following modes for the import strategy are introduced:
- </para>
+ The 'Portal Data' term referred to in this section can be classified into three types of object data: </para>
<itemizedlist>
<listitem>
- <para>
- <literal>CONSERVE</literal>
- </para>
+ <para>Portal Configuration</para>
</listitem>
<listitem>
- <para>
- <literal>MERGE</literal>
- </para>
+ <para>Page Data</para>
</listitem>
<listitem>
- <para>
- <literal>INSERT</literal>
- </para>
+ <para>Navigation Data</para>
</listitem>
- <listitem>
+ </itemizedlist>
+ <para>Each type of object data has some differences in the import strategy.
+ </para>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Portal_Config">
+ <title>Portal Configuration</title>
+ <para>
+ PortalConfig defines the portal name, permission, layout and some properties of a site. These information are configured in the <emphasis>portal.xml</emphasis>, <emphasis>group.xml</emphasis> or <emphasis>user.xml</emphasis>, depending on the site type. The PortalConfig importer performs a strategy that is based on the mode defined in NewPortalConfigListener, including <literal>CONSERVE</literal>, <literal>INSERT</literal>, <literal>MERGE</literal> or <literal>OVERWRITE</literal>. Let's see how the import mode affects in the process of portal data performance:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>CONSERVE</literal>: There is nothing to be imported. The existing data will be kept without any changes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>INSERT</literal>: When the portal configuration does not exist, create the new portal defined by the portal configuration definition. Otherwise, do nothing.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>MERGE</literal> and <literal>OVERWRITE</literal> have the same behavior. The new portal configuration will be created if it does not exist or update portal properties defined by the portal configuration definition.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Page_Data">
+ <title>Page Data</title>
+ <para>
+ The import mode affects the page data import as the same as PortalConfig.
+ </para>
+ <note>
<para>
- <literal>OVERWRITE</literal>
+ If the Import mode is <literal>CONSERVE</literal> or <literal>INSERT</literal>, the data import strategy always performs as the <literal>MERGE</literal> mode in the first data initialization of the Portal.
</para>
- </listitem>
- </itemizedlist>
- <para>
- Each mode indicates how the Portal data are imported. The import mode value is set whenever <literal>NewPortalConfigListener</literal> is initiated. If the mode is not set, the default value will be used in this case. The default value is configurable as a UserPortalConfigService initial param. For example, the bellow configuration means that default value is <literal>MERGE</literal>.
- </para>
- <programlisting language="XML" role="XML">
-<component>
- <key>org.exoplatform.portal.config.UserPortalConfigService</key>
- <type>org.exoplatform.portal.config.UserPortalConfigService</type>
- <component-plugins>
- ............
- </component-plugins>
- <init-params>
- <value-param>
- <name>default.import.mode</name>
- <value>merge</value>
- </value-param>
- </init-params>
-</component>
-
-</programlisting>
- <para>
- The way that the import strategy works with the import mode will be clearly demonstrated in next sections for each type of data.
- </para>
- </section>
- <section id="sect-Reference_Guide-Data_Import_Strategy-Data_Import_Strategy">
- <title>Data Import Strategy</title>
- <para>
- The 'Portal Data' term which has been referred in the previous sections can be classified into three types of object data: Portal Config, Page Data and Navigation Data; each of which has some differences in the import strategy.
- </para>
+ </note>
+ </section>
<section id="sect-Reference_Guide-Data_Import_Strategy-Navigation_Data">
<title>Navigation Data</title>
<para>
@@ -225,39 +221,55 @@
</varlistentry>
</variablelist>
</section>
- <section id="sect-Reference_Guide-Data_Import_Strategy-Portal_Config">
- <title>Portal Config</title>
- <para>
- PortalConfig defines the portal name, permission, layout and some properties of a site. These information are configured in the <emphasis>portal.xml</emphasis>, <emphasis>group.xml</emphasis> or <emphasis>user.xml</emphasis>, depending on the site type. The PortalConfig importer performs a strategy that is based on the mode defined in NewPortalConfigListener, including <literal>CONSERVE</literal>, <literal>INSERT</literal>, <literal>MERGE</literal> or <literal>OVERWRITE</literal>. Let's see how the import mode affects in the process of portal data performance:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <literal>CONSERVE</literal>: There is nothing to be imported. The existing data will be kept without any changes.
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>INSERT</literal>: When the portal config does not exist, create the new portal defined by the portal config definition. Otherwise, do nothing.
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>MERGE</literal> and <literal>OVERWRITE</literal> have the same behavior. The new portal config will be created if it does not exist or update portal properties defined by the portal config definition.
- </para>
- </listitem>
- </itemizedlist>
- </section>
- <section id="sect-Reference_Guide-Data_Import_Strategy-Page_Data">
- <title>Page Data</title>
- <para>
- The import mode affects the page data import as the same as Portal Config.
- </para>
- <note>
+ </section>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Import_Mode">
+ <title>Import Mode</title>
+ <para>
+ In this section, the following modes for the import strategy are introduced:
+ </para>
+ <itemizedlist>
+ <listitem>
<para>
- If the Import mode is <literal>CONSERVE</literal> or <literal>INSERT</literal>, the data import strategy always performs as the <literal>MERGE</literal> mode in the first data initialization of the Portal.
+ <literal>CONSERVE</literal>
</para>
- </note>
- </section>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>MERGE</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>INSERT</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>OVERWRITE</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Each mode indicates how the portal data is imported. The import mode value is set whenever <literal>NewPortalConfigListener</literal> is initiated. If the mode is not set, the default value will be used in this case. The default value is configurable as a UserPortalConfigService initial param. For example, the bellow configuration means that default value is <literal>MERGE</literal>.
+ </para>
+ <programlisting language="XML" role="XML">
+<component>
+ <key>org.exoplatform.portal.config.UserPortalConfigService</key>
+ <type>org.exoplatform.portal.config.UserPortalConfigService</type>
+ <component-plugins>
+ ............
+ </component-plugins>
+ <init-params>
+ <value-param>
+ <name>default.import.mode</name>
+ <value>merge</value>
+ </value-param>
+ </init-params>
+</component>
+
+</programlisting>
+ <para>
+ The way that the import strategy works with the import mode will be clearly demonstrated in next sections for each type of data.
+ </para>
</section>
</chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -209,7 +209,7 @@
This configuration file structure is very similar to <filename>portal.xml</filename> and it can also contain container tags (some usage examples of container tags can be found in <filename>02portal.war/WEB-INF/conf/portal/portal/sharedlayout.xml</filename>).
</para>
<para>
- Each application can decide whether to render the portlet border, the window state, the icons or portlet's mode.
+ Each application can decide whether to render the portlet border, the window state, the icons, or the portlet mode.
</para>
<!-- DOC NOTE: look into including some actual examples of 'container tags' from sharedlayout.xml in place here. --> <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/pages.xml" parse="text"/></programlisting>
</listitem>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalPermissionConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalPermissionConfiguration.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalPermissionConfiguration.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -8,7 +8,7 @@
<section id="sect-Reference_Guide-Portal_Default_Permission_Configuration-Overview">
<title>Overview</title>
<para>
- The default permission configuration for the portal is defined through the <literal>org.exoplatform.portal.config.UserACL</literal> component configuration in the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war:/WEB-INF/conf/portal/portal-configuration.xml</filename> file.
+ The default permission configuration for the portal is defined through the <literal>org.exoplatform.portal.config.UserACL</literal> component configuration in the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/portal/portal-configuration.xml</filename> file.
</para>
<para>
It defines eight permissions types:
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/InternationalizationConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/InternationalizationConfiguration.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/InternationalizationConfiguration.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,237 +1,198 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Internationalization_Configuration">
- <title>Internationalization Configuration</title>
- <section id="sect-Reference_Guide-Internationalization_Configuration-Overview">
- <title>Overview</title>
- <note>
- <title>Assumed Knowledge</title>
- <para>
+ <title>Internationalization Configuration</title>
+ <section id="sect-Reference_Guide-Internationalization_Configuration-Overview">
+ <title>Overview</title>
+ <note>
+ <title>Assumed Knowledge</title>
+ <para>
JBoss Enterprise Portal Platform is fully configurable for internationalization, however users should have a general knowledge of Internationalization in Java products before attempting these configurations.
</para>
- <para>
- Sun Java hosts a comprehensive guide to internationalizing java products at <ulink url="http://java.sun.com/docs/books/tutorial/i18n/TOC.html" />.
+ <para>
+ Sun Java hosts a comprehensive guide to internationalizing Java products at <ulink url="http://java.sun.com/docs/books/tutorial/i18n/TOC.html"/>.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
All JBoss Enterprise Portal Platform applications contain property files for various languages. They are packaged with the portlets applications in a <filename>WEB-INF/classes/locale/</filename> directory.
</para>
- <para>
+ <para>
These files are located in the <filename>classes</filename> folder of the <filename>WEB-INF</filename> directory, so as to be loaded by the <literal>ClassLoader</literal>.
</para>
- <para>
- All resource files are in a subfolder named <literal>locale</literal>.
+ <para>
+ All resource files are in a sub-folder named <literal>locale</literal>.
</para>
- <para>
+ <para>
For instance; the translations for the <emphasis>NavigationPortlet</emphasis> are located in <filename>web.war/WEB-INF/classes/locale/portlet/portal</filename>
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_InternationalizationConfiguration/default147.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_InternationalizationConfiguration/default147.java" parse="text"/></programlisting>
+ <para>
Inside those file are typical <literal>key=value</literal> Java EE properties. For example; in the <literal>Spanish</literal> file:
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_InternationalizationConfiguration/default148.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_InternationalizationConfiguration/default148.java" parse="text"/></programlisting>
+ <para>
There are also properties files in the portal itself. They form the <emphasis role="bold">portal resource bundle</emphasis>.
</para>
- <para>
+ <para>
From a portlet you can then access translations from the portlet itself or shared at the portal level, both are aggregated when you need them.
</para>
- <note>
- <title>Translation in XML Format</title>
- <para>
+ <note>
+ <title>Translation in XML Format</title>
+ <para>
It is also possible to use a proprietary XML format to define translations. This is a more convenient way to translate a document for some languages such as Japanese, Arabic or Russian.
</para>
- <para>
- Property files have to be ISO 8859-1 encoded, while the XML file can define its encoding. As a result it's easier for a human being to read a translation in XML instead of having to decode and encode the property file.
+ <para>
+ Property files have to be ISO 8859-1 encoded, while the XML file can define its encoding. As a result it's easier for a human being to read a translation in XML instead of having to decode and encode the property file.
</para>
- <para>
- For more information refer to: <xref linkend="chap-Reference_Guide-XML_Resources_Bundles" />
+ <para>
+ For more information refer to: <xref linkend="chap-Reference_Guide-XML_Resources_Bundles"/>
</para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-Internationalization_Configuration-Locales_Configuration">
- <title>Locales Configuration</title>
- <para>
- Various languages are available in the portal package. The configuration below will define which languages are shown in the "<emphasis role="bold">Change Language</emphasis>" section and made available to users.
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Internationalization_Configuration-Locales_Configuration">
+ <title>Locales Configuration</title>
+ <para>
+ Various languages are available in the portal package. The configuration below will define which languages are shown in the "<emphasis role="bold">Change Language</emphasis>" section and made available to users.
</para>
- <para>
+ <para>
The <filename>02portal.war:/WEB-INF/conf/common/common-configuration.xml</filename> file of your installation contains the following section:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_InternationalizationConfiguration/default149.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_InternationalizationConfiguration/default149.xml" parse="text"/></programlisting>
+ <para>
This configuration points to the locale configuration file.
</para>
- <para>
+ <para>
The locale configuration file (<filename>02portal.war:/WEB-INF/conf/common/locales-config.xml</filename>) contains the following code:
</para>
- <programlistingco>
- <areaspec>
- <area coords="4" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-locale" />
- <area coords="5" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-output-encoding" />
- <area coords="6" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-input-encoding" />
- <area coords="7" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-description" />
- <area coords="22" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-orientation" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_InternationalizationConfiguration/default150.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-locale">
- <para>
- <emphasis>locale</emphasis>: The locale has to be defined as per the codes defined <ulink type="http" url="http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt">here</ulink>. In this example "<emphasis>ar</emphasis>" is Arabic.
+ <programlistingco>
+ <areaspec>
+ <area coords="4" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-locale"/>
+ <area coords="5" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-output-encoding"/>
+ <area coords="6" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-input-encoding"/>
+ <area coords="7" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-description"/>
+ <area coords="22" id="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-orientation"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_InternationalizationConfiguration/default150.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-locale">
+ <para>
+ <emphasis>locale</emphasis>: The locale has to be defined as per the codes defined <ulink url="http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt" type="http">here</ulink>. In this example "<emphasis>ar</emphasis>" is Arabic.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-output-encoding">
- <para>
- <emphasis>output-encoding</emphasis>: deals with character encoding. It is recommended that <emphasis role="bold">UTF-8</emphasis> be used.
+ </callout>
+ <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-output-encoding">
+ <para>
+ <emphasis>output-encoding</emphasis>: deals with character encoding. It is recommended that UTF-8 be used.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-input-encoding">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-input-encoding">
+ <para>
<emphasis>input-encoding</emphasis>: In the Java implementation, the encoding parameters will be used for the request response stream. The input-encoding parameter will be used for request <literal>setCharacterEncoding(..)</literal>.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-description">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-description">
+ <para>
<emphasis>description</emphasis>: A description of the language
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-orientation">
- <para>
- <emphasis>orientation</emphasis>: Although the default orientation of text and images is Left-To-Right, JBoss Enterprise Portal Platform supports <emphasis role="bold">Right-To-Left</emphasis> orientation. Modifying text orientation is explained in <xref linkend="chap-Reference_Guide-Right_To_Left_RTL_Framework" />.
+ </callout>
+ <callout arearefs="area-Reference_Guide-Internationalization_Configuration-Locales_Configuration-orientation">
+ <para>
+ <emphasis>orientation</emphasis>: Although the default orientation of text and images is Left-To-Right, JBoss Enterprise Portal Platform supports <emphasis role="bold">Right-To-Left</emphasis> orientation. Modifying text orientation is explained in <xref linkend="chap-Reference_Guide-Right_To_Left_RTL_Framework"/>.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Internationalization_Configuration-ResourceBundleService">
- <title>ResourceBundleService</title>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </section>
+ <section id="sect-Reference_Guide-Internationalization_Configuration-ResourceBundleService">
+ <title>ResourceBundleService</title>
+ <para>
The resource bundle service is configured in: <filename>02portal.war:/WEB-INF/conf/common/common-configuration.xml</filename>:
</para>
- <programlistingco>
- <areaspec>
- <area coords="6 60" id="area-Reference_Guide-Internationalization_Configuration-ResourceBundleService-classpath_resources" />
- <area coords="24 60" id="area-Reference_Guide-Internationalization_Configuration-ResourceBundleService-portal_resource_names" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_InternationalizationConfiguration/default151.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Internationalization_Configuration-ResourceBundleService-classpath_resources">
- <para>
+ <programlistingco>
+ <areaspec>
+ <area coords="6 60" id="area-Reference_Guide-Internationalization_Configuration-ResourceBundleService-classpath_resources"/>
+ <area coords="24 60" id="area-Reference_Guide-Internationalization_Configuration-ResourceBundleService-portal_resource_names"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_InternationalizationConfiguration/default151.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Internationalization_Configuration-ResourceBundleService-classpath_resources">
+ <para>
<emphasis>classpath.resources</emphasis>: These are discussed in a later section.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Internationalization_Configuration-ResourceBundleService-portal_resource_names">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Internationalization_Configuration-ResourceBundleService-portal_resource_names">
+ <para>
<emphasis>portal.resource.names</emphasis>: Defines all resources that belong to the <emphasis>Portal Resource Bundle</emphasis>.
</para>
- <para>
+ <para>
These resources are merged to a single resource bundle which is accessible from anywhere in JBoss Enterprise Portal Platform. All these keys are located in the same bundle, which is separated from the navigation resource bundles.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Internationalization_Configuration-Navigation_Resource_Bundles">
- <title>Navigation Resource Bundles</title>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </section>
+ <section id="sect-Reference_Guide-Internationalization_Configuration-Navigation_Resource_Bundles">
+ <title>Navigation Resource Bundles</title>
+ <para>
There is a resource bundle for each navigation. A navigation can exist for user, groups, and portal.
</para>
- <para>
+ <para>
The previous example shows bundle definitions for the navigation of the classic portal and of four different groups. Each of these resource bundles occupies a different sphere, they are independent of each other and they are not included in the <parameter>portal.resource.names</parameter> parameter.
</para>
- <para>
+ <para>
The properties for a group must be in the <filename>WEB-INF/classes/locale/navigation/group/</filename> folder. For example; <literal>/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_en.properties</literal>.
</para>
- <para>
- The folder and file names must correspond to the group hierarchy. The group name "<parameter>executive-board</parameter>" is followed by the <emphasis role="bold">iso 639</emphasis> code.
+ <para>
+ The folder and file names must correspond to the group hierarchy. The group name "<parameter>executive-board</parameter>" is followed by the ISO 639 code.
</para>
- <para>
+ <para>
Each language defined in <parameter>LocalesConfig</parameter> must have a resource file defined. If the name of a group is changed the name of the folder and/or files of the correspondent navigation resource bundles must also be changed.
</para>
- <para>
+ <para>
Content of <filename>executive-board_en.properties</filename>:
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_InternationalizationConfiguration/default152.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_InternationalizationConfiguration/default152.java" parse="text"/></programlisting>
+ <para>
This resource bundle is only accessible for the navigation of the <parameter>organization.management.executive-board</parameter> group.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Internationalization_Configuration-Portlets">
- <title>Portlets</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Internationalization_Configuration-Portlets">
+ <title>Portlets</title>
+ <para>
Portlets are independent applications and deliver their own resource files.
</para>
- <para>
- All shipped portlet resources are located in the <emphasis role="bold">locale/portlet</emphasis> subfolder. The ResourceBundleService parameter <emphasis role="bold">classpath.resources</emphasis> defines this subfolder. <!-- Doing so the resource file that are in ~~locale/portlet~~ will never be stored in the JCR and reloaded at each start of the application server. -->
+ <para>
+ All shipped portlet resources are located in the <emphasis role="bold">locale/portlet</emphasis> sub-folder. The ResourceBundleService parameter <emphasis role="bold">classpath.resources</emphasis> defines this sub-folder. <!-- Doing so the resource file that are in ~~locale/portlet~~ will never be stored in the JCR and reloaded at each start of the application server. -->
</para>
- <procedure id="proc-Reference_Guide-Portlets-To_add_a_Spanish_translation_to_the_GadgetPortlet">
- <title>To add a Spanish translation to the <parameter>GadgetPortlet</parameter></title>
- <step>
- <para>
+ <procedure id="proc-Reference_Guide-Portlets-To_add_a_Spanish_translation_to_the_GadgetPortlet">
+ <title>To add a Spanish translation to the GadgetPortlet</title>
+ <step>
+ <para>
Create the file <literal>GadgetPortlet_es.properties</literal> in: <filename>WEB-INF/classes/locale/portlet/gadget/GadgetPortlet</filename>.
</para>
-
- </step>
- <step>
- <para>
- In <filename>portlet.xml</filename>, add <parameter>Spanish</parameter> as a <emphasis role="bold">supported-locale</emphasis> ('<emphasis role="bold">es</emphasis>' is the two letter code for Spanish). The <emphasis role="bold">resource-bundle</emphasis> is already declared and is the same for all languages :
+ </step>
+ <step>
+ <para>
+ In <filename>portlet.xml</filename>, add <parameter>Spanish</parameter> as a <emphasis role="bold">supported-locale</emphasis> ('<emphasis role="bold">es</emphasis>' is the two letter code for Spanish). The <emphasis role="bold">resource-bundle</emphasis> is already declared and is the same for all languages :
</para>
-
-<programlisting language="XML" role="XML"><supported-locale>en</supported-locale>
+ <programlisting language="XML" role="XML"><supported-locale>en</supported-locale>
<supported-locale>es</supported-locale>
<resource-bundle>locale.portlet.gadget.GadgetPortlet</resource-bundle></programlisting>
-
- </step>
-
- </procedure>
-
- <para>
+ </step>
+ </procedure>
+ <para>
See the portlet specification for more details about portlet internationalization.
</para>
- <section id="sect-Reference_Guide-Portlets-Standard_Portlet_Resource_Keys">
- <title>Standard Portlet Resource Keys</title>
- <para>
+ <section id="sect-Reference_Guide-Portlets-Standard_Portlet_Resource_Keys">
+ <title>Standard Portlet Resource Keys</title>
+ <para>
The portlet specification defines three standard keys: <emphasis>Title</emphasis>, <emphasis>Short Title</emphasis> and <emphasis>Keywords</emphasis>. Keywords is formatted as a comma-separated list of tags.
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_InternationalizationConfiguration/default154.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <!-- Commented out as not fully enterprise ready: https://jira.jboss.org/browse/GTNPORTAL-1482
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_InternationalizationConfiguration/default154.java" parse="text"/></programlisting>
+ </section>
+<!-- Commented out as not fully enterprise ready: https://jira.jboss.org/browse/GTNPORTAL-1482
Will reinstate when issues resolved
<section id="sect-Reference_Guide-_Portlets_-Debugging_Resource_Bundle_Usage">
<title>Debugging Resource Bundle Usage</title>
@@ -290,9 +251,5 @@
<para>
For example, the translated value for the key "<parameter>organization.title</parameter>" is simply the value "<parameter>organization.title</parameter>". Selecting that language allows use of the portal and its applications with all the keys visible. This makes it easier to find out the correct key for a given label in the portal page.
</para>
-</section> -->
- </section>
-
-
+</section> --> </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/JavascriptInterApplicationCommunication.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/JavascriptInterApplicationCommunication.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/JavascriptInterApplicationCommunication.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,213 +1,168 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JavaScript_Inter_Application_Communication">
- <title>JavaScript Inter Application Communication</title>
- <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Overview">
- <title>Overview</title>
- <para>
- JavaScript Inter Application Communication is designed to allow applications within a page to exchange data. This library is made for broadcasting messages on topic.
- </para>
- <para>
- It is based on three functions:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Subscribe.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Publish.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Unsubscribe.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- A subscription to a topic will receive any subtopic messages. For example, an application subscribed to "<literal>/eXo/application</literal>" will receive messages sent on the "<literal>/eXo/application/map</literal>" topic. A message sent on "<literal>/eXo</literal>", however, would not be received.
- </para>
- <variablelist id="vari-Reference_Guide-Overview-Subscription_Topics">
- <title>Subscription Topics</title>
- <varlistentry>
- <term>/eXo</term>
- <listitem>
- <para>
- This topic contains all the events generated by the platform.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>/eXo/portal/notification</term>
- <listitem>
- <para>
- A message is sent on this topic will prompt a pop-up notification in the top right of the screen.
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Library">
- <title>Library</title>
- <para>
- The Inter Application Communication library is found in <filename>01eXoResources.war:/javascript/eXo/core/Topic.js</filename>
- </para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_JavascriptInterApplicationCommunication/default155.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Syntax">
- <title>Syntax</title>
- <para>
- The three messaging functions require particular objects and definitions in their syntax:
- </para>
- <variablelist>
- <varlistentry>
- <term>Subscribe</term>
- <listitem>
- <para>
- The <literal>subscribe</literal> function is used to subscribe a callback to a topic. It uses the following parameters:
- </para>
- <variablelist>
- <varlistentry>
- <term>topic</term>
- <listitem>
- <para>
- The topic that will be listened for.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>func</term>
- <listitem>
- <para>
- The name of the object function to call when a message is received on the topic. It has to be a function that takes an Object parameter. The event received will have this format:
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_JavascriptInterApplicationCommunication/default156.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <!-- <programlisting>{
+ <title>JavaScript Inter Application Communication</title>
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Overview">
+ <title>Overview</title>
+ <para>
+ JavaScript Inter Application Communication is designed to allow applications within a page to exchange data. This library is made for broadcasting messages on topic.
+ </para>
+ <para>
+ It is based on three functions:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Subscribe.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Publish.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Unsubscribe.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ A subscription to a topic will receive any subtopic messages. For example, an application subscribed to "<literal>/eXo/application</literal>" will receive messages sent on the "<literal>/eXo/application/map</literal>" topic. A message sent on "<literal>/eXo</literal>", however, would not be received.
+ </para>
+ <variablelist id="vari-Reference_Guide-Overview-Subscription_Topics">
+ <title>Subscription Topics</title>
+ <varlistentry>
+ <term>/eXo</term>
+ <listitem>
+ <para>
+ This topic contains all the events generated by the platform.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>/eXo/portal/notification</term>
+ <listitem>
+ <para>
+ A message is sent on this topic will prompt a pop-up notification in the top right of the screen.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Library">
+ <title>Library</title>
+ <para>
+ The Inter Application Communication library is found in <filename>01eXoResources.war:/javascript/eXo/core/Topic.js</filename>
+ </para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_JavascriptInterApplicationCommunication/default155.java" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Syntax">
+ <title>Syntax</title>
+ <para>
+ The three messaging functions require particular objects and definitions in their syntax:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Subscribe</term>
+ <listitem>
+ <para>
+ The <literal>subscribe</literal> function is used to subscribe a callback to a topic. It uses the following parameters:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>topic</term>
+ <listitem>
+ <para>
+ The topic that will be listened for.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>func</term>
+ <listitem>
+ <para>
+ The name of the object function to call when a message is received on the topic. It has to be a function that takes an Object parameter. The event received will have this format:
+<programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_JavascriptInterApplicationCommunication/default156.java" parse="text"/></programlisting>
+ <!-- <programlisting>{
senderId:senderId,
message:message,
topic: topic
}
</programlisting> -->
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Publish</term>
- <listitem>
- <para>
- The <literal>publish</literal> function is used to publish an event to the other subscribed applications through the given channels. Its parameters are:
- </para>
- <variablelist>
- <varlistentry>
- <term>senderId</term>
- <listitem>
- <para>
- This is a string that identifies the sender.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>topicName</term>
- <listitem>
- <para>
- The topic that the message will be published.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>message</term>
- <listitem>
- <para>
- This is the message body to be delivered to the subscribers to the topic.
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Unsubscribe</term>
- <listitem>
- <para>
- The <literal>unsubscribe</literal> function is used to unsubscribe a callback to a topic. The required parameters are:
- </para>
- <variablelist>
- <varlistentry>
- <term>topic</term>
- <listitem>
- <para>
- The topic that will is to be unsubscribed from.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>id</term>
- <listitem>
- <para>
- This is the context object.
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Example_of_Javascript_events_usage">
- <title>Example of Javascript events usage</title>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_JavascriptInterApplicationCommunication/default157.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Publish</term>
+ <listitem>
+ <para>
+ The <literal>publish</literal> function is used to publish an event to the other subscribed applications through the given channels. Its parameters are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>senderId</term>
+ <listitem>
+ <para>
+ This is a string that identifies the sender.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>topicName</term>
+ <listitem>
+ <para>
+ The topic that the message will be published.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>message</term>
+ <listitem>
+ <para>
+ This is the message body to be delivered to the subscribers to the topic.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Unsubscribe</term>
+ <listitem>
+ <para>
+ The <literal>unsubscribe</literal> function is used to unsubscribe a callback to a topic. The required parameters are:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>topic</term>
+ <listitem>
+ <para>
+ The topic that will is to be unsubscribed from.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>id</term>
+ <listitem>
+ <para>
+ This is the context object.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Example_of_Javascript_events_usage">
+ <title>Example of JavaScript events usage</title>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_JavascriptInterApplicationCommunication/default157.xml" parse="text"/></programlisting>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -57,7 +57,7 @@
The returned <literal>Locale</literal> has to be one of the locales supported by portal, otherwise it will fall back to the portal default <literal>Locale</literal>.
</para>
<para>
- The supported locales are listed in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/common/locales-config.xml</filename> file as described in <xref linkend="sect-Reference_Guide-Internationalization_Configuration-Locales_Configuration"/> .
+ The supported locales are listed in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/common/locales-config.xml</filename> file as described in <xref linkend="sect-Reference_Guide-Internationalization_Configuration-Locales_Configuration"/> .
</para>
<para>
The <literal>determineLocale()</literal> method takes a parameter of type <literal>LocaleContextInfo</literal>, which represents a compilation of preferred locales from different sources; user’s profile, portal default, browser language settings, current session, browser cookie.
@@ -204,7 +204,7 @@
<section id="sect-Reference_Guide-Pluggable_Locale_Policy-LocalePolicy_Configuration">
<title>LocalePolicy Configuration</title>
<para>
- The <literal>LocalePolicy</literal> framework is enabled for portlets by configuring <literal>LocalizationLifecycle</literal> class in portal's webui configuration file: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/webui-configuration.xml</filename>:
+ The <literal>LocalePolicy</literal> framework is enabled for portlets by configuring <literal>LocalizationLifecycle</literal> class in portal's webui configuration file: <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/webui-configuration.xml</filename>:
</para>
<programlisting language="XML" role="XML"><application-life-cycle-listeners>
...
@@ -212,7 +212,7 @@
</application-life-cycle-listeners>
</programlisting>
<para>
- The default <literal>LocalePolicy</literal> implementation is installed as an eXo Kernel portal service via <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/portal/web-configuration.xml</filename>.
+ The default <literal>LocalePolicy</literal> implementation is installed as an eXo Kernel portal service via <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/portal/web-configuration.xml</filename>.
</para>
<para>
The following excerpt is responsible for installing the service:
@@ -229,10 +229,10 @@
<section id="sect-Reference_Guide-Pluggable_Locale_Policy-Keeping_non_bridged_resources_in_sync_with_current_Locale">
<title>Keeping non-bridged resources in sync with current Locale</title>
<para>
- All the resources in portals that are not portlets themselves, but are accessed through portlets - reading data through <literal>PortletRequest</literal>, and writing to <literal>PortletResponse</literal> - are referred to as 'bridged'. Any resources that are accessed directly, bypassing portal filters and servlets, are referred to as 'non-bridged'.
+ All the resources in portals that are not portlets themselves, but are accessed through portlets - reading data through <literal>PortletRequest</literal>, and writing to <literal>PortletResponse</literal> - are referred to as 'bridged'. Any resources that are accessed directly, bypassing portal filters and servlets, are referred to as <firstterm>non-bridged</firstterm>.
</para>
<para>
- Non-bridged servlets, and .jsps have no access to <literal>PortalRequest</literal>. They don't use <literal>PortletRequest.getLocale()</literal> to determine current <literal>Locale</literal>. Instead, they use <literal>ServletRequest.getLocale()</literal> which is subject to precise semantics defined by Servlet specification - it reflects browser's language preference.
+ Non-bridged servlets, and .jsps have no access to <literal>PortalRequest</literal>. They do not use <literal>PortletRequest.getLocale()</literal> to determine current <literal>Locale</literal>. Instead, they use <literal>ServletRequest.getLocale()</literal> which is subject to precise semantics defined by Servlet specification - it reflects browser's language preference.
</para>
<para>
In other words, non-bridged resources do not have a notion of current <literal>Locale</literal> in the same sense that portlets do. The result is that when mixing portlets and non-bridged resources there may be a localization mismatch, an inconsistency in the language used by different resources composing your portal page.
@@ -244,7 +244,7 @@
That way even localization of servlets, and .jsps accessed in a non-bridged manner can stay in sync with portlet localization.
</para>
<para>
- <literal>LocalizationFilter</literal> is installed through the portal's web.xml file: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename>.
+ <literal>LocalizationFilter</literal> is installed through the portal's web.xml file: <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename>.
</para>
<programlisting language="XML" role="XML"><filter>
<filter-name>LocalizationFilter</filter-name>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -459,7 +459,7 @@
</para>
<section id="sect-Reference_Guide-Rendering-_PortalURL_">
<title>
- <emphasis role="bold">PortalURL</emphasis>
+ <emphasis role="bold">Portal URL</emphasis>
</title>
<para>
<code>PortalURL</code> play a similar role at the portal level, its main role is to abstract the creation of an URL for a resource managed by the portal.
@@ -589,7 +589,7 @@
</para>
</section>
<section id="sect-Reference_Guide-Rendering-Portlet_URLs">
- <title>Portlet URLs</title>
+ <title>Portlet URL</title>
<para>
Portlet URLs API implementation delegates to the portal <code>ComponentURL</code> (via the portlet container SPI). It is possible to control the language in the URL from a <code>PortletURL</code> object by setting a property named <code>gtn:lang</code>:
</para>
@@ -617,7 +617,7 @@
</programlisting>
</section>
<section id="sect-Reference_Guide-Rendering-Webui_URLBuilder_">
- <title>Webui <code>URLBuilder</code></title>
+ <title>WebUI <code>URL Builder</code></title>
<para>
This internal API for creating URL works as before and delegates to the <code>PortletURL</code> API when the framework is executed in a portlet and to a <code>ComponentURL</code> API when the framework is executed in the portal context. The API has been modified to take in account the language in URL with two properties on the builder:
</para>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/RTLFramework.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/RTLFramework.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/RTLFramework.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -67,7 +67,7 @@
It works by appending -lt or -rt to the stylesheet name.
</para>
<para>
- For instance: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet-rt.css</filename> will return the same stylesheet as <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css</filename> but processed for the RT orientation. The <parameter>-lt</parameter> suffix is optional.
+ For instance: <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet-rt.css</filename> will return the same stylesheet as <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css</filename> but processed for the RT orientation. The <parameter>-lt</parameter> suffix is optional.
</para>
<para>
Stylesheet authors can annotate their stylesheet to create content that depends on the orientation.
@@ -112,7 +112,7 @@
The web resource filter uses the same naming pattern as the skin service. When an image ends with the -rt suffix the portal will attempt to locate the original image and create a mirror of it.
</para>
<para>
- For instance: requesting the image <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/01eXoResources.war/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle-rt.gif</filename> returns a mirror of the image <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/01eXoResources.war/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle.gif</filename>.
+ For instance: requesting the image <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/01eXoResources.war/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle-rt.gif</filename> returns a mirror of the image <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/01eXoResources.war/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle.gif</filename>.
</para>
<note>
<para>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/Skinning.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/Skinning.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/Skinning.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,575 +1,452 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
- <chapter id="chap-Reference_Guide-Skinning_the_Portal">
- <title>Skinning the Portal</title>
-
- <section id="sect-Reference_Guide-Skinning_the_Portal-Overview">
- <title>Overview</title>
-
- <para>
+<chapter id="chap-Reference_Guide-Skinning_the_Portal">
+ <title>Skinning the Portal</title>
+ <section id="sect-Reference_Guide-Skinning_the_Portal-Overview">
+ <title>Overview</title>
+ <para>
JBoss Enterprise Portal Platform provides robust skinning support for the entire portal User Interface (UI). This includes support for skinning all of the common portal elements as well as being able to provide custom skins and window decoration for individual portlets. This has been designed with common graphic resource reuse and ease of development in mind.
</para>
- </section>
-
- <section id="sect-Reference_Guide-Skinning_the_Portal-Skin_Components">
- <title>Skin Components</title>
-
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Skinning_the_Portal-Skin_Components">
+ <title>Skin Components</title>
+ <para>
The skin of a page is composed of three separate parts:
</para>
-
- <variablelist>
- <varlistentry>
- <term>Portal Skin</term>
-
- <listitem>
- <para>
+ <variablelist>
+ <varlistentry>
+ <term>Portal Skin</term>
+ <listitem>
+ <para>
The portal skin contains the CSS styles for the portal and its various UI components. This should include all the UI components except for the window decorators and portlet specific styles.
</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Window Styles</term>
-
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Window Styles</term>
+ <listitem>
+ <para>
The CSS styles associated with the portlet window decorators. The window decorators contain the control buttons and borders surrounding each portlet. Individual portlets can have their own window decorator selected or be rendered without one.
</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Portlet Skins</term>
-
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Portlet Skins</term>
+ <listitem>
+ <para>
The portlet skins dictate how portlets are rendered on the page. There are two main ways they can be effected:
</para>
-
- <variablelist>
- <varlistentry>
- <term>Portlet Specification CSS Classes</term>
-
- <listitem>
- <para>
+ <variablelist>
+ <varlistentry>
+ <term>Portlet Specification CSS Classes</term>
+ <listitem>
+ <para>
The portlet specification defines a set of CSS classes that should be available to portlets. JBoss Enterprise Portal Platform provides these classes as part of the portal skin. This allows each portal skin to define its own look and feel for these default values.
</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Portlet Skins</term>
-
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Portlet Skins</term>
+ <listitem>
+ <para>
JBoss Enterprise Portal Platform provides a means for portlet CSS files to be loaded based on the current portal skin. This allows a portlet to provide different CSS styles to better match the current portal look and feel. Portlet skins provide a much more customizable CSS experience than just using the portlet specification CSS classes.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
+ </listitem>
</varlistentry>
- </variablelist>
-
- <note>
- <title>CSS Classes</title>
-
- <para>
- The window decorators and the default portlet specification CSS classes should be considered separate types of skinning components, but they need to be included as part of the overall portal skin. The portal skin must include these components' CSS classes or they will not be displayed correctly.
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <note>
+ <title>CSS Classes</title>
+ <para>
+ The window decorators and the default portlet specification CSS classes should be considered separate types of skinning components. They need to be included as part of the overall portal skin otherwise they will not be displayed correctly.
</para>
-
- <para>
+ <para>
A portlet skin does not need to be included as part of the portal skin and can be included within the portlets web application.
</para>
- </note>
- </section>
-
- <section id="sect-Reference_Guide-Skinning_the_Portal-Skin_Selection">
- <title>Skin Selection</title>
-
- <section id="sect-Reference_Guide-Skin_Selection-Skin_Selection_Through_the_User_Interface">
- <title>Skin Selection Through the User Interface</title>
-
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Skinning_the_Portal-Skin_Selection">
+ <title>Skin Selection</title>
+ <section id="sect-Reference_Guide-Skin_Selection-Skin_Selection_Through_the_User_Interface">
+ <title>Skin Selection Through the User Interface</title>
+ <para>
A skin can be selected to be displayed to the user by multiple means. The easiest way to change the skin is to select it through the user interface. An administrator can change the default skin for the portal, or a logged in user can select which skin they would prefer to be displayed.
</para>
-
- <para>
- Please see the <ulink type="http" url="http://www.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform/">User Guide</ulink> for information on how to change the skin using the user interface.
+ <para>
+ Please see the <ulink url="http://www.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform/" type="http">User Guide</ulink> for information on how to change the skin using the user interface.
</para>
- </section>
-
- <section id="sect-Reference_Guide-Skin_Selection-Setting_the_Default_Skin_within_the_Configuration_Files">
- <title>Setting the Default Skin within the Configuration Files</title>
-
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Skin_Selection-Setting_the_Default_Skin_within_the_Configuration_Files">
+ <title>Setting the Default Skin within the Configuration Files</title>
+ <para>
The default skin can also be configured using the portal configuration files. This allows the portal to have the new default skin ready for use when JBoss Enterprise Portal Platform is first started.
</para>
-
- <para>
+ <para>
The default skin of the portal is called <literal>Default</literal>. To change this value add a <literal>skin</literal> tag in the <literal>02portal.war/WEB-INF/conf/portal/portal/classic/portal.xml</literal> configuration file.
</para>
-
- <para>
+ <para>
To change the skin to <literal>MySkin</literal> you would make the following changes:
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default180.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
- </section>
-
- <section id="sect-Reference_Guide-Skinning_the_Portal-Skins_in_Page_Markups">
- <title>Skins in Page Markups</title>
-
- <para>
- A JBoss Enterprise Portal Platform skin contains CSS styles for the portal's components but also shares components that may be reused in portlets. When JBoss Enterprise Portal Platform generates a portal page markup, it inserts stylesheet links in the page's <literal>head</literal> tag.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default180.xml" parse="text"/></programlisting>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Skinning_the_Portal-Skins_in_Page_Markups">
+ <title>Skins in Page Markups</title>
+ <para>
+ A JBoss Enterprise Portal Platform skin contains CSS styles for the portal's components but also shares components that may be reused in portlets. When JBoss Enterprise Portal Platform generates a portal page markup, it inserts stylesheet links in the page's <literal>head</literal> tag.
</para>
-
- <para>
+ <para>
There are two main types of CSS links that will appear in the <literal>head</literal> tag: a link to the portal skin CSS file and a link to the portlet skin CSS files.
</para>
-
- <variablelist>
- <varlistentry>
- <term>Portal Skin</term>
-
- <listitem>
- <para>
+ <variablelist>
+ <varlistentry>
+ <term>Portal Skin</term>
+ <listitem>
+ <para>
The portal skin will appear as a single link to a CSS file. This link will contain contents from all the portal skin classes merged into one file. This allows the portal skin to be transferred as a single file instead of multiple smaller files.
</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Portlet Skin</term>
-
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Portlet Skin</term>
+ <listitem>
+ <para>
Each portlet on a page may contribute its own style. The link to the portlet skin will only appear on the page if that portlet is loaded on the current page. A page may contain many portlet skin CSS links or none.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
In the code fragment below you can see the two types of links:
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default181.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <note>
- <title>CSS Classes</title>
-
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default181.xml" parse="text"/></programlisting>
+ <note>
+ <title>CSS Classes</title>
+ <para>
Window styles and the portlet specification CSS classes are included within the portal skin.
</para>
- </note>
- </section>
-
- <section id="sect-Reference_Guide-Skinning_the_Portal-The_Skin_Service">
- <title>The Skin Service</title>
-
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Skinning_the_Portal-The_Skin_Service">
+ <title>The Skin Service</title>
+ <para>
The skin service manages the various types of skins. It is responsible for discovering and deploying skins into the portal.
</para>
-
- <section id="sect-Reference_Guide-The_Skin_Service-Skin_configuration">
- <title>Skin configuration</title>
-
- <para>
+ <section id="sect-Reference_Guide-The_Skin_Service-Skin_configuration">
+ <title>Skin configuration</title>
+ <para>
JBoss Enterprise Portal Platform automatically discovers web archives that contain a file descriptor for skins (<filename>WEB-INF/gatein-resources.xml</filename>). This file is responsible for specifying the portal, portlet and window decorators to be deployed into the skin service.
</para>
-
- <para>
- The full schema can be found at: <ulink type="http" url="http://www.gatein.org/xml/ns/gatein_resources_1_2" />.
+ <para>
+ The full schema can be found at: <ulink url="http://www.gatein.org/xml/ns/gatein_resources_1_2" type="http"/>.
</para>
-
- <para>
+ <para>
Below is an example of where to define a skin (<literal>MySkin</literal>) with its CSS location, and specify some window decorator skins:
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default182.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-The_Skin_Service-Resource_Request_Filter">
- <title>Resource Request Filter</title>
-
- <para>
- Because of JBoss Enterprise Portal Platform's Right-To-Left support, all CSS files need to be retrieved through a Servlet filter and the web application needs to be configured to activate this filter. This is already done for <literal>01eXoResources.war</literal> web application which contains the default skin.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default182.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-The_Skin_Service-Resource_Request_Filter">
+ <title>Resource Request Filter</title>
+ <para>
+ Because of JBoss Enterprise Portal Platform's Right-To-Left support, all CSS files need to be retrieved through a Servlet filter and the web application needs to be configured to activate this filter. This is already done for <literal>01eXoResources.war</literal> web application which contains the default skin.
</para>
-
- <para>
+ <para>
Any new web applications containing skinning CSS files will need to have the following added to their <filename>web.xml</filename> :
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default183.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <note>
- <title>The <literal>display-name</literal> Element</title>
-
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default183.xml" parse="text"/></programlisting>
+ <note>
+ <title>The <literal>display-name</literal> Element</title>
+ <para>
The <literal>display-name</literal> element will also need to be specified in the <literal>web.xml</literal> for the skinning service to work properly with the web application.
</para>
- </note>
- </section>
- </section>
-
- <section id="sect-Reference_Guide-Skinning_the_Portal-The_Default_Skin">
- <title>The Default Skin</title>
-
- <para>
+ </note>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Skinning_the_Portal-The_Default_Skin">
+ <title>The Default Skin</title>
+ <para>
The default skin for JBoss Enterprise Portal Platform is located as part of the <literal>01eXoResources.war</literal>. The main files associated with the skin are:
</para>
-
- <variablelist>
- <varlistentry>
- <term>WEB-INF/gatein-resources.xml</term>
-
- <listitem>
- <para>
- For the default portal skin, this file contains definitions for the portal skin, the window decorations that this skin provides and well as defining some javascript resources which are not related to the skin. The default portal skin doesn't directly define portlet skins, these should be provided by the portlets themselves.
+ <variablelist>
+ <varlistentry>
+ <term>WEB-INF/gatein-resources.xml</term>
+ <listitem>
+ <para>
+ For the default portal skin, this file contains definitions for the portal skin, the window decorations that this skin provides and well as defining some JavaScript resources which are not related to the skin. The default portal skin doesn't directly define portlet skins, these should be provided by the portlets themselves.
</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>WEB-INF/web.xml</term>
-
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WEB-INF/web.xml</term>
+ <listitem>
+ <para>
For the default portal skin, the <filename>web.xml</filename> of the <literal>eXoResources.war</literal> will contains a lot of information which is mostly irrelevant to the portal skinning. The area of interest in this file is the <literal>resourcerequestfilter</literal> and the fact that the <parameter>display-name</parameter> is set.
</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>skin/Stylesheet.css</term>
-
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>skin/Stylesheet.css</term>
+ <listitem>
+ <para>
This file is the main portal skin stylesheet. It is the main entry point to the CSS class definitions for the skin. The main content points of this file are:
</para>
-
- <programlistingco>
-<areaspec>
- <area coords="1" id="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-uiportletapplication" />
- <area coords="2" id="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-components" />
- <area coords="3" id="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-portletthemes" />
- <area coords="4" id="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-portlet" />
-
- </areaspec>
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_Skinning/default184.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-uiportletapplication">
- <para>
+ <programlistingco>
+ <areaspec>
+ <area coords="1" id="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-uiportletapplication"/>
+ <area coords="2" id="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-components"/>
+ <area coords="3" id="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-portletthemes"/>
+ <area coords="4" id="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-portlet"/>
+ </areaspec>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default184.java" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-uiportletapplication">
+ <para>
The skin for the main portal page.
</para>
- </callout>
-
-
-
- <callout arearefs="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-components">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-components">
+ <para>
Skins for various portal components.
</para>
- </callout>
-
-
-
- <callout arearefs="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-portletthemes">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-portletthemes">
+ <para>
Window decoration skins.
</para>
- </callout>
-
-
-
- <callout arearefs="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-portlet">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Skinning_the_Portal-The_Default_Skin-portlet">
+ <para>
The portlet specification CSS classes.
</para>
- </callout>
- </calloutlist>
- </programlistingco>
-
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <para>
This method imports other CSS stylesheet files (some of which may also import further CSS stylesheets) instead of defining all the CSS classes in this one file. Splitting the CSS classes between multiple files allows new skins to reuse parts of the default skin.
</para>
-
- <para>
+ <para>
To reuse a CSS stylesheet from the default portal skin you would need to reference the default skin from <literal>eXoResources</literal>. For example; to include the window decorators from the default skin within a new portal skin you would need to use this import:
</para>
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_Skinning/default185.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <note>
- <title>Stylesheet Merging</title>
-
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default185.java" parse="text"/></programlisting>
+ <note>
+ <title>Stylesheet Merging</title>
+ <para>
When the portal skin is added to the page, it merges all the CSS stylesheets into a single file.
</para>
- </note>
- </listitem>
- </varlistentry>
- </variablelist>
- </section>
-
- <section id="sect-Reference_Guide-Skinning_the_Portal-Creating_New_Skins">
- <title>Creating New Skins</title>
-
- <section id="sect-Reference_Guide-Creating_New_Skins-Creating_a_New_Portal_Skin">
- <title>Creating a New Portal Skin</title>
-
- <para>
+ </note>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Skinning_the_Portal-Creating_New_Skins">
+ <title>Creating New Skins</title>
+ <section id="sect-Reference_Guide-Creating_New_Skins-Creating_a_New_Portal_Skin">
+ <title>Creating a New Portal Skin</title>
+ <para>
New portal skins will need to be added to the portal through the skin service. Therefore, the web application which contains the skins will need to be properly configured for the skin service to discover them. This means properly configuring the <literal>ResourceRequestFilter</literal> and <filename>gatein-resources.xml</filename>.
</para>
-
- <section id="sect-Reference_Guide-Creating_a_New_Portal_Skin-Portal_Skin_Configuration">
- <title>Portal Skin Configuration</title>
-
- <para>
+ <section id="sect-Reference_Guide-Creating_a_New_Portal_Skin-Portal_Skin_Configuration">
+ <title>Portal Skin Configuration</title>
+ <para>
The <filename>gatein-resources.xml</filename> will need to specify the new portal skin. This will include the name of the new skin, where to locate its CSS stylesheet file and whether to overwrite an existing portal theme with the same name.
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default186.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default186.xml" parse="text"/></programlisting>
+ <para>
The default portal skin and window styles are defined in <filename>01eXoResources.war/WEB-INF/gatein-resources.xml</filename>.
</para>
-
- <note>
- <title>CSS</title>
-
- <para>
+ <note>
+ <title>CSS</title>
+ <para>
The CSS for the portal skin needs to contain the CSS for all the window decorations and the portlet specification CSS classes.
</para>
- </note>
- </section>
-
- <section id="sect-Reference_Guide-Creating_a_New_Portal_Skin-Portal_Skin_Preview_Icon">
- <title>Portal Skin Preview Icon</title>
-
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Creating_a_New_Portal_Skin-Portal_Skin_Preview_Icon">
+ <title>Portal Skin Preview Icon</title>
+ <para>
It is possible to see a preview of what the portal will look like when selecting a new skin. This functionality relies on the current skin being updated with skin icons for all other available skins. Otherwise it will not be able to show the previews.
</para>
-
- <para>
+ <para>
It is recommended that preview icons of any other skins are included when creating a new portal skin and that the other skins are updated with your new portal skin preview.
</para>
-
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center" fileref="images/PortalDevelopment/Skinning/portal-change-skin.png" format="PNG" scale="100" width="444" />
- </imageobject>
-
- <imageobject role="fo">
- <imagedata align="center" contentwidth="150mm" fileref="images/PortalDevelopment/Skinning/portal-change-skin.png" format="PNG" width="444" />
- </imageobject>
- </mediaobject>
-
- <para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="444" align="center" scale="100" fileref="images/PortalDevelopment/Skinning/portal-change-skin.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="444" contentwidth="150mm" align="center" fileref="images/PortalDevelopment/Skinning/portal-change-skin.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>
The portal skin preview icon is specified through the CSS of the portal skin. In order for the current portal skin to be able to display the preview it must specify a specific CSS class and set the icon as the background.
</para>
-
- <para>
- For a portal named <emphasis role="bold">MySkin</emphasis> in must define the following CSS class:
+ <para>
+ For a portal named <literal>MySkin</literal>, it must define the following CSS class:
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default187.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- In order for the default skin to display the skin icon for a new portal skin, the preview screenshot needs to be placed in: <filename>01eXoResources.war:/skin/DefaultSkin/portal/webui/component/customization/UIChangeSkinForm/background</filename>.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default187.xml" parse="text"/></programlisting>
+ <para>
+ In order for the default skin to display the skin icon for a new portal skin, the preview screen shot needs to be placed in: <filename>01eXoResources.war:/skin/DefaultSkin/portal/webui/component/customization/UIChangeSkinForm/background</filename>.
</para>
-
- <para>
- The CSS stylesheet for the default portal needs to have the following updated with the preview icon CSS class. For a skin named <emphasis role="bold">MySkin</emphasis> then the following needs to be updated: <filename>01eXoResources.war:/skin/DefaultSkin/portal/webui/component/customization/UIChangeSkinForm/Stylesheet.css</filename>.
+ <para>
+ The CSS stylesheet for the default portal needs to have the following updated with the preview icon CSS class. For a skin named <literal>MySkin</literal>, the following needs to be updated: <filename>01eXoResources.war:/skin/DefaultSkin/portal/webui/component/customization/UIChangeSkinForm/Stylesheet.css</filename>.
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default188.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
- </section>
-
- <section id="sect-Reference_Guide-Creating_New_Skins-Creating_a_New_Window_Style">
- <title>Creating a New Window Style</title>
-
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default188.xml" parse="text"/></programlisting>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Creating_New_Skins-Creating_a_New_Window_Style">
+ <title>Creating a New Window Style</title>
+ <para>
Window styles are the CSS applied to window decorations. An administrator can decide which style of decoration should go around the window when they add a new application or gadget to a page.
</para>
-
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center" fileref="images/PortalDevelopment/Skinning/windowStyles.png" format="PNG" scale="100" width="444" />
- </imageobject>
-
- <imageobject role="fo">
- <imagedata align="center" contentwidth="150mm" fileref="images/PortalDevelopment/Skinning/windowStyles.png" format="PNG" width="444" />
- </imageobject>
- </mediaobject>
-
- <section id="sect-Reference_Guide-Creating_a_New_Window_Style-Window_Style_Configuration">
- <title>Window Style Configuration</title>
-
- <para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="444" align="center" scale="100" fileref="images/PortalDevelopment/Skinning/windowStyles.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="444" contentwidth="150mm" align="center" fileref="images/PortalDevelopment/Skinning/windowStyles.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <section id="sect-Reference_Guide-Creating_a_New_Window_Style-Window_Style_Configuration">
+ <title>Window Style Configuration</title>
+ <para>
Window Styles are defined within a <filename>gatein-resources.xml</filename> file which is used by the skin service to deploy the window style into the portal. Window styles can belong in a window style category. This category and the window styles will need to be specified in resources file.
</para>
-
- <para>
+ <para>
The following <filename>gatein-resources.xml</filename> fragment will add <literal>MyThemeBlue</literal> and <literal>MyThemeRed</literal> to the <literal>MyTheme</literal> category.
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default189.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default189.xml" parse="text"/></programlisting>
+ <para>
The windows style configuration for the default skin is configured in: <filename>01eXoResources.war/WEB-INF/gatein-resources.xml</filename>.
</para>
-
- <note>
- <title>Window Styles and Portal Skins</title>
-
- <para>
+ <note>
+ <title>Window Styles and Portal Skins</title>
+ <para>
When a window style is defined in <filename>gatein-resources.xml</filename> file, it will be available to all portlets regardless of whether the current portal skin supports the window decorator or not.
</para>
-
- <para>
+ <para>
It is recommended that when a new window decorator is added that it be added to all portal skins or that all portal skins share a common stylesheet for window decorators.
</para>
- </note>
- </section>
-
- <section id="sect-Reference_Guide-Creating_a_New_Window_Style-Window_Style_CSS">
- <title>Window Style CSS</title>
-
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Creating_a_New_Window_Style-Window_Style_CSS">
+ <title>Window Style CSS</title>
+ <para>
In order for the skin service to display the window decorators, it must have CSS classes specifically named in relation to the window style name. The service will try and display CSS based on this naming convention. The CSS class must be included as part of the current portal skin for the window decorators to be displayed.
</para>
-
- <para>
+ <para>
The location of the window decorator CSS classes for the default portal theme is located at: <filename>01eXoResources.war/skin/PortletThemes/Stylesheet.css</filename>.
</para>
-
- <para></para>
-
- <para>
+ <para/>
+ <para>
Create the CSS file:
</para>
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_Skinning/default190.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Creating_a_New_Window_Style-How_to_Set_the_Default_Window_Style">
- <title>How to Set the Default Window Style</title>
-
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default190.java" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Creating_a_New_Window_Style-How_to_Set_the_Default_Window_Style">
+ <title>How to Set the Default Window Style</title>
+ <para>
To set the default window style to be used for a portal you will need to specify the CSS classes for a theme called <literal>DefaultTheme</literal>.
</para>
-
- <note>
- <title>DefaultTheme</title>
-
- <para>
+ <note>
+ <para>
You do not need to specify the <literal>DefaultTheme</literal> in <filename>gatein-resources.xml</filename>.
</para>
- </note>
- </section>
- </section>
-
- <section id="sect-Reference_Guide-Creating_New_Skins-How_to_Create_New_Portlet_Skins">
- <title>How to Create New Portlet Skins</title>
-
- <para>
+ </note>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Creating_New_Skins-How_to_Create_New_Portlet_Skins">
+ <title>How to Create New Portlet Skins</title>
+ <para>
Portlets often require additional styles that may not be defined by the portal skin. JBoss Enterprise Portal Platform allows portlets to define additional stylesheets for each portlet and will append the corresponding <literal>link</literal> tags to the <literal>head</literal>.
</para>
-
- <para>
+ <para>
The link ID will be of the form <parameter>{portletAppName}{PortletName}</parameter>.
</para>
-
- <para>
- For example: <literal>ContentPortlet</literal> in <literal>content.war</literal>, will give <parameter>id="content<literal>ContentPortlet"</literal></parameter>.
+ <para>
+ For example: <literal>ContentPortlet</literal> in <literal>content.war</literal>, will give <parameter>id="content<literal>ContentPortlet"</literal></parameter>.
</para>
-
- <para>
+ <para>
To define a new CSS file to include whenever a portlet is available on a portal page, the following fragment needs to be added in <filename>gatein-resources.xml</filename>.
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default191.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default191.xml" parse="text"/></programlisting>
+ <para>
This will load the <literal>DefaultStylesheet.css</literal> when the Default skin is used and the <literal>OtherSkinStylesheet.css</literal> when the <literal>OtherSkin</literal> is used.
</para>
-
- <note>
- <title>Updating Portlet Skins</title>
-
- <para>
+ <note>
+ <title>Updating Portlet Skins</title>
+ <para>
If the current portal skin is not defined as one of the supported skins, then the portlet CSS class will not be loaded. It is recommended that portlet skins are updated whenever a new portal skin is created.
</para>
- </note>
-
- <section id="sect-Reference_Guide-How_to_Create_New_Portlet_Skins-Define_a_Custom_CSS_File">
- <title>Define a Custom CSS File</title>
-
- <para>
+ </note>
+ <section id="sect-Reference_Guide-How_to_Create_New_Portlet_Skins-Define_a_Custom_CSS_File">
+ <title>Define a Custom CSS File</title>
+ <para>
JBoss Enterprise Portal Platform &VX; does not serve CSS files directly, but uses a filter as well as a skin service in order to:
</para>
-
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
Cache the CSS files.
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Merge them into one file if possible. This will be discussed further in <xref linkend="sect-Reference_Guide-Tips_and_Tricks-Easier_CSS_Debugging"/>.
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Add support for Right-To-Left (RTL) languages. This is discussed in more detail in <xref linkend="sect-Reference_Guide-Right_To_Left_RTL_Framework-Stylesheet"/>.
</para>
- </listitem>
- </itemizedlist>
-
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
This causes JBoss Enterprise Portal Platform to create non-functioning a CSS-link in html-src-code.
</para>
-
- <procedure>
- <title>To Resolve This:</title>
-
- <step>
- <para>
+ <procedure>
+ <title>To Resolve This:</title>
+ <step>
+ <para>
Add the following files to the custom portlet application:
</para>
-
- <variablelist>
- <title></title>
-
- <varlistentry>
- <term><filename>WEB-INF/gatein-resources.xml</filename>:</term>
-
- <listitem>
-<programlisting language="XML" role="XML"><![CDATA[<portlet-skin>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term><filename>WEB-INF/gatein-resources.xml</filename>:</term>
+ <listitem>
+ <programlisting language="XML" role="XML"><![CDATA[<portlet-skin>
<application-name>custom</application-name>
<portlet-name>test</portlet-name>
<skin-name>Default</skin-name>
<css-path>/css/main.css</css-path>
</portlet-skin>
]]></programlisting>
- <note>
- <title>Note:</title>
-
- <itemizedlist>
- <listitem>
- <para>
+ <note>
+ <title>Note:</title>
+ <itemizedlist>
+ <listitem>
+ <para>
The value of the <parameter>application-name</parameter> element needs to match the value of the <parameter>display-name</parameter> element in <filename>web.xml</filename>.
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The value of the <parameter>portlet-name</parameter> element needs to match the value of the <parameter>portlet-name</parameter> element in <filename>portlet.xml</filename>.
</para>
- </listitem>
- </itemizedlist>
- </note>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>WEB-INF/web.xml</filename>:</term>
-
- <listitem>
-<programlisting language="XML" role="XML"><![CDATA[<display-name>custom</display-name>
+ </listitem>
+ </itemizedlist>
+ </note>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>WEB-INF/web.xml</filename>:</term>
+ <listitem>
+ <programlisting language="XML" role="XML"><![CDATA[<display-name>custom</display-name>
<filter>
<filter-name>ResourceRequestFilter</filter-name>
@@ -581,47 +458,41 @@
<url-pattern>/*</url-pattern>
</filter-mapping>
]]></programlisting>
- <note>
- <title>Note:</title>
-
- <itemizedlist>
- <listitem>
- <para>
+ <note>
+ <title>Note:</title>
+ <itemizedlist>
+ <listitem>
+ <para>
The value of the <parameter>display-name</parameter> element needs to match the value of the <parameter>application-name</parameter> element in <filename>gatein-resources.xml</filename>.
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The <literal>ResourceRequestFilter</literal> needs to be added to the custom portlet application for proper CSS file handling within the Portal container.
</para>
- </listitem>
- </itemizedlist>
- </note>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>WEB-INF/portlet.xml</filename>:</term>
-
- <listitem>
-<programlisting language="XML" role="XML"><![CDATA[<portlet-name>test</portlet-name>
+ </listitem>
+ </itemizedlist>
+ </note>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><filename>WEB-INF/portlet.xml</filename>:</term>
+ <listitem>
+ <programlisting language="XML" role="XML"><![CDATA[<portlet-name>test</portlet-name>
]]></programlisting>
- <note>
- <title>Note:</title>
-
- <para>
+ <note>
+ <title>Note:</title>
+ <para>
The value of the <parameter>portlet-name</parameter> element needs to match the value of the <parameter>portlet-name</parameter> element in <filename>gatein-resources.xml</filename>.
</para>
- </note>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>
+ </note>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
The final portlet application will be structured as illustrated below:
</para>
-<programlisting>custom.war
+ <programlisting>custom.war
├── css
│ └── main.css
└── WEB-INF
@@ -631,136 +502,110 @@
├── portlet.xml
└── web.xml
</programlisting>
- </step>
- </procedure>
- </section>
-
- <section id="sect-Reference_Guide-How_to_Create_New_Portlet_Skins-Change_Portlet_Icons">
- <title>Change Portlet Icons</title>
-
- <para>
+ </step>
+ </procedure>
+ </section>
+ <section id="sect-Reference_Guide-How_to_Create_New_Portlet_Skins-Change_Portlet_Icons">
+ <title>Change Portlet Icons</title>
+ <para>
Each portlet can be registered by a unique icon in the portlet registry or page editor. This icon can be changed by adding an image to the directory of the portlet web application:
</para>
-
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<filename>skin/DefaultSkin/portletIcons/<replaceable>portlet_name</replaceable>.png </filename>.
</para>
- </listitem>
- </itemizedlist>
-
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
To be used correctly the icon must be named after the portlet.
</para>
-
- <para>
+ <para>
For example; the icon for an account portlet named <literal>AccountPortlet</literal> would be located at:
</para>
-
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<filename>skin/DefaultSkin/portletIcons/AccountPortlet.png</filename>
</para>
- </listitem>
- </itemizedlist>
-
- <note>
- <title>Portlet Icons Directory</title>
-
- <para>
+ </listitem>
+ </itemizedlist>
+ <note>
+ <title>Portlet Icons Directory</title>
+ <para>
You must use <literal>skin/DefaultSkin/portletIcons/</literal> for the directory to store the portlet icon regardless of what skin is going to be used.
</para>
- </note>
- </section>
- </section>
-
- <section id="sect-Reference_Guide-Creating_New_Skins-Create_New_Portlet_Specification_CSS_Classes">
- <title>Create New Portlet Specification CSS Classes</title>
-
- <para>
+ </note>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Creating_New_Skins-Create_New_Portlet_Specification_CSS_Classes">
+ <title>Create New Portlet Specification CSS Classes</title>
+ <para>
The portlet specification defines a set of default CSS classes that should be available for portlets. These classes are included as part of the portal skin. Please see the portlet specification for a list of the default classes that should be available.
</para>
-
- <para>
+ <para>
For the default portal skin, the portlet specification CSS classes are defined in: <filename>01eXoResources.war/skin/Portlet/Stylesheet.css</filename>.
</para>
- </section>
- </section>
-
- <section id="sect-Reference_Guide-Skinning_the_Portal-Tips_and_Tricks">
- <title>Tips and Tricks</title>
-
- <section id="sect-Reference_Guide-Tips_and_Tricks-Easier_CSS_Debugging">
- <title>Easier CSS Debugging</title>
-
- <para>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Skinning_the_Portal-Tips_and_Tricks">
+ <title>Tips and Tricks</title>
+ <section id="sect-Reference_Guide-Tips_and_Tricks-Easier_CSS_Debugging">
+ <title>Easier CSS Debugging</title>
+ <para>
By default, CSS files are cached and their imports are merged into a single CSS file at the server side. This reduces the number of HTTP requests from the browser to the server.
</para>
-
- <para>
+ <para>
The optimization code is quite simple as all the CSS files are parsed at the server start and all the <literal>@import</literal> and <literal>url(...)</literal> references are rewritten to support a single flat file. The result is stored in a cache directly used from the <literal>ResourceRequestFilter</literal>.
</para>
-
- <para>
- Although the optimization is useful for a production environment, it may be easier to deactivate this optimization while debugging stylesheets. Set the java system property <literal>exo.product.developing</literal> to <literal>true</literal> to disable the optimization.
+ <para>
+ Although the optimization is useful for a production environment, it may be easier to deactivate this optimization while debugging stylesheets. Set the Java system property <literal>exo.product.developing</literal> to <literal>true</literal> to disable the optimization.
</para>
-
- <para>
+ <para>
For example, the property can be passed as a JVM parameter with <literal>-D</literal> option when running JBoss Enterprise Portal Platform.
</para>
-<programlisting><command>sh jboss-as/bin/run.sh -Dexo.product.developing=true</command></programlisting>
-<!-- <programlisting language="Java" role="Java"><xi:include parse="text" href="../../extras/PortalDevelopment_Skinning/default192.java" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting> -->
- <warning>
- <para>
+ <programlisting><command>sh jboss-as/bin/run.sh -Dexo.product.developing=true</command></programlisting>
+<!-- <programlisting language="Java" role="Java"><xi:include parse="text" href="../../extras/PortalDevelopment_Skinning/default192.java" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting> --> <warning>
+ <para>
This option may cause display bugs in some browsers.
</para>
- </warning>
- </section>
-
- <section id="sect-Reference_Guide-Tips_and_Tricks-Some_CSS_Techniques">
- <title>Some CSS Techniques</title>
-
- <para>
+ </warning>
+ </section>
+ <section id="sect-Reference_Guide-Tips_and_Tricks-Some_CSS_Techniques">
+ <title>Some CSS Techniques</title>
+ <para>
It is recommended that users have some experience with CSS before studying JBoss Enterprise Portal Platform CSS.
</para>
-
- <para>
+ <para>
JBoss Enterprise Portal Platform relies heavily on CSS to create the layout and effects for the UI. Some common techniques for customizing JBoss Enterprise Portal Platform CSS are explained below.
</para>
-
- <section id="sect-Reference_Guide-Some_CSS_Techniques-Border_Pattern">
- <title>Border Pattern</title>
-
- <para>
+ <section id="sect-Reference_Guide-Some_CSS_Techniques-Border_Pattern">
+ <title>Border Pattern</title>
+ <para>
The decorator is a pattern to create a contour or a curve around an area. In order to achieve this effect you need to create nine cells. The <literal>BODY</literal> is the central area that you want to decorate. The other eight cells are distributed around the <literal>BODY</literal> cell. You can use the width, height and background image properties to achieve any decoration effect that you want.
</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/PortalDevelopment/Skinning/decoratorPattern.png" format="PNG" width="418" />
- </imageobject>
- </mediaobject>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default193.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Some_CSS_Techniques-Left_Margin_Left_Pattern">
- <title>Left Margin Left Pattern</title>
-
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="418" fileref="images/PortalDevelopment/Skinning/decoratorPattern.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default193.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Some_CSS_Techniques-Left_Margin_Left_Pattern">
+ <title>Left Margin Left Pattern</title>
+ <para>
Left margin left pattern is a technique to create two blocks side by side. The left block will have a fixed size and the right block will take the rest of the available space. When the user resizes the browser the added or removed space will be taken from the right block.
</para>
- <mediaobject>
- <imageobject role="html">
- <imagedata fileref="images/PortalDevelopment/Skinning/leftMarginPattern.png" format="PNG" align="center"/>
- </imageobject>
- <imageobject role="fo">
- <imagedata fileref="images/PortalDevelopment/Skinning/leftMarginPattern.png" format="PNG" align="center" width="100mm"/>
- </imageobject>
- </mediaobject>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_Skinning/default194.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
- </section>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata align="center" fileref="images/PortalDevelopment/Skinning/leftMarginPattern.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="100mm" align="center" fileref="images/PortalDevelopment/Skinning/leftMarginPattern.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_Skinning/default194.xml" parse="text"/></programlisting>
</section>
- </chapter>
+ </section>
+ </section>
+</chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/XMLResourceBundles.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/XMLResourceBundles.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/XMLResourceBundles.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,47 +1,40 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-XML_Resources_Bundles">
- <title>XML Resources Bundles</title>
- <section id="sect-Reference_Guide-XML_Resources_Bundles-Overview">
- <title>Overview</title>
- <para>
- Resource bundles are usually stored in property files. However, as property files are plain files, issues with the encoding of the file may arise. The XML resource bundle format has been developed to provide an alternative to property files.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- The XML format declares the encoding of the file. This avoids use of the <literal>native2ASCII</literal> program which can interfere with encoding.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Property files generally use <literal>ISO 8859-1</literal> character encoding which does not cover the full unicode charset. As a result, languages such as Arabic would not be natively supported.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Tooling for XML files is better supported than the tooling for Java property files and thus the XML editor copes well with the file encoding.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-XML_Resources_Bundles-XML_format">
- <title>XML format</title>
- <para>
- The XML format is very simple and has been developed based on the 'Don't Repeat Yourself' (DRY) principle. Usually resource bundle keys are hierarchically defined and we can leverage the hierarchic nature of the XML for that purpose. Here is an example of turning a property file into an XML resource bundle file:
- </para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_XMLResourceBundles/default195.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <!-- <programlisting>UIAccountForm.tab.label.AccountInputSet = ...
+ <title>XML Resources Bundles</title>
+ <section id="sect-Reference_Guide-XML_Resources_Bundles-Overview">
+ <title>Overview</title>
+ <para>
+ Resource bundles are usually stored in property files. However, as property files are plain files, issues with the encoding of the file may arise. The XML resource bundle format has been developed to provide an alternative to property files.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The XML format declares the encoding of the file. This avoids use of the <literal>native2ASCII</literal> program which can interfere with encoding.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Property files generally use <literal>ISO 8859-1</literal> character encoding which does not cover the full unicode charset. As a result, languages such as Arabic would not be natively supported.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Tooling for XML files is better supported than the tooling for Java property files and thus the XML editor copes well with the file encoding.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-XML_Resources_Bundles-XML_format">
+ <title>XML format</title>
+ <para>
+ The XML format is very simple and has been developed based on the 'do not Repeat Yourself' (DRY) principle. Usually resource bundle keys are hierarchically defined and we can leverage the hierarchic nature of the XML for that purpose. Here is an example of turning a property file into an XML resource bundle file:
+ </para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_XMLResourceBundles/default195.java" parse="text"/></programlisting>
+<!-- <programlisting>UIAccountForm.tab.label.AccountInputSet = ...
UIAccountForm.tab.label.UIUserProfileInputSet = ...
UIAccountForm.label.Profile = ...
UIAccountForm.label.HomeInfo= ...
@@ -50,9 +43,8 @@
UIAccountForm.label.Confirmpassword= ...
UIAccountForm.label.email= ...
UIAccountForm.action.Reset= ...
-</programlisting> -->
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_XMLResourceBundles/default196.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <!-- <programlisting language="XML" role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+</programlisting> --> <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_XMLResourceBundles/default196.xml" parse="text"/></programlisting>
+<!-- <programlisting language="XML" role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<bundle>
<UIAccountForm>
<tab>
@@ -73,20 +65,14 @@
<Reset>...</Reset>
</action>
</UIAccountForm>
-</bundle>]]></programlisting> -->
- </section>
-
- <section id="sect-Reference_Guide-XML_Resources_Bundles-Portal_Support">
- <title>Portal Support</title>
- <para>
- In order to be loaded by the portal at runtime (actually the resource bundle service), the name of the file must be the same as a property file and it must use the <emphasis role="bold">.xml</emphasis> suffix.
- </para>
- <para>
- For example; for the Account Portlet to be displayed in Arabic, the resource bundle would be <emphasis role="bold"> AccountPortlet_ar.xml</emphasis> rather than <emphasis role="bold">AccountPortlet_ar.properties</emphasis>.
- </para>
-
- </section>
-
-
+</bundle>]]></programlisting> --> </section>
+ <section id="sect-Reference_Guide-XML_Resources_Bundles-Portal_Support">
+ <title>Portal Support</title>
+ <para>
+ In order to be loaded by the portal at runtime (actually the resource bundle service), the name of the file must be the same as a property file and it must use the <emphasis role="bold">.xml</emphasis> suffix.
+ </para>
+ <para>
+ For example; for the Account Portlet to be displayed in Arabic, the resource bundle would be <emphasis role="bold"> AccountPortlet_ar.xml</emphasis> rather than <emphasis role="bold">AccountPortlet_ar.properties</emphasis>.
+ </para>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -40,10 +40,10 @@
</portlet-app>
</programlisting>
<para>
- The path to the global <filename>portlet.xml</filename> is the value of <literal>gatein.portlet.config</literal> in the <filename>configuration.properties.xml</filename> file. By default The file path is <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/conf/gatein/portlet.xml</filename>
+ The path to the global <filename>portlet.xml</filename> is the value of <literal>gatein.portlet.config</literal> in the <filename>configuration.properties.xml</filename> file. By default The file path is <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/conf/gatein/portlet.xml</filename>
</para>
<para>
- <emphasis role="bold">For JBoss</emphasis>: The file path is <filename><replaceable>EPP_HOME</replaceable>/server/default/conf/gatein/portlet.xml</filename>.
+ <emphasis role="bold">For JBoss</emphasis>: The file path is <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/default/conf/gatein/portlet.xml</filename>.
</para>
<section id="sect-Reference_Guide-Shared_portlet.xml-Global_Metadata_Elements">
<title>Global Metadata Elements</title>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -65,7 +65,7 @@
<term>DEFAULT</term>
<listitem>
<para>
- Directs the bridge to first delegate the render only if an Exception is thrown then render the view based on its own logic. If the configuration parameter is not present or has an invalid value the bridge renders using default behavior as it would if DEFAULT was set.
+ Directs the bridge to first delegate the render. If an exception is thrown, the bridge renders the view based on its own logic. If the configuration parameter is not present or has an invalid value the bridge renders using default behavior as it would if DEFAULT was set.
</para>
</listitem>
</varlistentry>
@@ -112,8 +112,7 @@
</para>
</note>
<para>
- The <literal>org.ajax4jsf.RESOURCE_URI_PREFIX</literal> configuration cross-references the path to your scripts below. These settings are required for <application>RichFaces</application> using the "<parameter>NONE</parameter>" strategy.
- </para>
+ The <literal>org.ajax4jsf.RESOURCE_URI_PREFIX</literal> configuration cross-references the path to your scripts below. These settings are required for <application>RichFaces</application> using the "<parameter>NONE</parameter>" strategy. Replace all <replaceable>richFacesPortlet</replaceable> text in the example with the actual name of the portlet resource. </para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default205.xml" parse="text"/></programlisting>
<para>
<application>Seam</application> automatically configures your Ajax4JSF Filter, so if you are running a <application>Seam</application> portlet, you do not need the following Filter configuration (however, you do need the <literal>RESOURCE_URI_PREFIX</literal> no matter what).
@@ -121,7 +120,7 @@
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default206.xml" parse="text"/></programlisting>
</section>
<section id="sect-Reference_Guide-RichFaces_Setup_and_Configuration_Options-Configuration_needed_for_Richfaces_to_work_with_WSRP_and_PortletBridge">
-<!-- Content added from JBEPP-708 and JBQA-3999 --> <title>Configuration needed for Richfaces to work with WSRP and PortletBridge</title>
+<!-- Content added from JBEPP-708 and JBQA-3999 --> <title>Configure RichFaces to work with WSRP and PortletBridge</title>
<para>
Use the following settings in <filename>web.xml</filename> when running WSRP portlets:
</para>
@@ -140,14 +139,11 @@
</context-param>
</programlisting>
<para>
- The styles below must also be manually added to the facelets template header in the <filename><replaceable>EPP_HOME</replaceable>/portletbridge/examples/richFacesPortlet-<replaceable><VERSION></replaceable>.war:richFacesPortlet.war/templates/main.xhtml</filename> file.
+ The styles below must also be manually added to the facelets template header in the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/portletbridge/examples/richFacesPortlet-<replaceable>VERSION</replaceable>.war:richFacesPortlet.war/templates/main.xhtml</filename> file.
</para>
- <programlisting language="XML" role="XML"><link rel="stylesheet" type="text/css"
- href="/richFacesPortlet/faces/rfResorg/richfaces/renderkit/html/css/basic_both.xcss"/>
- <link rel="stylesheet" type="text/css"
- href="/richFacesPortlet/faces/rfResorg/richfaces/renderkit/html/css/extended_both.xcss"/>
- <link rel="stylesheet" type="text/css"
- href="/richFacesPortlet/faces/rfRes/org/richfaces/skin.xcss"/>
+ <programlisting language="XML" role="XML"><link rel="stylesheet" type="text/css" href="/richFacesPortlet/faces/rfRes/org/richfaces/renderkit/html/css/basic_both.xcss"/>
+<link rel="stylesheet" type="text/css" href="/richFacesPortlet/faces/rfRes/org/richfaces/renderkit/html/css/extended_both.xcss"/>
+<link rel="stylesheet" type="text/css" href="/richFacesPortlet/faces/rfRes/org/richfaces/skin.xcss"/>
</programlisting>
<para>
The table below outlines the current status of RichFaces features when used in both local and remote portlets.
@@ -627,7 +623,7 @@
The bridge maps a render parameter to a backing bean using settings in your <filename>faces-config.xml</filename> and <filename>portlet.xml</filename>.
</para>
<para>
- A clear and working example can be found in the Seam Booking Demo portlet. <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.2.0.GA.EPP520/example..."/>
+ A clear and working example can be found in the Seam Booking Demo portlet. <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.3.0.CP01.EPP521/examp..."/>
</para>
<para>
You must define the following <emphasis>init params</emphasis> in your <filename>portlet.xml</filename>.
@@ -655,7 +651,7 @@
We have setup a few examples to show you how to use <literal>EL</literal> and a simple bean that will allow you to use the portlet resource serving mechanism within a JSF portlet.
</para>
<para>
- In <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.0.0.CR1/examples/rich...">ResourceBean.java</ulink>, you can see a very simple implementation of a Map object that uses the bridge to get and encode a resource url served from the portlets web application.
+ In <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.3.0.CP01.EPP521/examp...">ResourceBean.java</ulink>, you can see a very simple implementation of a Map object that uses the bridge to get and encode a resource URL served from the portlet application.
</para>
<para>
So, when you have the normal "<filename>/images</filename>", "<filename>/styles</filename>" and other resource folders in your web application, you can use the following <literal>EL</literal> expression to serve them in your JSF application.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/gettingstarted.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/gettingstarted.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/gettingstarted.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,174 +1,156 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge">
- <title>Getting started with JBoss Portlet Bridge</title>
- <para>
- JBoss Portlet Bridge not only gives you the ability to run JSF web applications in a portlet, but also gives you the benefit of running supported JBoss frameworks like <application>Seam</application> and <application>RichFaces</application>.
- </para>
- <section id="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Whats_New_in_2.0">
- <title>What's New in 2.0?</title>
- <section id="sect-Reference_Guide-Whats_New_in_2.0-Eventing">
- <title>Eventing</title>
- <para>
- The bridge considers a portlet event a model event. The event is targeted to the applications data model, not its view.
- </para>
- <para>
- As JSF events primarily concern its view, the bridge processes the portlet events manually, however provisions are made to ensure that any model changes resulting from processing the event are updated in the view.
- </para>
- <para>
- Since event payloads are arbitrarily complex, the manual processing of the data, though managed by the bridge, is left to the (portlet) application to support.
- </para>
- <para>
- See <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events" /> for details and examples.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Whats_New_in_2.0-Portlet_Served_Resources">
- <title>Portlet Served Resources</title>
- <para>
- The bridge deals with portlet served resources in one of two ways:
- </para>
- <para>
- If the request is for a non-JSF resource, the bridge handles the request by acquiring a request dispatcher and forwarding the request to the named resource.
- </para>
- <para>
- If the request is for a JSF resource, the bridge runs the full JSF life-cycle ensuring that data is processed and the resource (markup) is rendered.
- </para>
- <para>
- See <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Serving_Your_JSF_Resources_in_a_Portlet" /> for details and examples.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Whats_New_in_2.0-Public_Render_Parameters">
- <title>Public Render Parameters</title>
- <para>
- The bridge automates the processing of public render parameters.
- </para>
- <para>
- A public render parameter can be mapped to an object's accessor (<literal>get</literal>/<literal>set</literal> method) designed to handle a String representation of the value via a <application>Faces</application> <literal>ValueExpression</literal>.
- </para>
- <para>
- When a new public render parameter value is received in a request, the bridge sets the value by calling the <literal>ValueExpression</literal>'s <parameter>setValue()</parameter>.
- </para>
- <para>
- At the end of a request, if the current value of any mapped public render parameter doesn't match the current incoming value, the bridge sets the new value in an outgoing public render parameter (if feasible in the given phase).
- </para>
- <para>
- See <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters" /> for details and examples.
- </para>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Bridge_Frameworks_and_Extensions">
- <title>Bridge Frameworks and Extensions</title>
- <para>
- The JBoss Portlet Bridge currently supports JBoss Enterprise Portal Platform, <application>GateIn</application>, <application>JSF 1.2</application>, <application>JBoss Seam</application>, and <application>JBoss Richfaces</application>. There are configurations that apply to supporting each framework. See section <xref linkend="sect-Reference_Guide-Bridge_Configuration" /> for instructions.
- </para>
- <para>
- The JBoss Portlet Bridge project is also actively developing extensions called "<emphasis role="bold">Bridgelets</emphasis>".
- </para>
- <para>
- In this release it was decided to bring all available bridgelets into the impl code base since they are critical in most JSF portlet applications. A single line of configuration utilizes these features.
- </para>
- <section id="sect-Reference_Guide-Bridge_Frameworks_and_Extensions-Seam_Bridgelets">
- <title>Seam Bridgelets</title>
- <para>
- For example, the <literal>PortalIdentity</literal> <application>Seam</application> component allows you to instantly have Single Sign-On (SSO) between <application>Seam</application> and <application>GateIn</application> or <application>JBoss Enterprise Portal Platform</application>.
- </para>
- <para>
- This extension is configured in your <application>Seam</application> application's <filename>components.xml</filename> file as follows.
- </para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_GettingStarted/default218.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Bridge_Frameworks_and_Extensions-RichFaces_Bridgelets">
- <title>RichFaces Bridgelets</title>
- <para>
- <application>Richfaces</application> does not account for multiple components on the same portal page by default. This following <filename>web.xml</filename> renders all <application>RichFaces</application> component javascript portal-friendly.
- </para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_GettingStarted/default219.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Before_You_Start">
- <title>Before You Start</title>
- <para>
- The embedded version in the JBoss Enterprise Portal Platform is made to be compatible with the JSF implementation, portal and application server that compose the product. You will find the binaries embedded in <filename>jboss-epp-<VERSION>/portletbridge</filename>
- </para>
- <para>
- You can run a provided archetype and deploy the generated <literal>war</literal> or <literal>ear</literal> in a few easy steps. <!-- (See <xref linkend="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Maven_Archetypes" />) -->
- </para>
-
- </section>
-
- <!-- Section removed as per feedback from Prabhat Jha
+ <title>Getting started with JBoss Portlet Bridge</title>
+ <para>
+ JBoss Portlet Bridge not only gives you the ability to run JSF web applications in a portlet, but also gives you the benefit of running supported JBoss frameworks like <application>Seam</application> and <application>RichFaces</application>.
+ </para>
+ <section id="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Whats_New_in_2.0">
+ <title>What's New in 2.0?</title>
+ <section id="sect-Reference_Guide-Whats_New_in_2.0-Eventing">
+ <title>Eventing</title>
+ <para>
+ The bridge considers a portlet event a model event. The event is targeted to the applications data model, not its view.
+ </para>
+ <para>
+ As JSF events primarily concern its view, the bridge processes the portlet events manually, however provisions are made to ensure that any model changes resulting from processing the event are updated in the view.
+ </para>
+ <para>
+ Since event payloads are arbitrarily complex, the manual processing of the data, though managed by the bridge, is left to the (portlet) application to support.
+ </para>
+ <para>
+ See <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events"/> for details and examples.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Whats_New_in_2.0-Portlet_Served_Resources">
+ <title>Portlet Served Resources</title>
+ <para>
+ The bridge deals with portlet served resources in one of two ways:
+ </para>
+ <para>
+ If the request is for a non-JSF resource, the bridge handles the request by acquiring a request dispatcher and forwarding the request to the named resource.
+ </para>
+ <para>
+ If the request is for a JSF resource, the bridge runs the full JSF life-cycle ensuring that data is processed and the resource (markup) is rendered.
+ </para>
+ <para>
+ See <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Serving_Your_JSF_Resources_in_a_Portlet"/> for details and examples.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Whats_New_in_2.0-Public_Render_Parameters">
+ <title>Public Render Parameters</title>
+ <para>
+ The bridge automates the processing of public render parameters.
+ </para>
+ <para>
+ A public render parameter can be mapped to an object's accessor (<literal>get</literal>/<literal>set</literal> method) designed to handle a String representation of the value via a <application>Faces</application> <literal>ValueExpression</literal>.
+ </para>
+ <para>
+ When a new public render parameter value is received in a request, the bridge sets the value by calling the <literal>ValueExpression</literal>'s <parameter>setValue()</parameter>.
+ </para>
+ <para>
+ At the end of a request, if the current value of any mapped public render parameter doesn't match the current incoming value, the bridge sets the new value in an outgoing public render parameter (if feasible in the given phase).
+ </para>
+ <para>
+ See <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters"/> for details and examples.
+ </para>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Bridge_Frameworks_and_Extensions">
+ <title>Bridge Frameworks and Extensions</title>
+ <para>
+ The JBoss Portlet Bridge currently supports <application>JBoss Enterprise Portal Platform</application>, <application>GateIn</application>, <application>JSF 1.2</application>, <application>JBoss Seam</application>, and <application>JBoss Richfaces</application>. There are configurations that apply to supporting each framework. See section <xref linkend="sect-Reference_Guide-Bridge_Configuration"/> for instructions.
+ </para>
+ <para>
+ The JBoss Portlet Bridge project is also actively developing extensions called "<emphasis role="bold">Bridgelets</emphasis>".
+ </para>
+ <para>
+ In this release it was decided to bring all available bridgelets into the impl code base since they are critical in most JSF portlet applications. A single line of configuration utilizes these features.
+ </para>
+ <section id="sect-Reference_Guide-Bridge_Frameworks_and_Extensions-Seam_Bridgelets">
+ <title>Seam Bridgelets</title>
+ <para>
+ For example, the <literal>PortalIdentity</literal> <application>Seam</application> component allows you to instantly have Single Sign-On (SSO) between <application>Seam</application> and <application>GateIn</application> or <application>JBoss Enterprise Portal Platform</application>.
+ </para>
+ <para>
+ This extension is configured in your <application>Seam</application> application's <filename>components.xml</filename> file as follows.
+ </para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_GettingStarted/default218.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Bridge_Frameworks_and_Extensions-RichFaces_Bridgelets">
+ <title>RichFaces Bridgelets</title>
+ <para>
+ <application>Richfaces</application> does not account for multiple components on the same portal page by default. This following <filename>web.xml</filename> renders all <application>RichFaces</application> component javascript portal-friendly.
+ </para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_GettingStarted/default219.xml" parse="text"/></programlisting>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Before_You_Start">
+ <title>Before You Start</title>
+ <para>
+ The embedded version in the JBoss Enterprise Portal Platform is made to be compatible with the JSF implementation, portal and application server that compose the product. You will find the binaries embedded in <filename>jboss-epp-<replaceable>VERSION</replaceable>/portletbridge</filename>
+ </para>
+ <para>
+ You can run a provided archetype and deploy the generated <literal>war</literal> or <literal>ear</literal> in a few easy steps. <!-- (See <xref linkend="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Maven_Archetypes" />) -->
+ </para>
+ </section>
+<!-- Section removed as per feedback from Prabhat Jha
<section id="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Maven_Archetypes">
- <title>Maven Archetypes</title>
- <para>
- This product utilizes <ulink url="http://maven.apache.org/guides/introduction/introduction-to-archetypes.html">Maven archetypes</ulink> which allow you get up and running with different flavors of the bridge quickly.
- </para>
- <table frame="all" id="tabl-Reference_Guide-Maven_Archetypes-Available_Archetypes">
- <title>Available Archetypes</title>
- <tgroup align="left" cols="5" colsep="1" rowsep="1">
- <colspec colname="c1"></colspec>
- <colspec colname="c2"></colspec>
- <colspec colname="c3"></colspec>
- <colspec colname="c5" colnum="5"></colspec>
- <thead>
- <row>
- <entry align="center">
- Archetype
- </entry>
- <entry align="center" nameend="c5" namest="c2">
- Command
- </entry>
- </row>
- </thead>
- <tbody>
- <row class="table-odd" style="background-color:#D6DEE0;border:1px solid #E1E9EB;color:#334558;">
- <entry align="left">
- JSF 1.2 Basic
- </entry>
- <entry align="left" nameend="c5" namest="c2">
-
+ <title>Maven Archetypes</title>
+ <para>
+ This product utilizes <ulink url="http://maven.apache.org/guides/introduction/introduction-to-archetypes.html">Maven archetypes</ulink> which allow you get up and running with different flavors of the bridge quickly.
+ </para>
+ <table frame="all" id="tabl-Reference_Guide-Maven_Archetypes-Available_Archetypes">
+ <title>Available Archetypes</title>
+ <tgroup align="left" cols="5" colsep="1" rowsep="1">
+ <colspec colname="c1"></colspec>
+ <colspec colname="c2"></colspec>
+ <colspec colname="c3"></colspec>
+ <colspec colname="c5" colnum="5"></colspec>
+ <thead>
+ <row>
+ <entry align="center">
+ Archetype
+ </entry>
+ <entry align="center" nameend="c5" namest="c2">
+ Command
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row class="table-odd" style="background-color:#D6DEE0;border:1px solid #E1E9EB;color:#334558;">
+ <entry align="left">
+ JSF 1.2 Basic
+ </entry>
+ <entry align="left" nameend="c5" namest="c2">
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_GettingStarted/default220.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </entry>
- </row>
- <row class="table-even" style="background-color:#D6DEE0;border:1px solid #E1E9EB;color:#334558;">
- <entry align="left">
- RichFaces Basic
- </entry>
- <entry align="left" nameend="c5" namest="c2">
-
+ </entry>
+ </row>
+ <row class="table-even" style="background-color:#D6DEE0;border:1px solid #E1E9EB;color:#334558;">
+ <entry align="left">
+ RichFaces Basic
+ </entry>
+ <entry align="left" nameend="c5" namest="c2">
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_GettingStarted/default221.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </entry>
- </row>
- <row class="table-odd" style="background-color:#D6DEE0;border:1px solid #E1E9EB;color:#334558;">
- <entry align="left">
- Seam Basic (Modular EAR)
- </entry>
- <entry align="left" nameend="c5" namest="c2">
-
+ </entry>
+ </row>
+ <row class="table-odd" style="background-color:#D6DEE0;border:1px solid #E1E9EB;color:#334558;">
+ <entry align="left">
+ Seam Basic (Modular EAR)
+ </entry>
+ <entry align="left" nameend="c5" namest="c2">
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_GettingStarted/default222.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </entry>
- </row>
+ </entry>
+ </row>
<row>
<entry>
Any combination JSF 1.2, RichFaces, or Seam.
@@ -178,48 +160,45 @@
</programlisting>
</entry>
</row>
- </tbody>
- </tgroup>
- </table>
- </section> --> <!-- Section removed as per feedback from Prabhat Jha
+ </tbody>
+ </tgroup>
+ </table>
+ </section> --><!-- Section removed as per feedback from Prabhat Jha
<section id="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Video_Tutorials">
- <title>Video Tutorials</title>
- <para>
- The following links provide tutorial videos created by the Portlet Bridge developer:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <ulink url="http://www.vimeo.com/3977469">Episode 1: Getting Started With The Bridge</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.vimeo.com/4521877">Episode 2: Portlet 1.0 Advanced Seam and RichFaces</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.vimeo.com/5847864">Episode 3: Seam and Portlet 2.0 Eventing</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.vimeo.com/7255033">Episode 4: Running the 2.0 bridge on GateIn and deploy using JBoss Tools</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.vimeo.com/8752541">Episode 5: GateIn JMX Metrics and Dashboard Demo</ulink>
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.vimeo.com/wesleyhales/videos">Check here for the latest videos.</ulink>
- </para>
- </listitem>
- </itemizedlist>
- </section> -->
-</section>
-
-
+ <title>Video Tutorials</title>
+ <para>
+ The following links provide tutorial videos created by the Portlet Bridge developer:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://www.vimeo.com/3977469">Episode 1: Getting Started With The Bridge</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.vimeo.com/4521877">Episode 2: Portlet 1.0 Advanced Seam and RichFaces</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.vimeo.com/5847864">Episode 3: Seam and Portlet 2.0 Eventing</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.vimeo.com/7255033">Episode 4: Running the 2.0 bridge on GateIn and deploy using JBoss Tools</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.vimeo.com/8752541">Episode 5: GateIn JMX Metrics and Dashboard Demo</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.vimeo.com/wesleyhales/videos">Check here for the latest videos.</ulink>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section> --></section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/overview.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/overview.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/overview.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,110 +1,38 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-JBoss_Portlet_Bridge_Overview">
- <title>JBoss Portlet Bridge Overview</title>
- <formalpara id="form-Reference_Guide-JBoss_Portlet_Bridge_Overview-What_is_the_JBoss_Portlet_Bridge">
- <title>What is the JBoss Portlet Bridge?</title>
- <para>
+ <title>JBoss Portlet Bridge Overview</title>
+ <formalpara id="form-Reference_Guide-JBoss_Portlet_Bridge_Overview-What_is_the_JBoss_Portlet_Bridge">
+ <title>What is the JBoss Portlet Bridge?</title>
+ <para>
The JBoss Portlet Bridge (or <literal>JBPB</literal> for short) is an implementation of the <ulink url="http://jcp.org/en/jsr/detail?id=329">JSR-329</ulink> specification.
</para>
-
- </formalpara>
- <para>
+ </formalpara>
+ <para>
It supports the JSF 1.2 runtime within a JSR 286 portlet and with added enhancements to support other web frameworks (such as <ulink url="http://www.seamframework.org/">Seam</ulink> and <ulink url="http://www.jboss.org/jbossrichfaces/">RichFaces</ulink>).
</para>
- <para>
+ <para>
It allows any Java developer to quickly get started with their JSF web application running in a portal environment. The developer no longer needs to worry about the underlying portlet development, portlet concepts, or the API.
</para>
- <para>
+ <para>
Find more information about the JBoss Portlet Bridge, the developers, the community at <ulink url="http://www.jboss.org/portletbridge/">the project page</ulink>.
</para>
- <formalpara id="form-Reference_Guide-JBoss_Portlet_Bridge_Overview-Understanding_how_JSF_works_with_Portal">
- <title>Understanding how JSF works with Portal</title>
- <para>
+ <formalpara id="form-Reference_Guide-JBoss_Portlet_Bridge_Overview-Understanding_how_JSF_works_with_Portal">
+ <title>Understanding how JSF works with Portal</title>
+ <para>
The portlet bridge is not a portlet. It is the mediator between the two environments and allows JSF and Portal to be completely unaware of each other.
</para>
-
- </formalpara>
- <para>
+ </formalpara>
+ <para>
The bridge is used to execute <literal>Faces</literal> requests on behalf of the portlet. During each request, the <literal>Faces</literal> environment is setup and handled by the bridge.
</para>
- <para>
+ <para>
Part of this implementation acts as a <literal>Faces</literal> controller much as the FacesServlet does in the direct client request environment.
</para>
- <para>
+ <para>
The other part of this implementation is provided by implementing a variety of (standard) <literal>Faces</literal> extensions.
</para>
- <important>
- <title>Disclaimer</title>
- <para>
- This draft specification for the JSR 329 specification is not final. Any final specification that may be published will likely contain differences, some of which may be substantial.
- </para>
- <para>
- Publication of this draft specification is not intended to provide the basis for implementations of the specification. This draft specification is provided AS IS.
- </para>
- <para>
- THERE ARE NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF CONDITION OF TITLE OR NONINFRINGEMENT. You may copy and display this draft specification provided that you include this notice and any existing copyright notice.
- </para>
- <para>
- Except for the limited copyright license granted above, there are no other licenses granted to any intellectual property owned or controlled by any of the authors or developers of this material. No other rights are granted by implication, estoppel or otherwise.
- </para>
-
- </important>
- <!-- <figure id="build.fig">
-<title>Faces in Portlet Environment</title>
-<mediaobject>
-<imageobject>
-<imagedata align="center" fileref="images/portletbridge-basic.png"/>
-</imageobject>
-</mediaobject>
-</figure>
-<imageobject>
-<imagedata fileref="images/frontpage.png" format="png" align="center"
-valign="middle"/>
-</imageobject>
-</para> --><!-- <para>
-<emphasis role="bold">JBoss Portal Resources:</emphasis>
-<orderedlist>
-<listitem>
-<para>
-<ulink url="http://labs.jboss.com/jbossportal">JBoss Portal Home Page</ulink>
-</para>
-</listitem>
-<listitem>
-<para>Forums:
-<ulink
-url="http://www.jboss.org/index.html?module=bb&op=viewforum&f=215"
->User</ulink>
-|
-<ulink
-url="http://www.jboss.org/index.html?module=bb&op=viewforum&f=205"
->Design</ulink>
-|
-<ulink url="http://jboss.org/index.html?module=bb&op=viewforum&f=232">WSRP</ulink>
-</para>
-</listitem>
-<listitem>
-<para>
-<ulink url="http://www.jboss.com/wiki/Wiki.jsp?page=JBossPortal">Wiki</ulink>
-</para>
-</listitem>
-<listitem>
-<para>
-<ulink url="http://www.portletswap.com">PortletSwap.com portlet exchange</ulink>
-</para>
-</listitem>
-<listitem>
-<para>
-<ulink
-url="http://jira.jboss.com/jira/browse/JBPORTAL?report=com.atlassian.jira.plug..."
->Our Roadmap</ulink>
-</para>
-</listitem>
-</orderedlist>
-</para> -->
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/portlet_development.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/portlet_development.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/portlet_development.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,255 +1,203 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge">
- <title>Developing Portlets with the Bridge</title>
- <para>
+ <title>Developing Portlets with the Bridge</title>
+ <para>
This chapter demonstrates common development tasks described by the 329 specification.
</para>
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Excluding_Attributes_from_the_Bridge_Request_Scope">
- <title>Excluding Attributes from the Bridge Request Scope</title>
- <para>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Excluding_Attributes_from_the_Bridge_Request_Scope">
+ <title>Excluding Attributes from the Bridge Request Scope</title>
+ <para>
When your application uses request attributes on a per request basis and you do not want that particular attribute to be managed in the extended bridge request scope, you must use the following configuration in your <filename>faces-config.xml</filename>.
</para>
- <para>
- In the code sample below you can see that any attribute namespaced as <literal>foo.bar</literal> or any attribute beginning with <literal>foo.baz(wild-card)</literal> will be excluded from the bridge request scope and only be used per that application's request.
+ <para>
+ In the code sample below you can see that any attribute namespaced as <literal>foo.bar</literal> or any attribute beginning with <literal>foo.baz.(wild-card)</literal> will be excluded from the bridge request scope and only be used per that application's request.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default223.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Supporting_PortletMode_Changes">
- <title>Supporting PortletMode Changes</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default223.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Supporting_PortletMode_Changes">
+ <title>Supporting PortletMode Changes</title>
+ <para>
A <literal>PortletMode</literal> represents a distinct render path within an application. There are three standard modes: <emphasis>view</emphasis>, <emphasis>edit</emphasis>, and <emphasis>help</emphasis>.
</para>
- <para>
- The bridge's <literal>ExternalContext.encodeActionURL</literal> recognizes the query string parameter <literal>javax.portlet.faces.PortletMode</literal> and uses this parameter's value to set the portlet mode on the underlying portlet <literal>actionURL</literal> or response.
+ <para>
+ The bridge's <literal>ExternalContext.encodeActionURL</literal> recognizes the query string parameter <literal>javax.portlet.faces.PortletMode</literal> and uses this parameter's value to set the portlet mode on the underlying portlet <literal>actionURL</literal> or response.
</para>
- <para>
+ <para>
Once processed it then removes this parameter from the query string. This means the following navigation rule causes one to render the <filename>/edit.jspx</filename> viewId in the portlet edit mode:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default224.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Navigating_to_a_modes_last_viewId">
- <title>Navigating to a mode's last viewId</title>
- <para>
- By default a mode change will start in the mode's default view without any (prior) existing state. One common portlet pattern when returning to a mode left after entering another mode (e.g.. view -> edit -> view) is to return to the last view (and state) of this origin mode.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default224.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Navigating_to_a_modes_last_viewId">
+ <title>Navigating to a mode's last viewId</title>
+ <para>
+ By default a mode change will start in the mode's default view without any (prior) existing state. One common portlet pattern when returning to a mode left after entering another mode (e.g.. view -> edit -> view) is to return to the last view (and state) of this origin mode.
</para>
- <para>
+ <para>
The bridge will explicitly encode the necessary information so that when returning to a prior mode it can target the appropriate view and restore the appropriate state.
</para>
- <para>
- The session attributes maintained by the bridge are intended to be used by developers to navigate back from a mode to the last location and state of a prior mode. As such, a developer needs to describe a dynamic navigation: "From view <parameter>X</parameter> return to the last view of mode <parameter>Y</parameter>".
+ <para>
+ The session attributes maintained by the bridge are intended to be used by developers to navigate back from a mode to the last location and state of a prior mode. As such, a developer needs to describe a dynamic navigation: "From view <parameter>X</parameter> return to the last view of mode <parameter>Y</parameter>".
</para>
- <para>
+ <para>
This is most easily expressed via an <literal>EL</literal> expression. For example:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default225.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <section id="sect-Reference_Guide-Navigating_to_a_modes_last_viewId-Note_to_Portlet_Developers">
- <title>Note to Portlet Developers</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default225.xml" parse="text"/></programlisting>
+ <section id="sect-Reference_Guide-Navigating_to_a_modes_last_viewId-Note_to_Portlet_Developers">
+ <title>Note to Portlet Developers</title>
+ <para>
Depending on the bridge implementation, when using values from these session scoped attributes or any viewIds which may contain query string parameters it may be necessary to use the wild-card syntax when identifying the rule target. In the above, for example, the
</para>
-
-<programlisting language="XML" role="XML"><to-view-id>
+ <programlisting language="XML" role="XML"><to-view-id>
</programlisting>
- <para>
+ <para>
expression returns a <parameter>viewId</parameter> of the form
</para>
-
-<programlisting language="XML" role="XML">/viewId?javax.portlet.faces.PortletMode=view&....
+ <programlisting language="XML" role="XML">/viewId?javax.portlet.faces.PortletMode=view&....
</programlisting>
- <para>
- Without wild-carding, when a subsequent navigation occurs from this new view, the navigation rules wouldn't resolve because there wouldn't be an exact match. Likewise, the above <literal>edit.jspx</literal>
+ <para>
+ Without wild-carding, when a subsequent navigation occurs from this new view, the navigation rules wouldn't resolve because there wouldn't be an exact match. Likewise, the above <literal>edit.jspx</literal>
</para>
-
-<programlisting language="XML" role="XML"><from-view-id>
+ <programlisting language="XML" role="XML"><from-view-id>
</programlisting>
- <para>
+ <para>
is wild-carded because there are navigation rules that target it that use a query string:
</para>
-
-<programlisting language="XML" role="XML">
+ <programlisting language="XML" role="XML">
<to-view-id> /edit.jspx?javax.portlet.faces.PortletMode=edit </to-view-id>
</programlisting>
- <para>
+ <para>
Developers are encouraged to use such wild-carding to ensure they execute properly in the broadest set of bridge implementations.
</para>
-
- </section>
-
-
</section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Clearing_The_View_History_When_Changing_Portlet_Modes">
- <title>Clearing The View History When Changing Portlet Modes</title>
- <para>
- By default the bridge remembers the view history when you switch to a different portlet mode (like "Help" or "Edit"). You can use the following parameter in your <filename>portlet.xml</filename> to use the default viewId each time you switch modes.
+ </section>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Clearing_The_View_History_When_Changing_Portlet_Modes">
+ <title>Clearing The View History When Changing Portlet Modes</title>
+ <para>
+ By default the bridge remembers the view history when you switch to a different portlet mode (like "Help" or "Edit"). You can use the following parameter in your <filename>portlet.xml</filename> to use the default viewId each time you switch modes.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default230.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-General_Error_Handling">
- <title>General Error Handling</title>
- <note>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default230.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-General_Error_Handling">
+ <title>General Error Handling</title>
+ <note>
+ <para>
If you are developing a <application>Seam</application> portlet you can now use <filename>pages.xml</filename> for all error handling.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
The following configuration may be used to handle exceptions. This is also useful for handling session timeout and <literal>ViewExpiredExceptions</literal>.
</para>
- <note>
- <title>The Location Element</title>
- <para>
+ <note>
+ <title>The Location Element</title>
+ <para>
The location element must contain the <filename>/faces/</filename> mapping to work properly.
</para>
-
- </note>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default231.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Custom_Ajax_Error_Handling">
- <title>Custom Ajax Error Handling</title>
- <para>
+ </note>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default231.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Custom_Ajax_Error_Handling">
+ <title>Custom Ajax Error Handling</title>
+ <para>
By default, error handling is sent to a standard servlet page for Ajax requests. To handle the error inside the portlet, use the following javascript:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default232.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default232.xml" parse="text"/></programlisting>
+ <para>
Also, add the following to <filename>web.xml</filename>.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default233.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default233.xml" parse="text"/></programlisting>
+ <para>
Read more about these settings here <ulink url="http://docs.jboss.org/richfaces/3.3.X/3.3.3.Final/en/devguide/html/Archit...">Request Errors and Session Expiration Handling</ulink>
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Communication_Between_Your_Portlets">
- <title>Communication Between Your Portlets</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Communication_Between_Your_Portlets">
+ <title>Communication Between Your Portlets</title>
+ <para>
There are four different ways to send messages, events, and parameters between portlets which are contained in different <literal>ears/wars</literal> or contained in the same <literal>war</literal>.
</para>
- <para>
+ <para>
Having two portlets in the same <literal>war</literal> or having them separated does not affect the Portlet Container because each portlet has a different <parameter>HttpSession</parameter>.
</para>
- <para>
- The recommended way to share a parameter or event payload between two or more portlets with the Portlet 2.0 specification are the <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters" /> and <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events" /> mechanisms.
+ <para>
+ The recommended way to share a parameter or event payload between two or more portlets with the Portlet 2.0 specification are the <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters"/> and <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events"/> mechanisms.
</para>
- <para>
+ <para>
This allows you to decouple your application from surgically managing objects in the <parameter>PortletSession.APPLICATION_SCOPE.</parameter>
</para>
- <para>
+ <para>
However, if these do not meet your use case or you have a different strategy, you can use one of the following methods.
</para>
- <section id="sect-Reference_Guide-Communication_Between_Your_Portlets-Storing_Components_in_PortletSession.APPLICATION_SCOPE">
- <title>Storing Components in <parameter>PortletSession.APPLICATION_SCOPE</parameter></title>
- <para>
+ <section id="sect-Reference_Guide-Communication_Between_Your_Portlets-Storing_Components_in_PortletSession.APPLICATION_SCOPE">
+ <title>Storing Components in <parameter>PortletSession.APPLICATION_SCOPE</parameter></title>
+ <para>
Sometimes it is beneficial to store your <application>Seam</application> components in the portlet <parameter>APPLICATION_SCOPE</parameter>.
</para>
- <para>
+ <para>
By default, these objects are stored in the <parameter>PORTLET_SCOPE</parameter> but with the annotation below, this class can be pulled out of the <literal>PortletSession</literal> and its values used in other portlets across different <application>Seam</application> applications.
</para>
-
-<programlisting language="Java" role="JAVA">@PortletScope(PortletScope.ScopeType.APPLICATION_SCOPE)
+ <programlisting language="Java" role="JAVA">@PortletScope(PortletScope.ScopeType.APPLICATION_SCOPE)
</programlisting>
- <para>
+ <para>
Then you would pull the stateful object from the session:
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default235.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default235.java" parse="text"/></programlisting>
+ <para>
This method is demonstrated in this video: <ulink url="http://www.vimeo.com/4521877">Lesson 2: Portlet 1.0 Advanced Seam and RichFaces</ulink>
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Communication_Between_Your_Portlets-Using_the_PortletSession">
- <title>Using the PortletSession</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Communication_Between_Your_Portlets-Using_the_PortletSession">
+ <title>Using the PortletSession</title>
+ <para>
If you need to access the <literal>PortletSession</literal> to simply share a parameter or value across multiple portlets, you can use the following:
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default236.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default236.java" parse="text"/></programlisting>
+ <para>
Then, in your JSP or Facelets page, you can use:
</para>
-
-<programlisting language="XML" role="XML">#{httpSessionScope['your parameter name']}
+ <programlisting language="XML" role="XML">#{httpSessionScope['your parameter name']}
</programlisting>
- <para>
+ <para>
<note>
- <title>Note to Portlet Developers</title>
- <para>
+ <title>Note to Portlet Developers</title>
+ <para>
<literal>#{httpSessionScope}</literal> was implemented after <literal>2.0.0.BETA</literal>. If you are using the <literal>1.0</literal> bridge or pre <literal>2.0.0.BETA</literal>, you must use the <literal>EL</literal> variable <literal>#{sessionApplicationScope}</literal>.
</para>
-
- </note>
+ </note>
For more information about which <literal>EL</literal> variables are provided by the bridge, read <ulink url="http://jcp.org/aboutJava/communityprocess/edr/jsr329/index2.html">section 6.5.1 of the JSR-329 specification</ulink>.
</para>
-
- </section>
-
-
</section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Linking_to_PortletJSF_Pages_Using_houtputlink">
- <title>Linking to Portlet/JSF Pages Using h:outputlink</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Linking_to_PortletJSF_Pages_Using_houtputlink">
+ <title>Linking to Portlet/JSF Pages Using h:outputlink</title>
+ <para>
For linking to any JSF/Facelets page within your portlet web application, you can use the following.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default238.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Redirecting_to_an_External_Page_or_Resource">
- <title>Redirecting to an External Page or Resource</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default238.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Redirecting_to_an_External_Page_or_Resource">
+ <title>Redirecting to an External Page or Resource</title>
+ <para>
To link to a non JSF view, <emphasis>jboss.org</emphasis> for example, you can use the following parameter.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default239.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default239.xml" parse="text"/></programlisting>
+ <para>
Then in your backing bean, you must call a <parameter>redirect()</parameter>.
</para>
-
-<programlisting language="Java" role="JAVA">FacesContext.getCurrentInstance().getExternalContext().redirect("http://www.jboss.org");
+ <programlisting language="Java" role="JAVA">FacesContext.getCurrentInstance().getExternalContext().redirect("http://www.jboss.org");
</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Using_Provided_EL_Variables">
- <title>Using Provided EL Variables</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Using_Provided_EL_Variables">
+ <title>Using Provided EL Variables</title>
+ <para>
All <literal>EL</literal> variables found in the JSR-329 (Portlet 2.0) specification are available in the JBoss Portlet Bridge. For example, you can use the following to edit the portlet preferences on the UI:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default241.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default241.xml" parse="text"/></programlisting>
+ <para>
Then in your backing bean, you must call the PortletPreferences.store() method.
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default242.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Portlet_Development/default242.java" parse="text"/></programlisting>
+ </section>
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -121,7 +121,7 @@
This section describes how to deploy a portlet in JBoss Enterprise Portal Platform.
</para>
<para>
- An example portlet called <filename>SimplestHelloWorld</filename> is available in the <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package.
+ An example portlet called <filename>SimplestHelloWorld</filename> is available in the <filename>/jboss-epp-<replaceable>VERSION</replaceable>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package.
</para>
<section id="sect-Reference_Guide-Deploying_your_first_Portlet-Compiling">
<title>Compiling</title>
@@ -142,7 +142,7 @@
</step>
<step>
<para>
- Copy the package file into <literal>EPP_HOME/server/default/deploy</literal>.
+ Copy the package file into <literal><replaceable>EPP_DIST</replaceable>/jboss-as/server/default/deploy</literal>.
</para>
</step>
<step>
@@ -354,7 +354,7 @@
<para>Obtain the JBoss Enterprise Portal Platform sources package from the Customer Support portal.</para>
</step>
<step>
- <para>Move to <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/jsphellouser</filename> </para>
+ <para>Move to <filename>/jboss-epp-<replaceable>VERSION</replaceable>-src/portal/examples/portlets/jsphellouser</filename> </para>
</step>
<step>
<para>
@@ -523,7 +523,7 @@
In order to write a portlet using JSF a 'bridge' is needed. This software allows developers to write a portlet application as if it was a JSF application. The bridge then negotiates the interactions between the two layers.
</para>
<para>
- An example using the JBoss Portlet Bridge is available in the <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package. The configuration is slightly different from a JSP application. This example can be used as a base to configure instead of creating a new application.
+ An example using the JBoss Portlet Bridge is available in the <filename>/jboss-epp-<replaceable>VERSION</replaceable>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package. The configuration is slightly different from a JSP application. This example can be used as a base to configure instead of creating a new application.
</para>
<para>
As in any JSF application, the file <literal>faces-config.xml</literal> is required. It must contain the following information:
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,105 +1,89 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "../Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="wsrp">
- <title>Web Services for Remote Portlets (WSRP)</title>
-
- <section>
- <title>Introduction</title>
- <para>The Web Services for Remote Portlets specification defines a web service interface for accessing and
+ <title>Web Services for Remote Portlets (WSRP)</title>
+ <section>
+ <title>Introduction</title>
+ <para>The Web Services for Remote Portlets specification defines a web service interface for accessing and
interacting with interactive presentation-oriented web services. It has been produced through the efforts of
the Web Services for Remote Portlets (WSRP) OASIS Technical Committee. It is based on the requirements
gathered and on the concrete proposals made to the committee.
</para>
-
- <para>Scenarios that motivate WSRP functionality include:
+ <para>Scenarios that motivate WSRP functionality include:
</para>
- <itemizedlist>
- <listitem>
- <para>Content hosts, such as portal servers, providing Portlets as presentation-oriented web services
+ <itemizedlist>
+ <listitem>
+ <para>Content hosts, such as portal servers, providing Portlets as presentation-oriented web services
that can be used by aggregation engines.
</para>
- </listitem>
- <listitem>
- <para>Aggregating frameworks, including portal servers, consuming presentation-oriented web services
+ </listitem>
+ <listitem>
+ <para>Aggregating frameworks, including portal servers, consuming presentation-oriented web services
offered by content providers and integrating them into the framework.
</para>
- </listitem>
- </itemizedlist>
- <para>More information on WSRP can be found on the
+ </listitem>
+ </itemizedlist>
+ <para>More information on WSRP can be found on the
<ulink url="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp">official website for WSRP</ulink>.
Further suggested reading is the
<ulink url="http://www.oasis-open.org/committees/download.php/10539/wsrp-primer-1.0.html">primer</ulink>
for a good, albeit technical, overview of WSRP.
</para>
- </section>
-
- <section id="wsrp_support">
- <title>Level of support in JBoss Enterprise Portal Platform</title>
- <para>The WSRP Technical Committee defined
+ </section>
+ <section id="wsrp_support">
+ <title>Level of support in JBoss Enterprise Portal Platform</title>
+ <para>The WSRP Technical Committee defined
<ulink url="http://www.oasis-open.org/committees/download.php/3073">WSRP Use Profiles</ulink>
to help with WSRP interoperability. This section will refer to terms defined in that document.
</para>
-
- <para>JBoss Enterprise Portal Platform provides a Simple level of support for the WSRP Producer except that out-of-band registration
+ <para>JBoss Enterprise Portal Platform provides a Simple level of support for the WSRP Producer except that out-of-band registration
is not currently handled. In-band registration and persistent local state (which are
defined at the Complex level) are supported.
</para>
-
- <para>On the Consumer side, JBoss Enterprise Portal Platform provides a Medium level of support for WSRP, except that the consumer only handles
+ <para>On the Consumer side, JBoss Enterprise Portal Platform provides a Medium level of support for WSRP, except that the consumer only handles
HTML markup (as JBoss Enterprise Portal Platform itself does not handle other markup types). It does support explicit portlet
cloning and it fully supports the PortletManagement interface.
</para>
-
- <para>As far as caching goes, the component has Level 1 Producer and Consumer. Cookie handling is supported properly on the
+ <para>As far as caching goes, the component has Level 1 Producer and Consumer. Cookie handling is supported properly on the
Consumer and the Producer requires initialization of cookies (it has been found that it improves interoperability
with some consumers). The component does not support custom window states or modes, as JBoss Enterprise Portal Platform does not. The component does,
however, support CSS on both the Producer (though it is more a function of the portlets than inherent Producer
capability) and Consumer.
</para>
-
- <para>While a complete implementation of WSRP 1.0 is provided, the community developers do need to go through the
+ <para>While a complete implementation of WSRP 1.0 is provided, the community developers do need to go through the
<ulink url="http://www.oasis-open.org/committees/download.php/6018">Conformance statements</ulink>
and perform more interoperability testing (an area that needs to be better supported by the WSRP Technical
Committee and Community at large).
</para>
-
- <para>JBoss Enterprise Portal Platform supports WSRP 2.0 with a complete implementation of the non-optional features. The only
+ <para>JBoss Enterprise Portal Platform supports WSRP 2.0 with a complete implementation of the non-optional features. The only
features not implemented are support for lifetimes and leasing
support.
</para>
-
- <note>
- <title>Note</title>
- <para>As of version &VZ; of JBoss Enterprise Portal Platform, WSRP is only activated and supported
+ <note>
+ <title>Note</title>
+ <para>As of version &VZ; of JBoss Enterprise Portal Platform, WSRP is only activated and supported
when JBoss Enterprise Portal Platform is deployed on JBoss Application Server.
</para>
- </note>
- </section>
-
- <section>
- <title>Deploying JBoss Enterprise Portal Platform's WSRP services</title>
- <para>
+ </note>
+ </section>
+ <section>
+ <title>Deploying JBoss Enterprise Portal Platform's WSRP services</title>
+ <para>
JBoss Enterprise Portal Platform provides a complete support of WSRP 1.0 and 2.0 standard interfaces and offers both consumer and
producer services. Starting with version 2.1.0-GA of the component, WSRP is packaged as a JBoss Enterprise Portal Platform
- extension and is now self-contained in an easy to install package named
- <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear</filename>
- where
- <filename>$JBOSS_PROFILE_HOME</filename>
- refers to your JBoss AS profile directory (<filename>default</filename>, for instance).
+ extension and is now self-contained in a package named
+ <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein-wsrp-integration.ear</filename>
+.
</para>
- <para>
- The extension itself is composed of the following components, assuming
- <replaceable>$WSRP_VERSION</replaceable>
- (at the time of the writing, it was &WSRP_VERSION;) is the version of the WSRP component and
- <replaceable>$PORTAL_VERSION</replaceable>
- (at the time of the writing, it was &VZ;) is the current JBoss Enterprise Portal Platform version:
+ <para>
+ The extension itself is composed of the following components:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<filename>META-INF</filename>
contains files necessary for EAR packaging. The only file that is of interest from a user perspective
is
@@ -107,169 +91,163 @@
which allows you to configure WS-Security support for the consumer. Please see the
<xref linkend="wss_configuration"/> section for more details.
</para>
- </listitem>
- <listitem>
- <para>
- The <filename>extension-component-$PORTAL_VERSION.jar</filename>, which contains the components needed to
+ </listitem>
+ <listitem>
+ <para>
+ The <filename>extension-component-&VZ;.jar</filename>, which contains the components needed to
integrate the WSRP component into JBoss Enterprise Portal Platform. It also includes the default configuration files for
the WSRP producer and the default WSRP consumers.
</para>
- </listitem>
- <listitem>
- <para>
- The <filename>extension-config-$PORTAL_VERSION.jar</filename>, which contains the configuration file
+ </listitem>
+ <listitem>
+ <para>
+ The <filename>extension-config-&VZ;.jar</filename>, which contains the configuration file
needed by the GateIn extension mechanism to properly register this EAR as an extension.
</para>
- </listitem>
- <listitem>
- <para>
- The <filename>extension-war-$PORTAL_VERSION.war</filename>, which contains the configuration files
+ </listitem>
+ <listitem>
+ <para>
+ The <filename>extension-war-&VZ;.war</filename>, which contains the configuration files
needed by the portal extension mechanism to properly setup the WSRP service. It includes
<filename>wsrp-configuration.xml</filename>
which, in particular, configures several options for the
<code>WSRPServiceIntegration</code>
component at the heart of the WSRP integration in JBoss Enterprise Portal Platform.
</para>
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The <filename>lib</filename> directory, which contains the different libraries needed by the WSRP service.
</para>
- </listitem>
- <listitem>
- <para>
- The <filename>wsrp-admin-gui-$WSRP_VERSION.war</filename>, which contains the WSRP Configuration portlet
+ </listitem>
+ <listitem>
+ <para>
+ The <filename>wsrp-admin-gui-&WSRP_VERSION;.war</filename>, which contains the WSRP Configuration portlet
with which you can configure consumers to access remote servers and how the WSRP producer is
configured.
</para>
- </listitem>
- <listitem>
- <para>
- The <filename>wsrp-producer-jb5wsss-$WSRP_VERSION.war</filename>, which contains the producer-side
+ </listitem>
+ <listitem>
+ <para>
+ The <filename>wsrp-producer-jb5wsss-&WSRP_VERSION;.war</filename>, which contains the producer-side
support for WS-Security. The only file of interest from a user perspective is
<filename>gatein-wsse-producer.xml</filename> which allows you to configure WS-Security support for
the producer. Please see the <xref linkend="wss_configuration"/> section.
for more details.
</para>
- </listitem>
- </itemizedlist>
-
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
If you are not going to use WSRP in JBoss Enterprise Portal Platform, it will not adversely affect your installation to leave it
as is. Otherwise, you can just remove the
<filename>gatein-wsrp-integration.ear</filename>
file from your AS deploy directory.
</para>
-
- <section id="wsrp-ports">
- <title>Considerations to use WSRP when running JBoss Enterprise Portal Platform on a non-default port or hostname</title>
- <para>
+ <section id="wsrp-ports">
+ <title>Considerations to use WSRP when running JBoss Enterprise Portal Platform on a non-default port or hostname</title>
+ <para>
JBoss WS (the web service stack that JBoss Enterprise Portal Platform uses) should take care of the details of updating the
port and host name used in WSDL. See the
- <ulink url="http://community.jboss.org/wiki/JBossWS-UserGuide#Configuration">JBoss WS user guide on that
- subject
- </ulink>
+ <ulink url="http://community.jboss.org/wiki/JBossWS-UserGuide#Configuration">JBoss WS user guide on that subject </ulink>
for more details.
</para>
- <para>
+ <para>
Of course, if you have modified the host name and port on which your server runs, you will
need to
- update the configuration for the consumer used to consume JBoss Enterprise Portal Platform's 'self' producer. Please refer to
+ update the configuration for the consumer used to consume JBoss Enterprise Portal Platform's 'self' producer. Please refer to
the
<xref linkend="consumer_configuration"/>
to learn how to do so.
</para>
- </section>
- </section>
-
- <section>
- <title>Securing WSRP</title>
- <section>
- <title>Considerations to use WSRP with SSL</title>
- <para>It is possible to use WSRP over SSL for secure exchange of data. Please refer to the
+ </section>
+ </section>
+ <section>
+ <title>Securing WSRP</title>
+ <section>
+ <title>Considerations to use WSRP with SSL</title>
+ <para>It is possible to use WSRP over SSL for secure exchange of data. Please refer to the
<ulink url="http://community.jboss.org/wiki/ConfiguringWSRPforuseoverSSL">instructions</ulink>
on how to do so from
- <ulink url="http://community.jboss.org/wiki/GateIn">GateIn's wiki</ulink>.
+ <ulink url="http://community.jboss.org/wiki/GateIn">GateIn's wiki</ulink>.
</para>
- </section>
- <section>
- <title>WSRP and WS-Security</title>
- <para>Portlets may present different data or options depending on the currently authenticated user. For remote
+ </section>
+ <section>
+ <title>WSRP and WS-Security</title>
+ <para>Portlets may present different data or options depending on the currently authenticated user. For remote
portlets, this means having to propagate the user credentials from the consumer back to the producer in
a safe and secure manner. The WSRP specification does not directly specify how this should be
accomplished, but delegates this work to the existing WS-Security standards.
</para>
- <note>
- <title>Web Container Compatibility</title>
- <para>WSRP and WS-Security is currently only supported on JBoss Enterprise Portal Platform when running on top of JBoss
+ <note>
+ <title>Web Container Compatibility</title>
+ <para>WSRP and WS-Security is currently only supported on JBoss Enterprise Portal Platform when running on top of JBoss
AS 5.
</para>
- </note>
- <warning>
- <title>Encryption</title>
- <para>You will want to encrypt the credentials being sent between the consumer and producer, otherwise they
+ </note>
+ <warning>
+ <title>Encryption</title>
+ <para>You will want to encrypt the credentials being sent between the consumer and producer, otherwise they
will be sent in plain text and could be easily intercepted. You can either configure WS-Security to
encrypt and sign the SOAP messages being sent, or secure the transport layer by using an https endpoint.
Failure to encrypt the soap message or transport layer will result in the username and password being
sent in plain text. <emphasis role="bold">Use of encryption is strongly recommended.</emphasis>
</para>
- </warning>
- <important>
- <title>Credentials</title>
- <para>When the consumer sends the user credentials to the producer, it is sending the credentials for the
+ </warning>
+ <important>
+ <title>Credentials</title>
+ <para>When the consumer sends the user credentials to the producer, it is sending the credentials for the
currently authenticated user in the consumer. This makes signing in to remote portlets transparent
to end users, but also requires that the producer and consumer use the same credentials. This means
that the username and password must be the same and valid on both servers.
</para>
- <para>The recommended approach for this situation would be to use a common LDAP configuration. Please
+ <para>The recommended approach for this situation would be to use a common LDAP configuration. Please
see the user guide on how to configure LDAP for use with JBoss Enterprise Portal Platform
</para>
- </important>
- <para>The GateIn Wiki article, <ulink url="http://community.jboss.org/wiki/GateInWSRPAndWebServiceSecurity">
- GateIn WSRP and Web Service Security</ulink>, also provides a step-by-step example on how to configure
+ </important>
+ <para>The GateIn Wiki article, <ulink url="http://community.jboss.org/wiki/GateInWSRPAndWebServiceSecurity"> GateIn WSRP and Web Service Security</ulink>, also provides a step-by-step example on how to configure
WSRP with WS-Security.
</para>
- <section id="wss_configuration">
- <title>WS-Security Configuration</title>
- <para>JBoss Enterprise Portal Platform uses JBossWS Native to handle ws-security. Please see the WS-Security section of the
- <ulink url="http://www.jboss.org/jbossas/docs/5-x">JBoss AS 5 Administration and Configuration Guide
- </ulink> for in-depth configuration options. Please note that since the consumer passes its credentials
+ <section id="wss_configuration">
+ <title>WS-Security Configuration</title>
+ <para>JBoss Enterprise Portal Platform uses JBossWS Native to handle ws-security. Please see the WS-Security section of the
+ <ulink url="http://www.jboss.org/jbossas/docs/5-x">JBoss AS 5 Administration and Configuration Guide </ulink> for in-depth configuration options. Please note that since the consumer passes its credentials
to the producer, the consumer will act as the wss client and the producer will act as the wss server.
</para>
- <para> The following are the JBossWS Native configuration files which need to be configure for WSRP:
+ <para> The following are the JBossWS Native configuration files which need to be configure for WSRP:
</para>
- <itemizedlist>
- <listitem>
- <para>
- <filename>gatein-wsrp-integration.ear/META-INF/gatein-wsse-consumer.xml</filename>: JBossWS
+ <itemizedlist>
+ <listitem>
+ <para>JBossWS
configuration file for the consumer.
</para>
- </listitem>
- <listitem>
- <para>
- <filename>gatein-wsrp-integration.ear/wsrp-producer-jb5wss.war/WEB-INF/conf/gatein-wsse-producer.xml
- </filename>: JBossWS configuration file for the producer.
+ <para>
+ <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE/</replaceable>/gatein-wsrp-integration.ear/META-INF/gatein-wsse-consumer.xml</filename></para>
+ </listitem>
+ <listitem>
+ <para>JBossWS configuration file for the producer.
</para>
- </listitem>
- </itemizedlist>
- </section>
- <section>
- <title>WS-Security Producer Configuration</title>
- <para>
+ <para>
+ <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/gatein-wsrp-integration.ear/wsrp-producer-jb5wss.war/WEB-INF/conf/gatein-wsse-producer.xml </filename></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>WS-Security Producer Configuration</title>
+ <para>
Other than the JBossWS configuration file mention above, no other configuration changes should be necessary
for the producer.
</para>
- </section>
- <section>
- <title>WS-Security Consumer Configuration</title>
- <para>The consumer requires a few changes before it will function properly with WS-Security. The consumer
+ </section>
+ <section>
+ <title>WS-Security Consumer Configuration</title>
+ <para>The consumer requires a few changes before it will function properly with WS-Security. The consumer
needs access to the current servlet request since this is used to retrieve the currently authenticated
user. In order for the consumer to access this information, it needs a special servlet-filter added to
the portal.
</para>
- <para>In <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> add the following information:
+ <para>In <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/02portal.war/WEB-INF/web.xml</filename> add the following information:
</para>
-<programlisting role="XML"><![CDATA[<!-- Filter to put request and response in ServletAccess -->
+ <programlisting role="XML"><![CDATA[<!-- Filter to put request and response in ServletAccess -->
<filter>
<filter-name>ServletAccessFilter</filter-name>
<filter-class>org.gatein.wsrp.servlet.ServletAccessFilter</filter-class>
@@ -279,47 +257,46 @@
<url-pattern>/*</url-pattern>
</filter-mapping>]]>
</programlisting>
- <para>
- Finally, in the WSRP Configuration portlet, in the consumer configuration options, you will need to check the 'Enable WS Security' checkbox:
+ <para>
+ Finally, in the WSRP Configuration portlet, in the consumer configuration options, you will need to check the 'Enable WS Security' checkbox:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_wss_selected.png" format="PNG" align="center" valign="middle" scalefit="1"/>
- </imageobject>
- </mediaobject>
- </section>
- <section>
- <title>WS-Security Consumer Checklist</title>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/config_wss_selected.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </section>
+ <section>
+ <title>WS-Security Consumer Checklist</title>
+ <para>
In order for the consumer to handle ws-security, the following steps must be completed properly
</para>
- <itemizedlist>
- <listitem>
- <para>The JBossWS configuration files must be configured.</para>
- </listitem>
- <listitem>
- <para>The filter must be added to the portal's web.xml.</para>
- </listitem>
- <listitem>
- <para>The enable wss feature must be check in the wsrp admin.</para>
- </listitem>
- </itemizedlist>
- <para>The consumer will not properly handle ws-security unless all 3 are properly configured.</para>
- </section>
+ <itemizedlist>
+ <listitem>
+ <para>The JBossWS configuration files must be configured.</para>
+ </listitem>
+ <listitem>
+ <para>The filter must be added to the portal's web.xml.</para>
+ </listitem>
+ <listitem>
+ <para>The enable wss feature must be check in the wsrp admin.</para>
+ </listitem>
+ </itemizedlist>
+ <para>The consumer will not properly handle ws-security unless all 3 are properly configured.</para>
</section>
- </section>
-
- <section>
- <title>Making a portlet remotable</title>
- <important>
- <para>
+ </section>
+ </section>
+ <section>
+ <title>Making a portlet remotable</title>
+ <important>
+ <para>
Only JSR-286 (Portlet 2.0) portlets can be made remotable as the mechanism to expose a portlet to WSRP
relies on a JSR-286-only functionality.
</para>
- </important>
- <para>JBoss Enterprise Portal Platform does
- <emphasis role="bold">NOT</emphasis>, by default, expose local portlets for consumption
- by remote WSRP consumers. In order to make a portlet remotely available, it must be made "remotable" by marking
+ </important>
+ <para>JBoss Enterprise Portal Platform does
+not, by default, expose local portlets for consumption
+ by remote WSRP consumers. In order to make a portlet remotely available, it must be made <firstterm>remotable</firstterm> by marking
it as such in the associated
<filename>portlet.xml</filename>. This is accomplished by using a specific
<code>org.gatein.pc.remotable container-runtime-option</code>. Setting its value to
@@ -329,11 +306,11 @@
will not publish it remotely. As specifying the remotable status for a portlet is optional, you do not need to
do anything if you do not need your portlet to be available remotely.
</para>
- <para>In the following example, the "BasicPortlet" portlet is specified as being remotable.
+ <example>
+ <title>Single Portlet Remotable Example</title>
+ <para>The "BasicPortlet" portlet is specified as being remotable.
</para>
- <example>
- <title>Example</title>
- <para>
+ <para>
<programlisting><![CDATA[
<?xml version="1.0" standalone="yes"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
@@ -353,9 +330,8 @@
</portlet>
</portlet-app>]]></programlisting>
</para>
-
- </example>
- <para>
+ </example>
+ <para>
It is also possible to specify that all the portlets declared within a given portlet application to be
remotable by default. This is done by specifying the
<code>container-runtime-option</code>
@@ -364,10 +340,20 @@
element level. Individual portlets can override that value to not be remotely exposed. This is an
example:
</para>
- <example>
- <title>Example</title>
- <para>
- <programlisting><![CDATA[
+ <example>
+ <title>Multiple Portlets Remotable Example</title>
+ <para>
+ The example defines two portlets. The
+ <code>org.gatein.pc.remotable container-runtime-option</code>
+ being set to
+ <code>true</code>
+ at the
+ <code>portlet-app</code>
+ level, all portlets defined in this particular portlet application are exposed remotely by JBoss Enterprise Portal Platform's
+ WSRP
+ producer.
+</para>
+ <programlisting><![CDATA[
<?xml version="1.0" standalone="yes"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -394,45 +380,32 @@
</container-runtime-option>
</portlet-app>]]>
</programlisting>
- </para>
-
- </example>
-
- <para>
- The example above defines two portlets. The
+ <para>It is possible to override the default behavior by specifying a value for the
<code>org.gatein.pc.remotable container-runtime-option</code>
- being set to
- <code>true</code>
at the
- <code>portlet-app</code>
- level, all portlets defined in this particular portlet application are exposed remotely by JBoss Enterprise Portal Platform's
- WSRP
- producer.
- Note, however, that it is possible to override the default behavior: specifying a value for the
- <code>org.gatein.pc.remotable container-runtime-option</code>
- at the
<code>portlet</code>
- level will take precedence over the default. In the example above, the
+ level. </para>
+ <para>The
<varname>RemotelyExposedPortlet</varname>
inherits the remotable status defined at the
<code>portlet-app</code>
level since it does not specify a value for the <code>org.gatein.pc.remotable container-runtime-option</code>.
- The<varname>NotRemotelyExposedPortlet</varname>, however, overrides the default behavior and is not remotely
+ The <varname>NotRemotelyExposedPortlet</varname>, however, overrides the default behavior and is not remotely
exposed. Note that in the absence of a top-level
<code>org.gatein.pc.remotable container-runtime-option</code>
- value set to <code>true</code>, portlets are NOT remotely exposed.
+ value set to <code>true</code>, portlets are not remotely exposed.
</para>
- </section>
-
- <section>
- <title>Consuming WSRP portlets from a remote Consumer</title>
- <para>WSRP Producers vary a lot as far as how they are configured. Most of them require that you specify
- the URL for the Producer's WSDL definition. Please refer to the remote producer's documentation for specific
+ </example>
+ </section>
+ <section>
+ <title>Consuming WSRP portlets from a remote Consumer</title>
+ <para>WSRP Producers vary a lot as far as how they are configured. Most of them require that you specify
+ the URL for the Producer's WSDL definition. Please refer to the remote producer's documentation for specific
instructions. For instructions on how to do so in JBoss Enterprise Portal Platform, please refer to
<xref linkend="consumer_configuration"/>.
</para>
- <para>
- JBoss Enterprise Portal Platform's Producer is automatically set up when you deploy a portal instance with the WSRP service.
+ <para>
+ JBoss Enterprise Portal Platform's Producer is automatically set up when you deploy a portal instance with the WSRP service.
You can access the WSDL file at
<filename>http://{hostname}:{port}/wsrp-producer/v2/MarkupService?wsdl</filename>. If you wish to use only the
WSRP 1 compliant version of the producer, please use the WSDL file found at
@@ -441,64 +414,53 @@
<literal>localhost</literal>
and the default port is 8080.
</para>
- </section>
-
- <section id="consumer_configuration">
- <title>Consuming remote WSRP portlets in JBoss Enterprise Portal Platform</title>
- <section>
- <title>Overview</title>
- <para>
- To be able to consume WSRP portlets exposed by a remote producer, JBoss Enterprise Portal Platform's WSRP consumer needs to
+ </section>
+ <section id="consumer_configuration">
+ <title>Consuming remote WSRP portlets in JBoss Enterprise Portal Platform</title>
+ <section>
+ <title>Overview</title>
+ <para>
+ To be able to consume WSRP portlets exposed by a remote producer, JBoss Enterprise Portal Platform's WSRP consumer needs to
know how to access that remote producer. You can configure access to a remote producer using the provided
configuration portlet. Alternatively, it is also possible to configure access to remote producers using an
XML descriptor, though it is recommended (and easier) to do so via the configuration portlet.
</para>
- <para>
+ <para>
Once a remote producer has been configured, the portlets that it exposes are then available in the
Application Registry to be added to categories and then to pages.
</para>
- </section>
-
- <section id="consumer_gui">
- <title>Configuring a remote producer using the configuration portlet</title>
- <para>
+ </section>
+ <section id="consumer_gui">
+ <title>Configuring a remote producer using the configuration portlet</title>
+ <para>
This section will cover the steps of defining access to a remote producer using the configuration portlet so that its portlets can be
- consumed within JBoss Enterprise Portal Platform. We will configure access to NetUnity's public WSRP producer.
+ consumed within JBoss Enterprise Portal Platform. We will configure access to NetUnity's public WSRP producer.
</para>
-
- <note>
- <para>
+ <note>
+ <para>
Some WSRP producers do not support chunked encoding that is activated by default by JBoss WS. If your
producer does not support chunked encoding, your consumer will not be able to properly connect to the
producer. This will manifest itself with the following error:
- <code>Caused by: org.jboss.ws.WSException: Invalid HTTP server response [503] - Service
- Unavailable</code>.
- Please see this <ulink url="http://community.jboss.org/wiki/Workaroundwhenchunkedencodingisnotsupported">wiki page
- </ulink>
+ <code>Caused by: org.jboss.ws.WSException: Invalid HTTP server response [503] - Service Unavailable</code>.
+ Please see this <ulink url="http://community.jboss.org/wiki/Workaroundwhenchunkedencodingisnotsupported">wiki page </ulink>
for more details.
</para>
- </note>
-
- <para>
+ </note>
+ <para>
JBoss Enterprise Portal Platform provides a portlet to configure access (among other functions) to remote WSRP Producers
graphically. Starting with &VZ;, the WSRP configuration portlet is installed by default. You
can find it at
- <ulink
- url="http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass...">
- http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass...
- </ulink>
+ <ulink url="http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass..."> http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass... </ulink>
</para>
-
- <para>
+ <para>
You should see a screen similar to:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_init.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- <para>This screen presents all the configured Consumers associated with their status and possible actions on
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/config_init.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>This screen presents all the configured Consumers associated with their status and possible actions on
them. A Consumer can be active or inactive. Activating a Consumer means that it is ready to act as a
portlet provider. Note also that a Consumer can be marked as requiring refresh meaning that the
information held about it might not be up to date and refreshing it from the remote Producer might be a
@@ -506,65 +468,57 @@
been fetched yet, the cached version has expired or modifications have been made to the configuration
that could potentially invalidate it, thus requiring re-validation of the information.
</para>
-
- <note>
- <title>Note</title>
- <para>
+ <note>
+ <title>Note</title>
+ <para>
The WSRP configuration was not installed by default in previous versions of JBoss Enterprise Portal Platform.
We include here the legacy instructions on how to install this portlet in case you ever need to
re-install it.
</para>
- <para>
+ <para>
Use the usual procedure to log in as a Portal administrator and go to the Application
Registry. With the default install, you can just go to
- <ulink
- url="http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass...">
- http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass...
- </ulink>
+ <ulink url="http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass..."> http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass... </ulink>
Add the WSRP Configuration portlet to the Administration category. If you use the Import Applications
functionality, the WSRP Configuration portlet will be automatically added to the Administration
category.
</para>
- <para>
+ <para>
Now that the portlet is added to a category, it can be added to a page and used. It is recommended that you add
it to the same page as the Application Registry as operations relating to WSRP and adding portlets to
categories are somewhat related. Go ahead and add the WSRP Configuration portlet to the
page using the standard procedure.
</para>
- </note>
-
- <para>
+ </note>
+ <para>
Next, create a new Consumer called <literal>netunity</literal>. Type
- "<literal>netunity</literal>" in
- the "Create a consumer named:" field then click on "Create consumer":
+ "<literal>netunity</literal>" in
+ the "Create a consumer named:" field then click on "Create consumer":
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_create.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- <para>You should now see a form allowing you to enter/modify the information about the Consumer.
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/config_create.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>You should now see a form allowing you to enter/modify the information about the Consumer.
Set the cache expiration value to 300 seconds, leave the default timeout value for web services (WS)
operations and enter the WSDL URL for the producer in the text field
- and press the "Refresh & Save" button:</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_wsdl.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- <para>This will retrieve the service description associated with the Producer which WSRP interface is described
+ and press the "Refresh & Save" button:</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/config_wsdl.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>This will retrieve the service description associated with the Producer which WSRP interface is described
by the WSDL file found at the URL you just entered. In this case, querying the service description will
reveal that the Producer requires registration, requested three registration properties and that
some of these properties are missing values:</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_missing.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- <para>This particular producer requests simple
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/config_missing.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>This particular producer requests simple
<literal>Yes</literal>
or
<literal>No</literal>
@@ -572,64 +526,56 @@
<literal>Yes</literal>
and
<literal>No</literal>
- (in that order) for the values and then pressing the "Refresh & Save" button should result in:</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_end.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
-
- <note>
- <title>Note</title>
- <para>At this point, there is no automated way to learn about which possible values (if any) are
+ (in that order) for the values and then pressing the "Refresh & Save" button should result in:</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/config_end.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <note>
+ <title>Note</title>
+ <para>At this point, there is no automated way to learn about which possible values (if any) are
expected by the remote Producer. Sometimes, the possible values will be indicated in the
registration
- property description but this is not always the case... Please refer to the specific Producer's
+ property description but this is not always the case... Please refer to the specific Producer's
documentation.
</para>
- </note>
-
- <para>
+ </note>
+ <para>
If you had been dealing with a producer which required registration but did not require any registration
properties, as is the case for the
<literal>selfv2</literal>
- consumer (the consumer that accesses the portlets made remotely available by JBoss Enterprise Portal Platform's producer via
- WSRP 2), you would have seen something similar to the screenshot below, after pressing the "Refresh & Save" button:
+ consumer (the consumer that accesses the portlets made remotely available by JBoss Enterprise Portal Platform's producer via
+ WSRP 2), you would have seen something similar to the screenshot below, after pressing the "Refresh & Save" button:
<mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_refresh.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/config_refresh.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
</para>
- </section>
-
- <section id="consumer_xml">
- <title>Configuring access to remote producers via XML</title>
-
- <para>While it is recommended you use the WSRP Configuration portlet to configure Consumers, the component provides an
+ </section>
+ <section id="consumer_xml">
+ <title>Configuring access to remote producers via XML</title>
+ <para>While it is recommended you use the WSRP Configuration portlet to configure Consumers, the component provides an
alternative way to configure consumers by adding an XML file called
<filename>wsrp-consumers-config.xml</filename> in the
- <filename>$JBOSS_PROFILE_HOME/conf/gatein/</filename> directory.
+ <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/conf/gatein/</filename> directory.
</para>
- <note>
- <title>Note</title>
- <para>An XML Schema defining which elements are available to configure Consumers via XML can be found
+ <note>
+ <title>Note</title>
+ <para>An XML Schema defining which elements are available to configure Consumers via XML can be found
in
- <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/wsrp-integration-api-$WSRP_VERSION.jar/xsd/gatein_wsrp_consumer_1_0.xsd
- </filename>
+ <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein-wsrp-integration.ear/lib/wsrp-integration-api-&WSRP_VERSION;.jar/xsd/gatein_wsrp_consumer_1_0.xsd </filename>
</para>
- </note>
- <important>
- <para>
+ </note>
+ <important>
+ <para>
It is important to note that once the XML configuration file for consumers has been read upon
the WSRP service first start, the associated information is put under control of JCR (Java Content
Repository). Subsequent launches of the WSRP service will use the JCR-stored information and ignore
the content of the XML configuration file.
</para>
-
- <!--<para>It is important to note how the XML consumers configuration file is processed. It is read the first
+<!--<para>It is important to note how the XML consumers configuration file is processed. It is read the first
time the WSRP service starts and the associated information is then put under control of JCR (Java
Content Repository). Subsequent launches of the WSRP service will use the JCR-stored information for
all producers already known to JBoss Enterprise Portal Platform. More specifically, the
@@ -646,46 +592,37 @@
<filename>wsrp-consumers-config.xml</filename>
(if such information exists) as the producer will be re-created the next time the WSRP is launched if
that information is not removed.
- </para>-->
- </important>
-
-
- <section>
- <title>Required configuration information</title>
-
- <para>This section covers what information needs to be provided to configure access to a remote producer.
+ </para>--> </important>
+ <section>
+ <title>Required configuration information</title>
+ <para>This section covers what information needs to be provided to configure access to a remote producer.
</para>
-
- <para>First, you need to provide an identifier for the producer you are configuring so that you can refer to it
+ <para>First, you need to provide an identifier for the producer you are configuring so that you can refer to it
afterwards. This is accomplished via the mandatory
<literal>id</literal>
attribute of the
<literal><wsrp-producer></literal>
element.
</para>
-
- <para>JBoss Enterprise Portal Platform also needs to learn about the remote producer's endpoints to be able to connect to the
+ <para>JBoss Enterprise Portal Platform also needs to learn about the remote producer's endpoints to be able to connect to the
remote web services and perform WSRP invocations. This is accomplished by specifying the URL for the
WSDL description for the remote WSRP service, using the
<literal><endpoint-wsdl-url></literal>
element.
</para>
-
- <para>Both the
+ <para>Both the
<literal>id</literal>
attribute and
<literal><endpoint-wsdl-url></literal>
elements are required for a functional remote producer configuration.
</para>
- </section>
-
- <section>
- <title>Optional configuration</title>
- <para>It is also possible to provide addtional configuration, which, in some cases, might be important to
+ </section>
+ <section>
+ <title>Optional configuration</title>
+ <para>It is also possible to provide addtional configuration, which, in some cases, might be important to
establish a proper connection to the remote producer.
</para>
-
- <para>One such optional configuration concerns caching. To prevent useless round-trips between the local
+ <para>One such optional configuration concerns caching. To prevent useless round-trips between the local
consumer and the remote producer, it is possible to cache some of the information sent by the producer
(such as the list of offered portlets) for a given duration. The rate at which the information is
refreshed is
@@ -700,8 +637,7 @@
information provided by the producer does not change often, it is recommended that you use this caching
facility to minimize bandwidth usage.
</para>
-
- <para>It is also possible to define a timeout after which WS operations are considered as failed. This is
+ <para>It is also possible to define a timeout after which WS operations are considered as failed. This is
helpful to avoid blocking the WSRP service, waiting on the service that does not answer. Use the
<literal>ws-timeout</literal>
attribute of the
@@ -709,21 +645,18 @@
element to specify how many milliseconds the WSRP service will wait for a response from the remote
producer before timing out and giving up.
</para>
-
- <para>Additionally, some producers require consumers to register with them before authorizing them to access
+ <para>Additionally, some producers require consumers to register with them before authorizing them to access
their offered portlets. If you know that information beforehand, you can provide the required
registration information in the producer configuration so that the consumer can register with the remote
producer when required.
</para>
- <note>
- <title>Note</title>
- <para>At this time, though, only simple String properties are supported and it is not possible to
+ <note>
+ <title>Note</title>
+ <para>At this time, though, only simple String properties are supported and it is not possible to
configure complex registration data. This should, however, be sufficient for most cases.
</para>
- </note>
-
-
- <para>Registration configuration is done via the
+ </note>
+ <para>Registration configuration is done via the
<literal><registration-data></literal>
element. Since JBoss Enterprise Portal Platform can generate the mandatory information for you, if the remote producer does
not require any registration properties, you only need to provide an empty
@@ -737,31 +670,28 @@
element. If you choose to provide a consumer name, please remember that this should uniquely identify
your consumer.
</para>
- </section>
-
- <section>
- <title>Examples</title>
-
- <para>
+ </section>
+ <section>
+ <title>Examples</title>
+ <para>
Here is the configuration of the
<literal>selfv1</literal>
and
<literal>selfv2</literal>
consumers as found in
- <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/extension-component-$WSRP_VERSION.jar/conf/wsrp-consumers-config.xml</filename>
+ <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein-wsrp-integration.ear/lib/extension-component-&WSRP_VERSION;.jar/conf/wsrp-consumers-config.xml</filename>
with a cache expiring every 500 seconds and with a 50 second timeout for web service operations.
<note>
- <para>
+ <para>
This file contains the default configuration and you should not need to edit it. If you want to make
modifications to it, it is recommended that you follow the procedure detailed in
<xref linkend="consumer_gui"/>.
</para>
- </note>
+ </note>
</para>
-
- <example>
- <title>Example</title>
- <para>
+ <example>
+ <title>Example</title>
+ <para>
<programlisting><![CDATA[
<?xml version='1.0' encoding='UTF-8' ?>
<deployments xmlns="http://www.gatein.org/xml/ns/gatein_wsrp_consumer_1_0"
@@ -782,14 +712,11 @@
</deployments>]]>
</programlisting>
</para>
-
- </example>
-
- <para>Here is an example of a WSRP descriptor with registration data and cache expiring every minute:</para>
-
- <example>
- <title>Example</title>
- <para>
+ </example>
+ <example>
+ <title>Registration Data and Cache Expiry Example</title>
+ <para>This example shows a WSRP descriptor with registration data and cache expiring every minute:</para>
+ <para>
<programlisting><![CDATA[
<?xml version='1.0' encoding='UTF-8' ?>
<deployments xmlns="http://www.gatein.org/xml/ns/gatein_wsrp_consumer_1_0"
@@ -810,53 +737,46 @@
</deployment>
</deployments>]]></programlisting>
</para>
- </example>
- </section>
+ </example>
</section>
-
- <section>
- <title>Adding remote portlets to categories</title>
- <para>
+ </section>
+ <section>
+ <title>Adding remote portlets to categories</title>
+ <para>
If you go to the Application Registry and examine the available portlets by clicking on the
Portlet link, you will now be able to see remote portlets if you click on the REMOTE tab in the left
column:
<mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/remote_portlets.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/remote_portlets.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
</para>
-
- <para>
+ <para>
These portlets are, of course, available to be used such as regular portlets: they can be used in
categories and added to pages. If you use the Import Applications functionality, they will also be
automatically imported in categories based on the keywords they define.
</para>
-
- <para>
+ <para>
More specifically, if you want to add a WSRP portlet to a category, you can access these portlets by
selecting
<literal>wsrp</literal>
in the Application Type drop-down menu:
<mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/remote_portlets_category.png" format="PNG" align="center"
- valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/remote_portlets_category.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
</para>
- </section>
-
- <section>
- <title>Adding remote portlets to pages</title>
- <para>
+ </section>
+ <section>
+ <title>Adding remote portlets to pages</title>
+ <para>
Since remote portlets can be manipulated just like regular portlets, you can add them to pages just like you
would do for a regular portlet. Please refer to the appropriate section of the documentation for how to do
so.
</para>
- <para>
+ <para>
Of note, though, is that, starting with version 5.2 of JBoss Enterprise Portal Platform, it is now possible to also add a
remote portlet to a
<filename>pages.xml</filename>
@@ -875,28 +795,28 @@
references a remote portlet using a combination of the consumer identifier for the producer publishing the
portlet and the portlet handle identifying the portlet within the context of the producer.
</para>
- <para>
+ <para>
The format for such a reference to a remote portlet is a follows: first, the identifier of the
consumer that accesses the remote producer publishing the remote portlet, then a separator (currently a
period (<literal>.</literal>)) and finally the portlet handle for that
portlet, which is a string provided by the producer to identify the portlet.
</para>
- <para>
+ <para>
Since there currently is no easy way to determine the correct portlet handle, it is recommended that you use the
graphical user interface to add remote portlets to pages instead of using
<filename>pages.xml</filename>.
</para>
- <note>
- <para>
- For remote portlets published by JBoss Enterprise Portal Platform's WSRP producer, the portlet handles are, at
+ <note>
+ <para>
+ For remote portlets published by JBoss Enterprise Portal Platform's WSRP producer, the portlet handles are, at
the time of this writing, following the
<literal>/<portlet application name>.<portlet name></literal>
format.
</para>
- </note>
- <section>
- <title>Example</title>
- <para>
+ </note>
+ <section>
+ <title>Example</title>
+ <para>
In the following example, two portlets are defined for a page named
<literal>Test</literal>
in the
@@ -905,23 +825,23 @@
other
one accessing it via the
<literal>selfv2</literal>
- consumer which consumes JBoss Enterprise Portal Platform's WSRP producer. You can see that the first one is local (the
+ consumer which consumes JBoss Enterprise Portal Platform's WSRP producer. You can see that the first one is local (the
<code><portlet-application></code>
with the
- '<literal>Added locally</literal>'
+ '<literal>Added locally</literal>'
title) and follows the usual declaration. The second portlet (the one with the
- '<literal>Added from selfv2 consumer</literal>'
+ '<literal>Added from selfv2 consumer</literal>'
title) comes from the
<literal>selfv2</literal>
consumer and uses the
<code><wsrp></code>
element instead of
<code><portlet></code>
- element and follows the format for portlets coming from the JBoss Enterprise Portal Platform's WSRP producer.
+ element and follows the format for portlets coming from the JBoss Enterprise Portal Platform's WSRP producer.
</para>
- <example>
- <title>Example</title>
- <para>
+ <example>
+ <title>Example</title>
+ <para>
<programlisting><![CDATA[
<page>
<name>Test</name>
@@ -948,123 +868,107 @@
</portlet-application>
</page>]]></programlisting>
</para>
- </example>
- </section>
-
+ </example>
</section>
- </section>
-
- <section>
- <title>Consumers maintenance</title>
-
+ </section>
+ </section>
+ <section>
+ <title>Consumers maintenance</title>
+ <section>
+ <title>Modifying a currently held registration</title>
<section>
- <title>Modifying a currently held registration</title>
-
- <section>
- <title>Registration modification for service upgrade</title>
- <para>
- Producers often offer several levels of service depending on consumers' subscription levels (for
+ <title>Registration modification for service upgrade</title>
+ <para>
+ Producers often offer several levels of service depending on consumers' subscription levels (for
example). This is implemented at the WSRP level with the registration concept: producers can assert which
level of service to provide to consumers based on the values of given registration properties.
</para>
- <para>
+ <para>
There might also be cases where you just want to update the registration information because it has
changed. For example, the producer required you to provide a valid email and the previously email
address is not valid anymore and needs to be updated.
</para>
- <para>
+ <para>
It is therefore sometimes necessary to modify the registration that concretizes the service agreement
between a consumer and a producer. The following is an example of a producer requiring a valid email (via an
<literal>email</literal>
registration property) as part of its required information that consumers need to provide to be properly
registered.
</para>
- <para>
+ <para>
Suppose now that you would like to update the email address that you provided to the remote producer when
you first registered. You will need to tell the producer that the registration data has been modified.
</para>
- <para>
+ <para>
Select the consumer for the remote producer in the available consumers list to
display its configuration. Assuming you want to change the email you registered with to
<literal>foo(a)example.com</literal>, change its value in the field for the
<literal>email</literal>
registration property:
<mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_start.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- Now click on "Update properties" to save the change. A "Modify registration" button should now appear to
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/modify_reg_start.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ Now click on "Update properties" to save the change. A "Modify registration" button should now appear to
let you send this new data to the remote producer:
<mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_modify.png" format="PNG" align="center"
- valign="middle" scalefit="1"/>
- </imageobject>
- </mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/modify_reg_modify.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
Click on this new button and, if everything went well and your updated registration has been accepted by
the remote producer, you should see something similar to:
<mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_end.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/modify_reg_end.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
</para>
-
- </section>
-
- <section id="reg_mod_error">
- <title>Registration modification on producer error</title>
-
- <para>
+ </section>
+ <section id="reg_mod_error">
+ <title>Registration modification on producer error</title>
+ <para>
It can also happen that a producer administrator decided to change its requirement for registered
consumers. JBoss Enterprise Portal Platform will attempt to help you in this situation. This section will walk through an example using
the <literal>selfv2</literal> consumer (assuming that registration is requiring a valid value for an
<literal>email</literal>
registration property). If you go to the configuration screen for this consumer, you should see:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_self.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
-
- <para>Now suppose that the administrator of the producer now additionally requires a value to be provided for a
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/config_self.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>Now suppose that the administrator of the producer now additionally requires a value to be provided for a
<literal>name</literal>
registration property. Steps on how to do perform this operation
- in JBoss Enterprise Portal Platform are outlined in the section on how to configure JBoss Enterprise Portal Platform's producer
+ in JBoss Enterprise Portal Platform are outlined in the section on how to configure JBoss Enterprise Portal Platform's producer
(<xref linkend="producer_config"/>).
Operations with this producer will now fail. If you suspect that a registration modification is required,
you should go to the configuration screen for this remote producer and refresh the information held by
- the consumer by pressing "Refresh & Save":
+ the consumer by pressing "Refresh & Save":
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_self.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
-
- <para>As you can see, the configuration screen now shows the currently held registration information and
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/modify_reg_self.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>As you can see, the configuration screen now shows the currently held registration information and
the expected information from the producer. Enter a value for the
<literal>name</literal>
property
- and then click on "Modify registration". If all went well and the producer accepted your new registration
+ and then click on "Modify registration". If all went well and the producer accepted your new registration
data, you should see something similar to:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_self_end.png" format="PNG" align="center"
- valign="middle" scalefit="1"/>
- </imageobject>
- </mediaobject>
-
- <note>
- <title>Note</title>
- <para>WSRP 1 makes it rather difficult to ascertain for sure what caused an
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/modify_reg_self_end.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <note>
+ <title>Note</title>
+ <para>WSRP 1 makes it rather difficult to ascertain for sure what caused an
<exceptionname>OperationFailedFault</exceptionname>
as it is the generic exception returned by
producers if something did not quite happen as expected during a method invocation. This means that
@@ -1074,127 +978,121 @@
if you can gather more information as to what happened. WSRP 2 introduces an exception that is
specific to a request to modify registrations thus reducing the ambiguity that exists when using WSRP 1.
</para>
-
- </note>
- </section>
+ </note>
</section>
-
- <section>
- <title>Consumer operations</title>
- <para>
+ </section>
+ <section>
+ <title>Consumer operations</title>
+ <para>
Several operations are available from the consumer list view of the WSRP configuration portlet:
<mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/consumer_operations.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/consumer_operations.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
</para>
- <para>
+ <para>
The available operations are:
</para>
- <itemizedlist>
- <listitem>
- <para>Configure: displays the consumer details and allows user to edit them</para>
- </listitem>
- <listitem>
- <para>Refresh: forces the consumer to retrieve the service description from the remote producer to
+ <itemizedlist>
+ <listitem>
+ <para>Configure: displays the consumer details and allows user to edit them</para>
+ </listitem>
+ <listitem>
+ <para>Refresh: forces the consumer to retrieve the service description from the remote producer to
refresh
the local information (offered portlets, registration information, etc.)
</para>
- </listitem>
- <listitem>
- <para>Activate/Deactivate: activates/deactivates a consumer, governing whether it will be available to
+ </listitem>
+ <listitem>
+ <para>Activate/Deactivate: activates/deactivates a consumer, governing whether it will be available to
provide portlets and receive portlet invocations
</para>
- </listitem>
- <listitem>
- <para>Register/Deregister: registers/deregisters a consumer based on whether registration is required
+ </listitem>
+ <listitem>
+ <para>Register/Deregister: registers/deregisters a consumer based on whether registration is required
and/or acquired
</para>
- </listitem>
- <listitem>
- <para>Delete: destroys the consumer, after deregistering it if it was registered</para>
- </listitem>
- <listitem>
- <para>Export: exports some or all of the consumer's portlets to be able to later import them in a
+ </listitem>
+ <listitem>
+ <para>Delete: destroys the consumer, after deregistering it if it was registered</para>
+ </listitem>
+ <listitem>
+ <para>Export: exports some or all of the consumer's portlets to be able to later import them in a
different context
</para>
- </listitem>
- <listitem>
- <para>Import: imports some or all of previously exported portlets</para>
- </listitem>
- </itemizedlist>
-
- <note>
- <title>Note</title>
- <para>
+ </listitem>
+ <listitem>
+ <para>Import: imports some or all of previously exported portlets</para>
+ </listitem>
+ </itemizedlist>
+ <note>
+ <title>Note</title>
+ <para>
Import/Export functionality is only available to WSRP 2 consumers of producers that support this optional
functionality. Import functionality is only available if portlets had previously been exported.
</para>
- </note>
- </section>
-
- <section>
- <title>Importing and exporting portlets</title>
- <para>Import and export are new functionalities added in WSRP 2. Exporting a portlet allows a consumer to get
+ </note>
+ </section>
+ <section>
+ <title>Importing and exporting portlets</title>
+ <para>Import and export are new functionalities added in WSRP 2. Exporting a portlet allows a consumer to get
an opaque representation of the portlet which can then be use by the corresponding import operation to
reconstitute it. It is mostly used in migration scenarios during batch operations. Since JBoss Enterprise Portal Platform
does not currently support automated migration of portal data, the functionality that is provided as part of
WSRP 2 is necessarily less complete than it could be with full portal support.
</para>
- <para>The import/export implementation in JBoss Enterprise Portal Platform allows users to export portlets
+ <para>The import/export implementation in JBoss Enterprise Portal Platform allows users to export portlets
from a given consumer.
These portlets can then be used to replace existing content on pages. This is accomplished by assigning
- previously exported portlets to replace the content displayed by windows on the portal's pages. Below is an example to make things clearer.
+ previously exported portlets to replace the content displayed by windows on the portal's pages. Below is an example to make things clearer.
</para>
- <para>Clicking on the "Export" action for a given consumer will display the list of portlets currently made
+ <para>Clicking on the "Export" action for a given consumer will display the list of portlets currently made
available by this specific consumer. An example of such a list is shown below:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/export_portlet_list.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- <para>Once portlets have been selected, they can be exported by clicking on the "Export" button thus making
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/export_portlet_list.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>Once portlets have been selected, they can be exported by clicking on the "Export" button thus making
them available for later import:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/export_done.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- <para>You can re-import the portlets directly by pressing the "Use for import" button or, on the Consumers list
- page, using the "Import" action for a given consumer. This assumes that you used that second option and that
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/export_done.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>You can re-import the portlets directly by pressing the "Use for import" button or, on the Consumers list
+ page, using the "Import" action for a given consumer. This assumes that you used that second option and that
you currently have several available sets of previously exported portlets to import from. After clicking the
action link, you should see a screen similar to the one below:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/export_list.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- <para>As you can see this screen presents the list of available exports with available operations for each:
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/export_list.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>As you can see this screen presents the list of available exports with available operations for each:
</para>
- <itemizedlist>
- <listitem>
- <para>View: displays the export details as previously seen when the export was first performed</para>
- </listitem>
- <listitem>
- <para>Delete: deletes the selected export, asking you for confirmation first</para>
- </listitem>
- <listitem>
- <para>Use for import: selects the export to import portlets from</para>
- </listitem>
- </itemizedlist>
-
- <para>Once you have selected an export to import from, you will see a screen similar to the one below:</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/import_start.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- <para>The screen displays the list of available exported portlets for the previously selected export. You can
+ <itemizedlist>
+ <listitem>
+ <para>View: displays the export details as previously seen when the export was first performed</para>
+ </listitem>
+ <listitem>
+ <para>Delete: deletes the selected export, asking you for confirmation first</para>
+ </listitem>
+ <listitem>
+ <para>Use for import: selects the export to import portlets from</para>
+ </listitem>
+ </itemizedlist>
+ <para>Once you have selected an export to import from, you will see a screen similar to the one below:</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/import_start.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>The screen displays the list of available exported portlets for the previously selected export. You can
select which portlet you want to import by checking the checkbox next to its name. Next, you need to select
the content of which window the imported portlet will replace. This process is done in three steps. This example
assumes that you have the following page called
@@ -1205,12 +1103,12 @@
<literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal>
as shown below:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/import_original_page.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- <para>In this example, you want to replace the content of the
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/import_original_page.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>In this example, you want to replace the content of the
<literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal>
by the content of the
<literal>/ajaxPortlet.JSFAJAXPortlet</literal>
@@ -1221,24 +1119,24 @@
in the list of available pages. The screen will then refresh to display the list of available windows on
that page, similar to the one seen below:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/import_selected_page.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- <para>Note that, at this point, you still need to select the window which content you want to replace before
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/import_selected_page.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>Note that, at this point, you still need to select the window which content you want to replace before
being able to complete the import operation. Select the
<literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal>
- window, at which point the "Import" button will become enabled, indicating that you now have all the
+ window, at which point the "Import" button will become enabled, indicating that you now have all the
necessary data to perform the import. If all goes well, pressing that button should result in a screen
similar to the one below:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/import_success.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- <para>If you now take a look at the
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/import_success.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>If you now take a look at the
<literal>page1</literal>
page, you should now see that the content
<literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal>
@@ -1246,87 +1144,82 @@
<literal>/ajaxPortlet.JSFAJAXPortlet</literal>
imported portlet and the window renamed appropriately:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/import_modified_page.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- </section>
-
- <section>
- <title>Erasing local registration data</title>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/import_modified_page.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </section>
+ <section>
+ <title>Erasing local registration data</title>
+ <para>
There are rare cases where it might be required to erase the local information without being able to
- deregister first. This is the case when a consumer is registered with a producer that has been modified by
+ de-register first. This is the case when a consumer is registered with a producer that has been modified by
its administrator to not require registration anymore. If that ever was to happen (most likely, it will not),
you can erase the local registration information from the consumer so that it can resume interacting with
- the remote producer. To do so, click on "Erase local registration" button next to the registration context
+ the remote producer. To do so, click on "Erase local registration" button next to the registration context
information on the consumer configuration screen:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/erase_registration.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- <warning>
- <title>Warning:</title>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/erase_registration.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <warning>
+ <title>Warning:</title>
+ <para>
This operation is dangerous as it can result in inability to interact with the remote producer if invoked
when not required. A warning screen will be displayed to give you a chance to change your mind:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/erase_registration_warning.png" format="PNG" align="center"
- valign="middle"/>
- </imageobject>
- </mediaobject>
- </warning>
- </section>
- </section>
-
- <section id="producer_config">
- <title>Configuring JBoss Enterprise Portal Platform's WSRP Producer</title>
- <section>
- <title>Overview</title>
- <para>
- The preferred way to configure the behavior of Portal's WSRP Producer is via the WSRP configuration portlet.
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" fileref="images/WSRP/erase_registration_warning.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </warning>
+ </section>
+ </section>
+ <section id="producer_config">
+ <title>Configuring JBoss Enterprise Portal Platform's WSRP Producer</title>
+ <section>
+ <title>Overview</title>
+ <para>
+ The preferred way to configure the behavior of Portal's WSRP Producer is via the WSRP configuration portlet.
Alternatively, it is possible to add an XML file called
<filename>wsrp-producer-config.xml</filename>
in the
- <filename>$JBOSS_PROFILE_HOME/conf/gatein/</filename>
+ <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/conf/gatein/</filename>
directory.
Several aspects can be modified with respects to whether registration is required for consumers to access
- the Producer's services.
+ the Producer's services.
</para>
- <note>
- <title>Note</title>
- <para>An XML Schema defining which elements are available to configure Consumers via XML can be found
+ <note>
+ <title>Note</title>
+ <para>An XML Schema defining which elements are available to configure Consumers via XML can be found
in
- <filename> $JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/wsrp-integration-api-$WSRP_VERSION.jar/xsd/gatein_wsrp_producer_1_0.xsd
- </filename>
+ <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein-wsrp-integration.ear/lib/wsrp-integration-api-&WSRP_VERSION;.jar/xsd/gatein_wsrp_producer_1_0.xsd </filename>
</para>
- </note>
- <important>
- <title>Important</title>
- <para>
+ </note>
+ <important>
+ <title>Important</title>
+ <para>
It is important to note that once the XML configuration file for the producer has been read upon
the WSRP service first start, the associated information is put under control of JCR (Java Content
Repository). Subsequent launches of the WSRP service will use the JCR-stored information and ignore
the content of the XML configuration file.
</para>
- </important>
- <note>
- <title>Note</title>
- <para>
+ </important>
+ <note>
+ <title>Note</title>
+ <para>
The default configuration file for the producer can be found at
- <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/extension-component-$WSRP_VERSION.jar/conf/wsrp-producer-config.xml</filename>
+ <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein-wsrp-integration.ear/lib/extension-component-&WSRP_VERSION;.jar/conf/wsrp-producer-config.xml</filename>
</para>
- </note>
-
- </section>
- <section>
- <title>Default configuration</title>
- <para>
+ </note>
+ </section>
+ <section>
+ <title>Default configuration</title>
+ <para>
The default producer configuration is to require that consumers register with it before providing access its
services but does not require any specific registration properties (apart from what is mandated by the
WSRP standard). It does, however, require consumers to be registered before sending them a full service
@@ -1336,119 +1229,108 @@
paired with the default
<classname>RegistrationPropertyValidator</classname>. Property
validators will be discussed in greater detail later in <xref linkend="registration-configuration"/>. Suffice to say for now
- that this allows users to customize how Portal's WSRP Producer decides whether a given registration property
+ that this allows users to customize how Portal's WSRP Producer decides whether a given registration property
is valid or not.
</para>
- <para>
- JBoss Enterprise Portal Platform provides a web interface to configure the producer's behavior. You can access it
- by clicking on the "Producer Configuration" tab of the "WSRP" page of the "admin" portal. The image below is what you
+ <para>
+ JBoss Enterprise Portal Platform provides a web interface to configure the producer's behavior. You can access it
+ by clicking on the "Producer Configuration" tab of the "WSRP" page of the "admin" portal. The image below is what you
should see with the default configuration:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/producer_default.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- <para>As would be expected, you can specify whether or not the producer will send the full service description to
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/producer_default.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>As would be expected, you can specify whether or not the producer will send the full service description to
unregistered consumers, and, if it requires registration, which
<classname>RegistrationPolicy</classname>
to use (and, if needed, which
<classname>RegistrationPropertyValidator</classname>), along with required
registration property description for which consumers must provide acceptable values to successfully
register.</para>
-
- <para>New in JBoss Enterprise Portal Platform, the WSDL URLs to access the Portal's WSRP producer are now displayed either in WSRP 1
+ <para>New in JBoss Enterprise Portal Platform, the WSDL URLs to access the Portal's WSRP producer are now displayed either in WSRP 1
or WSRP 2 mode.
</para>
- </section>
-
- <section id="registration-configuration">
- <title>Registration configuration</title>
- <para>
- In order to require consumers to register with Portal's producer before interacting with it, you need to
- configure Portal's behavior with respect to registration. Registration is optional, as are registration
+ </section>
+ <section id="registration-configuration">
+ <title>Registration configuration</title>
+ <para>
+ In order to require consumers to register with Portal's producer before interacting with it, you need to
+ configure Portal's behavior with respect to registration. Registration is optional, as are registration
properties. The producer can require registration without requiring consumers to pass any registration
properties as is the case in the default configuration. To configure the producer starting with a blank
state:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/producer_blank.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/producer_blank.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>
You will allow unregistered consumers to see the list of offered portlets so you leave the first checkbox
- ("Access to full service description requires consumers to be registered.") unchecked. You will, however,
+ ("Access to full service description requires consumers to be registered.") unchecked. You will, however,
specify that consumers will need to be registered to be able to interact with the producer. Check the second
- checkbox ("Requires registration. Modifying this information will trigger invalidation of consumer
- registrations."). The screen should now refresh and display:
+ checkbox ("Requires registration. Modifying this information will trigger invalidation of consumer
+ registrations."). The screen should now refresh and display:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/producer_registration.png" format="PNG" align="center"
- valign="middle" scalefit="1"/>
- </imageobject>
- </mediaobject>
- <para>You can specify the fully-qualified name for your
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/producer_registration.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>You can specify the fully-qualified name for your
<classname>RegistrationPolicy</classname>
and
<classname>RegistrationPropertyValidator</classname>
there. Keep the default value. See
<xref linkend="custom_registration"/>
for more details. Add, however, a registration property called
- <literal>email</literal>. Click "Add property" and enter the appropriate information in the fields,
+ <literal>email</literal>. Click "Add property" and enter the appropriate information in the fields,
providing a description for the registration property that can be used by consumers to figure out its
purpose:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/producer_email.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- <para>Press "Save" to record your modifications.
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" valign="middle" scalefit="1" fileref="images/WSRP/producer_email.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>Press "Save" to record your modifications.
</para>
-
- <note>
- <title>Note</title>
- <para>At this time, only String (xsd:string) properties are supported. If your application requires more
+ <note>
+ <title>Note</title>
+ <para>At this time, only String (xsd:string) properties are supported. If your application requires more
complex properties, please supply feedback.
</para>
- </note>
-
- <note>
- <title>Note</title>
- <para>If consumers are already registered with the producer, modifying the configuration of required
+ </note>
+ <note>
+ <title>Note</title>
+ <para>If consumers are already registered with the producer, modifying the configuration of required
registration
information will trigger the invalidation of held registrations, requiring consumers to modify their
registration before being able to access the producer again. You saw the consumer side of that process
in
<xref linkend="reg_mod_error"/>.
</para>
-
- </note>
-
-
- <section id="custom_registration">
- <title>Customization of Registration handling behavior</title>
- <para>
+ </note>
+ <section id="custom_registration">
+ <title>Customization of Registration handling behavior</title>
+ <para>
Registration handling behavior can be customized by users to suit their Producer needs. This is
accomplished by providing an implementation of the
<classname>RegistrationPolicy</classname>
- interface. This interface defines methods that are called by Portal's Registration service so that
+ interface. This interface defines methods that are called by Portal's Registration service so that
decisions can be made appropriately. A default registration policy that provides basic
behavior is provided and should be enough for most user needs.
</para>
- <para>
+ <para>
While the default registration policy provides default behavior for most registration-related aspects,
there is still one aspect that requires configuration: whether a given value for a registration property
is acceptable by the WSRP Producer. This is accomplished by plugging a
<classname>RegistrationPropertyValidator</classname>
in the default registration policy. This allows users to define their own validation mechanism.
</para>
- <para>
+ <para>
Please refer to the
<trademark class="trade">Javadoc</trademark>
for
@@ -1458,15 +1340,15 @@
for more
details on what is expected of each method.
</para>
- <para>Defining a registration policy is required for the producer to be correctly configured. This is
+ <para>Defining a registration policy is required for the producer to be correctly configured. This is
accomplished by specifying the qualified class name of the registration policy. Since it is anticipated that
most users will use the default registration policy, it is possible to provide the class
name of your custom property validator instead to customize the default registration policy behavior.
Note that property validators are only used by the default policy.
<note>
- <title>Note</title>
- <para>Since the policy or the validator are defined via their class name and dynamically loaded, it is
+ <title>Note</title>
+ <para>Since the policy or the validator are defined via their class name and dynamically loaded, it is
important that you make sure that the identified class is available to the application server. One
way
to accomplish that is to deploy your policy implementation as JAR file in your AS instance deploy
@@ -1474,25 +1356,24 @@
must
provide a default, no-argument constructor.
</para>
- </note>
+ </note>
</para>
- </section>
</section>
- <section id="strict-mode">
- <title>WSRP validation mode</title>
- <para>The lack of conformance kit and the wording of the WSRP specification leaves room for differing
+ </section>
+ <section id="strict-mode">
+ <title>WSRP validation mode</title>
+ <para>The lack of conformance kit and the wording of the WSRP specification leaves room for differing
interpretations, resulting in interoperability issues. It is therefore possible to encounter issues when
using consumers from different vendors. A way to relax
the validation that the WSRP producer performs on the data provided by consumers has been introduced to help with
interoperability by accepting data that would normally be invalid. Note that this validation
algorithm is only relaxed on aspects of the specification that are deemed harmless such as invalid language codes.
</para>
- <para>
+ <para>
By default, the WSRP producer is configured in strict mode. If you experience issues with a given consumer,
- you might want to try to relax the validation mode. This is accomplished by unchecking the "Use strict WSRP
- compliance." checkbox on the Producer configuration screen.
+ you might want to try to relax the validation mode. This is accomplished by unchecking the "Use strict WSRP
+ compliance." checkbox on the Producer configuration screen.
</para>
- </section>
-
- </section>
+ </section>
+ </section>
</chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/backup-client.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/backup-client.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/backup-client.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,200 +1,169 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-HTTPBackupAgent_and_Backup_Client">
- <title><literal>HTTPBackupAgent</literal> and Backup Client</title>
- <warning>
- <title>Configuration Persistance</title>
- <para>
- To use this service, you should configure the <literal>org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister</literal> in order to save the changes of the repository configuration.
- </para>
+ <title><literal>HTTPBackupAgent</literal> and Backup Client</title>
+ <warning>
+ <title>Configuration Persistence</title>
+ <para>
+ To use this service, you should configure the <literal>org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister</literal> in order to save the changes of the repository configuration.
+ </para>
+ </warning>
+ <note>
+ <title>URI Context</title>
+ <para>
+ JBoss Enterprise Portal Platform uses context <uri>/portal/rest</uri>, therefore you need to use <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/rest/</uri> instead of <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/rest/</uri>
+ </para>
+ <para>
+ JBoss Enterprise Portal Platform uses form authentication, so first you need to login (<uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/login</uri>) and then perform requests.
+ </para>
+ </note>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Introduction">
+ <title>Introduction</title>
+ <para>
+ The <literal>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</literal> service is REST-based front-end to <literal>rg.exoplatform.services.jcr.ext.backup.BackupManager</literal>.
+ </para>
+ <para>
+ <literal>HTTPBackupAgent</literal> is representation <literal>BackupManager</literal> to create backups, restore and/or fetch status of current or completed backup/restore, etc.
+ </para>
+ <para>
+ The backup client is an <literal>HTTP</literal> client for <literal>HTTPBackupAgent</literal>.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-HTTPBackupAgent_">
+ <title>
+ <literal>HTTPBackupAgent</literal>
+ </title>
+ <para>
+ The <literal>HTTPBackupAgent</literal> is based on REST and uses <literal>POST</literal> and <literal>GET</literal> methods for request.
+ </para>
+ <para>
+ The <literal>HTTPBackupAgent</literal> allows you to:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Start a backup.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Stop a backup.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Restore from a backup.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Delete the workspace.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Get information about backup service (via <application>BackupManager</application>)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Get information about current backup or restore processes as well as information about completed backups
+ </para>
+ </listitem>
+ </itemizedlist>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_-Methods">
+ <title>Methods</title>
+ <variablelist id="vari-Reference_Guide-Methods-Starting_Backup_Service">
+ <title>Starting Backup Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/start/{repo}/{ws}</term>
+ <listitem>
+ <para>
+ Start backup on specific workspace
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL:</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/start/{repo}/{ws}</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats:</term>
+ <listitem>
+ <para>
+ json.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Method:</term>
+ <listitem>
+ <para>
+ Post.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters:</term>
+ <listitem>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>{repo}</term>
+ <listitem>
+ <para>
+ The repository name;
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{ws}</term>
+ <listitem>
+ <para>
+ The workspace name;
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>BackupConfigBean</term>
+ <listitem>
+ <para>
+ The JSON to <literal>BackupConfigBean</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>The BackupConfigBean</term>
+ <listitem>
+ <programlisting language="Java" role="java">header :
+"Content-Type" = "application/json; charset=UTF-8"
- </warning>
- <note>
- <title>URI Context</title>
- <para>
- JBoss Enterprise Portal Platform uses context <uri>/portal/rest</uri>, therefore you need to use <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/rest/</uri> instead of <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/rest/</uri>
- </para>
- <para>
- JBoss Enterprise Portal Platform uses form authentication, so first you need to login (<uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/login</uri>) and then perform requests.
- </para>
-
- </note>
- <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Introduction">
- <title>Introduction</title>
- <para>
- The <literal>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</literal> service is REST-based front-end to <literal>rg.exoplatform.services.jcr.ext.backup.BackupManager</literal>.
- </para>
- <para>
- <literal>HTTPBackupAgent</literal> is representation <literal>BackupManager</literal> to create backups, restore and/or fetch status of current or completed backup/restore, etc.
- </para>
- <para>
- The backup client is an <literal>HTTP</literal> client for <literal>HTTPBackupAgent</literal>.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-HTTPBackupAgent_">
- <title><literal>HTTPBackupAgent</literal> </title>
- <para>
- The <literal>HTTPBackupAgent</literal> is based on REST and uses <literal>POST</literal> and <literal>GET</literal> methods for request.
- </para>
- <para>
- The <literal>HTTPBackupAgent</literal> allows you to:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Start a backup.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Stop a backup.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Restore from a backup.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Delete the workspace.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Get information about backup service (via <application>BackupManager</application>)
- </para>
-
- </listitem>
- <listitem>
- <para>
- Get information about current backup or restore processes as well as information about completed backups
- </para>
-
- </listitem>
-
- </itemizedlist>
- <section id="sect-Reference_Guide-HTTPBackupAgent_-Methods">
- <title>Methods</title>
- <variablelist id="vari-Reference_Guide-Methods-Starting_Backup_Service">
- <title>Starting Backup Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/start/{repo}/{ws}</term>
- <listitem>
- <para>
- Start backup on specific workspace
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL:</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/start/{repo}/{ws}</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats:</term>
- <listitem>
- <para>
- json.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Method:</term>
- <listitem>
- <para>
- Post.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters:</term>
- <listitem>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>{repo}</term>
- <listitem>
- <para>
- The repository name;
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>{ws}</term>
- <listitem>
- <para>
- The workspace name;
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>BackupConfigBean</term>
- <listitem>
- <para>
- The JSON to <literal>BackupConfigBean</literal>.
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>The BackupConfigBean</term>
- <listitem>
-
-<programlisting language="Java" role="java">header :
-"Content-Type" = "application/json; charset=UTF-8"
-
body:
<JSON to BackupConfigBean>
</programlisting>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.BackupConfigBean</literal>:</term>
- <listitem>
-
-<programlisting language="Java" role="java">{"incrementalRepetitionNumber":<Integer>,"incrementalBackupJobConfig":<JSON to BackupJobConfig>,
-"backupType":<Integer>,"fullBackupJobConfig":<JSON to BackupJobConfig>,
-"incrementalJobPeriod":<Long>,"backupDir":"<String>"}
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.BackupConfigBean</literal>:</term>
+ <listitem>
+ <programlisting language="Java" role="java">{"incrementalRepetitionNumber":<Integer>,"incrementalBackupJobConfig":<JSON to BackupJobConfig>,
+"backupType":<Integer>,"fullBackupJobConfig":<JSON to BackupJobConfig>,
+"incrementalJobPeriod":<Long>,"backupDir":"<String>"}
</programlisting>
- <para>
- As explained by the following help output:
- </para>
-
-<programlisting>backupType - the type of backup:
+ <para>
+ As explained by the following help output:
+ </para>
+ <programlisting>backupType - the type of backup:
0 - full backup only;
1 - full and incremental backup.
backupDir - the path to backup folder;
@@ -202,370 +171,296 @@
incrementalRepetitionNumber - the incremental repetition number;
fullBackupJobConfig - the configuration to full backup, JSON to BackupJobConfig;
incrementalJobPeriod - the configuration to incremental backup, JSON to BackupJobConfig.</programlisting>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.BackupJobConfig</literal></term>
- <listitem>
-
-<programlisting>{"parameters":[<JSON to Pair>, ..., <JSON to pair> ],"backupJob":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
-<programlisting>backupJob - the FQN (fully qualified name) to BackupJob class;
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.BackupJobConfig</literal></term>
+ <listitem>
+ <programlisting>{"parameters":[<JSON to Pair>, ..., <JSON to pair> ],"backupJob":"<String>"}</programlisting>
+ <para>
+ Where:
+ </para>
+ <programlisting>backupJob - the FQN (fully qualified name) to BackupJob class;
parameters - the list of JSON of Pair.</programlisting>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.Pair</literal></term>
- <listitem>
-
-<programlisting language="Java">{"name":"<String>","value":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
-<programlisting>name - the name of parameter;
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.Pair</literal></term>
+ <listitem>
+ <programlisting language="Java">{"name":"<String>","value":"<String>"}</programlisting>
+ <para>
+ Where:
+ </para>
+ <programlisting>name - the name of parameter;
value - the value of parameter.</programlisting>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns:</term>
- <listitem>
- <para>
- When successful:
- </para>
-
-<programlisting>status code = 200</programlisting>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 404 - the not found repository '{repo}' or workspace '{ws}'
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns:</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <programlisting>status code = 200</programlisting>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 404 - the not found repository '{repo}' or workspace '{ws}'
status code = 500 - the other unknown errors
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Stopping_Backup_Service">
- <title>Stopping Backup Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/stop/{id}</term>
- <listitem>
- <para>
- Stop backup with identifier {id}.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL:</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/stop/{id}</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- Plain text.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {id} - the identifier of backup
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
-
-<programlisting>status code = 200</programlisting>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 404 - the no active backup with identifier {id}
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Stopping_Backup_Service">
+ <title>Stopping Backup Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/stop/{id}</term>
+ <listitem>
+ <para>
+ Stop backup with identifier {id}.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL:</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/stop/{id}</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ Plain text.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {id} - the identifier of backup
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <programlisting>status code = 200</programlisting>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 404 - the no active backup with identifier {id}
status code = 500 - the other unknown errors
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Backup_Info_Service">
- <title>Backup Info Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/info</term>
- <listitem>
- <para>
- Information about the backup service.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- Return the JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.BackupServiceInfoBean</literal>
- </para>
-
-<programlisting>{"backupLogDir":"<String>","defaultIncrementalJobPeriod":<Long>,"fullBackupType":"<String>","incrementalBackupType":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
-<programlisting>fullBackupType - the FQN (fully qualified name) of BackupJob class for full backup type;
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Backup_Info_Service">
+ <title>Backup Info Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info</term>
+ <listitem>
+ <para>
+ Information about the backup service.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ Return the JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.BackupServiceInfoBean</literal>
+ </para>
+ <programlisting>{"backupLogDir":"<String>","defaultIncrementalJobPeriod":<Long>,"fullBackupType":"<String>","incrementalBackupType":"<String>"}</programlisting>
+ <para>
+ Where:
+ </para>
+ <programlisting>fullBackupType - the FQN (fully qualified name) of BackupJob class for full backup type;
incrementalBackupType - the FQN (fully qualified name) of BackupJob class for incremental backup type;
backupLogDir - path to backup folder;
defaultIncrementalJobPeriod - the default incremental job period.</programlisting>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 500 - the unknown error
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Dropping_Workspace_Service">
- <title>Dropping Workspace Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/drop-workspace/{repo}/{ws}/{force-session-close}</term>
- <listitem>
- <para>
- Delete the workspace from repository /{repo}/{ws}. With this service, you can delete any workspaces regardless of whether the workspace is a backup or has been copied to a backup.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/drop-workspace/{repo}/{ws}/{force-sessio...</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- Plain text.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {repo} - the repository name;
- </para>
- <para>
- {ws} - the workspace name
- </para>
- <para>
- {force-session-close} - the boolean value : <emphasis role="bold">true</emphasis> - the open sessions on workspace will be closed; <emphasis role="bold">false</emphasis> - will not close open sessions.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
-
-<programlisting>status code = 200</programlisting>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 500 - the other unknown errors;
- - not found repository '{repo}' or workspace '{ws}'
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Dropping_Workspace_Service">
+ <title>Dropping Workspace Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/drop-workspace/{repo}/{ws}/{force-session-close}</term>
+ <listitem>
+ <para>
+ Delete the workspace from repository /{repo}/{ws}. With this service, you can delete any workspaces regardless of whether the workspace is a backup or has been copied to a backup.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/drop-workspace/{repo}/{ws}/{force-sessio...</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ Plain text.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {repo} - the repository name;
+ </para>
+ <para>
+ {ws} - the workspace name
+ </para>
+ <para>
+ {force-session-close} - the boolean value : <emphasis role="bold">true</emphasis> - the open sessions on workspace will be closed; <emphasis role="bold">false</emphasis> - will not close open sessions.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <programlisting>status code = 200</programlisting>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 500 - the other unknown errors;
+ - not found repository '{repo}' or workspace '{ws}'
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Backup_Info">
- <title>Backup Info</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup</term>
- <listitem>
- <para>
- Information about the current and completed backups.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal>:
- </para>
-
-<programlisting>{"backups":[<JSON to ShortInfo>,<JSON to ShortInfo>,...,<JSON to ShortInfo>]}</programlisting>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfo</literal>:
- </para>
-
-<programlisting>{"startedTime":"<String>","backupId":"<String>","type":<Integer>,"state":<Integer>,"backupType":<Integer>,
-"workspaceName":"<String>","finishedTime":"<String>","repositoryName":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
-<programlisting>type - the type of ShortInfo :
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Backup_Info">
+ <title>Backup Info</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup</term>
+ <listitem>
+ <para>
+ Information about the current and completed backups.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal>:
+ </para>
+ <programlisting>{"backups":[<JSON to ShortInfo>,<JSON to ShortInfo>,...,<JSON to ShortInfo>]}</programlisting>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfo</literal>:
+ </para>
+ <programlisting>{"startedTime":"<String>","backupId":"<String>","type":<Integer>,"state":<Integer>,"backupType":<Integer>,
+"workspaceName":"<String>","finishedTime":"<String>","repositoryName":"<String>"}</programlisting>
+ <para>
+ Where:
+ </para>
+ <programlisting>type - the type of ShortInfo :
0 - the ShorInfo to completed backup;
-1 - the ShorInfo to current (active) backup.
1 - the ShorInfo to current restore.
@@ -575,10 +470,10 @@
backupId - the identifier of backup;
workspaceName - the name of workspace;
repositoryName - the name of repository.
-startedTime - the date of started backup. The date in format RFC 1123 (for examle "Thu, 16 Apr 2009 14:56:49 EEST").
+startedTime - the date of started backup. The date in format RFC 1123 (for examle "Thu, 16 Apr 2009 14:56:49 EEST").
The ShorInfo to current (active) backup :
- finishedTime - no applicable, always an empty string ("");
+ finishedTime - no applicable, always an empty string ("");
state - the state of full backup :
0 - starting;
1 - waiting;
@@ -596,310 +491,252 @@
2 - successful;
3 - failure;
4 - initialized.</programlisting>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 500 - the unknown error
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Current_Backups_Information">
- <title>Current Backups Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup/current</term>
- <listitem>
- <para>
- Information about the current backups.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup/current</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see the <emphasis>role="bold">/rest/jcr-backup/info/backup</emphasis> item)
- </para>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 500 - the unknown error
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Current_Backups_Information">
+ <title>Current Backups Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup/current</term>
+ <listitem>
+ <para>
+ Information about the current backups.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup/current</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see the <emphasis>role="bold">/rest/jcr-backup/info/backup</emphasis> item)
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Completed_Backups_Information">
- <title>Completed Backups Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup/completed</term>
- <listitem>
- <para>
- Information about the completed backups.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup/completed</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 500 - the unknown error
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Completed_Backups_Information">
+ <title>Completed Backups Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup/completed</term>
+ <listitem>
+ <para>
+ Information about the completed backups.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup/completed</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Workspace_specific_Backup_Information">
- <title>Workspace-specific Backup Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup/{repo}/{ws}</term>
- <listitem>
- <para>
- Information about the current and completed backups for specific workspace.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URI</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup/{repo}/{ws}</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {repo} - the repository name
- </para>
- <para>
- {ws} - the workspace name
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 500 - the unknown error
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Workspace_specific_Backup_Information">
+ <title>Workspace-specific Backup Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup/{repo}/{ws}</term>
+ <listitem>
+ <para>
+ Information about the current and completed backups for specific workspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URI</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup/{repo}/{ws}</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {repo} - the repository name
+ </para>
+ <para>
+ {ws} - the workspace name
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Single_Backup_Information">
- <title>Single Backup Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/backup/{id}</term>
- <listitem>
- <para>
- Detailed information about a current or completed backup with identifier '{id}'.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/backup/{id}</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Method</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {id} - the identifier of backup.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.DetailedInfo</literal>:
- </para>
-
-<programlisting>{"backupConfig":<JSON to BackupConfigBean>,"startedTime":"<String>","backupId":"<String>","type":<Integer>,
-"state":<Integer>,"backupType":<Integer>,"workspaceName":"<String>","finishedTime":"<String>",
-"repositoryName":"<String>"}</programlisting>
- <para>
- Where:
- </para>
-
-<programlisting>type - the type of DetailedInfo :
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Single_Backup_Information">
+ <title>Single Backup Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/backup/{id}</term>
+ <listitem>
+ <para>
+ Detailed information about a current or completed backup with identifier '{id}'.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/backup/{id}</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Method</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {id} - the identifier of backup.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.DetailedInfo</literal>:
+ </para>
+ <programlisting>{"backupConfig":<JSON to BackupConfigBean>,"startedTime":"<String>","backupId":"<String>","type":<Integer>,
+"state":<Integer>,"backupType":<Integer>,"workspaceName":"<String>","finishedTime":"<String>",
+"repositoryName":"<String>"}</programlisting>
+ <para>
+ Where:
+ </para>
+ <programlisting>type - the type of DetailedInfo :
0 - the DetailedInfo to completed backup;
-1 - the DetailedInfo to current (active) backup;
1 - the DetailedInfo to restore.
@@ -912,553 +749,486 @@
backupConfig - the JSON to BackupConfigBean.
The DetailedInfo to current (active) backup :
- startedTime - the date of started backup. The date in format RFC 1123 (for examle "Thu, 16 Apr 2009 14:56:49 EEST");
- finishedTime - no applicable, always an empty string ("");
+ startedTime - the date of started backup. The date in format RFC 1123 (for examle "Thu, 16 Apr 2009 14:56:49 EEST");
+ finishedTime - no applicable, always an empty string ("");
state - the state of full backup :
0 - starting;
1 - waiting;
2 - working;
4 - finished.
The DetailedInfo to completed backup :
- startedTime - the date of started backup. The date in format RFC 1123 (for examle "Thu, 16 Apr 2009 14:56:49 EEST");
+ startedTime - the date of started backup. The date in format RFC 1123 (for examle "Thu, 16 Apr 2009 14:56:49 EEST");
finishedTime - the date of finished backup. The date in format RFC 1123;
state - no applicable, always zero (0).
The DetailedInfo to restore :
- startedTime - the date of started restore. The date in format RFC 1123 (for examle "Thu, 16 Apr 2009 14:56:49 EEST");
+ startedTime - the date of started restore. The date in format RFC 1123 (for examle "Thu, 16 Apr 2009 14:56:49 EEST");
finishedTime - the date of finished restore;
state - the state of restore :
1 - started;
2 - successful;
3 - failure;
4 - initialized.</programlisting>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.BackupConfigBean</literal> (see item <emphasis role="bold">/rest/jcr-backup/start/{repo}/{ws}</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 404 - not found the backup with {id}
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.BackupConfigBean</literal> (see item <emphasis role="bold">/rest/jcr-backup/start/{repo}/{ws}</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 404 - not found the backup with {id}
status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Restores_on_a_Workspace_Information">
- <title>Restores on a Workspace Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/restore/{repo}/{ws}</term>
- <listitem>
- <para>
- The information about the last restore on a specific workspace <literal>/{repo}/{ws}</literal>.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/restore/{repo}/{ws}</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {repo} - the repository name.
- </para>
- <para>
- {ws} - the workspace name.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.DetailedInfo</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup/{id}</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 404 - the not found the restore for workspace /{repo}/{ws}
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Restores_on_a_Workspace_Information">
+ <title>Restores on a Workspace Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/restore/{repo}/{ws}</term>
+ <listitem>
+ <para>
+ The information about the last restore on a specific workspace <literal>/{repo}/{ws}</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/restore/{repo}/{ws}</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {repo} - the repository name.
+ </para>
+ <para>
+ {ws} - the workspace name.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.DetailedInfo</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup/{id}</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 404 - the not found the restore for workspace /{repo}/{ws}
status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Restores_Information">
- <title>Restores Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/restores</term>
- <listitem>
- <para>
- The information about the last restores.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/restores</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
- </para>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 500 - the unknown error
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Restores_Information">
+ <title>Restores Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/restores</term>
+ <listitem>
+ <para>
+ The information about the last restores.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/restores</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean of <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList</literal> (see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>).
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Restoring_Service">
+ <title>Restoring Service</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/restore/{repo}/{id}</term>
+ <listitem>
+ <para>
+ Restore the workspace from specific backup.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/restore/{repo}/{id}</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>POST</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ {repo} - the repository name;
+ </para>
+ <para>
+ {id} - the identifier to backup; * WorkspaceEntry - the JSON to WorkspaceEntry.
+ </para>
+ <para>
+ The RestoreBean:
+ </para>
+ <programlisting>header :
+"Content-Type" = "application/json; charset=UTF-8"
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Restoring_Service">
- <title>Restoring Service</title>
- <varlistentry>
- <term>/rest/jcr-backup/restore/{repo}/{id}</term>
- <listitem>
- <para>
- Restore the workspace from specific backup.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/restore/{repo}/{id}</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- <literal>POST</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- {repo} - the repository name;
- </para>
- <para>
- {id} - the identifier to backup; * WorkspaceEntry - the JSON to WorkspaceEntry.
- </para>
- <para>
- The RestoreBean:
- </para>
-
-<programlisting>header :
-"Content-Type" = "application/json; charset=UTF-8"
-
body:
<JSON to WorkspaceEntry></programlisting>
- <para>
- The example of JSON bean to <literal>org.exoplatform.services.jcr.config.WorkspaceEntry</literal>:
- </para>
-
-<programlisting>{ "accessManager" : null,
- "autoInitPermissions" : null,
- "autoInitializedRootNt" : null,
- "cache" : { "parameters" : [ { "name" : "max-size",
- "value" : "10k"
+ <para>
+ The example of JSON bean to <literal>org.exoplatform.services.jcr.config.WorkspaceEntry</literal>:
+ </para>
+ <programlisting>{ "accessManager" : null,
+ "autoInitPermissions" : null,
+ "autoInitializedRootNt" : null,
+ "cache" : { "parameters" : [ { "name" : "max-size",
+ "value" : "10k"
},
- { "name" : "live-time",
- "value" : "1h"
+ { "name" : "live-time",
+ "value" : "1h"
}
],
- "type" : "org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl"
+ "type" : "org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl"
},
- "container" : { "parameters" : [ { "name" : "source-name",
- "value" : "jdbcjcr"
+ "container" : { "parameters" : [ { "name" : "source-name",
+ "value" : "jdbcjcr"
},
- { "name" : "dialect",
- "value" : "hsqldb"
+ { "name" : "dialect",
+ "value" : "hsqldb"
},
- { "name" : "multi-db",
- "value" : "false"
+ { "name" : "multi-db",
+ "value" : "false"
},
- { "name" : "update-storage",
- "value" : "false"
+ { "name" : "update-storage",
+ "value" : "false"
},
- { "name" : "max-buffer-size",
- "value" : "200k"
+ { "name" : "max-buffer-size",
+ "value" : "200k"
},
- { "name" : "swap-directory",
- "value" : "../temp/swap/production"
+ { "name" : "swap-directory",
+ "value" : "../temp/swap/production"
}
],
- "type" : "org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer",
- "valueStorages" : [ { "filters" : [ { "ancestorPath" : null,
- "minValueSize" : 0,
- "propertyName" : null,
- "propertyType" : "Binary"
+ "type" : "org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer",
+ "valueStorages" : [ { "filters" : [ { "ancestorPath" : null,
+ "minValueSize" : 0,
+ "propertyName" : null,
+ "propertyType" : "Binary"
} ],
- "id" : "system",
- "parameters" : [ { "name" : "path",
- "value" : "../temp/values/production"
+ "id" : "system",
+ "parameters" : [ { "name" : "path",
+ "value" : "../temp/values/production"
} ],
- "type" : "org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage"
+ "type" : "org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage"
} ]
},
- "initializer" : { "parameters" : [ { "name" : "root-nodetype",
- "value" : "nt:unstructured"
+ "initializer" : { "parameters" : [ { "name" : "root-nodetype",
+ "value" : "nt:unstructured"
} ],
- "type" : "org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer"
+ "type" : "org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer"
},
- "lockManager" : { "persister" : { "parameters" : [ { "name" : "path",
- "value" : "../temp/lock/system"
+ "lockManager" : { "persister" : { "parameters" : [ { "name" : "path",
+ "value" : "../temp/lock/system"
} ],
- "type" : "org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister"
+ "type" : "org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister"
},
- "timeout" : 15728640
+ "timeout" : 15728640
},
- "name" : "production",
- "queryHandler" : { "analyzer" : { },
- "autoRepair" : true,
- "bufferSize" : 10,
- "cacheSize" : 1000,
- "documentOrder" : true,
- "errorLogSize" : 50,
- "excerptProviderClass" : "org.exoplatform.services.jcr.impl.core.query.lucene.DefaultHTMLExcerpt",
- "excludedNodeIdentifers" : null,
- "extractorBackLogSize" : 100,
- "extractorPoolSize" : 0,
- "extractorTimeout" : 100,
- "indexDir" : "../temp/jcrlucenedb/production",
- "indexingConfigurationClass" : "org.exoplatform.services.jcr.impl.core.query.lucene.IndexingConfigurationImpl",
- "indexingConfigurationPath" : null,
- "maxFieldLength" : 10000,
- "maxMergeDocs" : 2147483647,
- "mergeFactor" : 10,
- "minMergeDocs" : 100,
- "parameters" : [ { "name" : "index-dir",
- "value" : "../temp/jcrlucenedb/production"
+ "name" : "production",
+ "queryHandler" : { "analyzer" : { },
+ "autoRepair" : true,
+ "bufferSize" : 10,
+ "cacheSize" : 1000,
+ "documentOrder" : true,
+ "errorLogSize" : 50,
+ "excerptProviderClass" : "org.exoplatform.services.jcr.impl.core.query.lucene.DefaultHTMLExcerpt",
+ "excludedNodeIdentifers" : null,
+ "extractorBackLogSize" : 100,
+ "extractorPoolSize" : 0,
+ "extractorTimeout" : 100,
+ "indexDir" : "../temp/jcrlucenedb/production",
+ "indexingConfigurationClass" : "org.exoplatform.services.jcr.impl.core.query.lucene.IndexingConfigurationImpl",
+ "indexingConfigurationPath" : null,
+ "maxFieldLength" : 10000,
+ "maxMergeDocs" : 2147483647,
+ "mergeFactor" : 10,
+ "minMergeDocs" : 100,
+ "parameters" : [ { "name" : "index-dir",
+ "value" : "../temp/jcrlucenedb/production"
} ],
- "queryClass" : "org.exoplatform.services.jcr.impl.core.query.QueryImpl",
- "queryHandler" : null,
- "resultFetchSize" : 2147483647,
- "rootNodeIdentifer" : "00exo0jcr0root0uuid0000000000000",
- "spellCheckerClass" : null,
- "supportHighlighting" : false,
- "synonymProviderClass" : null,
- "synonymProviderConfigPath" : null,
- "type" : "org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex",
- "useCompoundFile" : false,
- "volatileIdleTime" : 3
+ "queryClass" : "org.exoplatform.services.jcr.impl.core.query.QueryImpl",
+ "queryHandler" : null,
+ "resultFetchSize" : 2147483647,
+ "rootNodeIdentifer" : "00exo0jcr0root0uuid0000000000000",
+ "spellCheckerClass" : null,
+ "supportHighlighting" : false,
+ "synonymProviderClass" : null,
+ "synonymProviderConfigPath" : null,
+ "type" : "org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex",
+ "useCompoundFile" : false,
+ "volatileIdleTime" : 3
},
- "uniqueName" : "repository_production"
+ "uniqueName" : "repository_production"
}</programlisting>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
-
-<programlisting>status code = 200</programlisting>
- <para>
- Return the JSON bean <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfo</literal> of just started restore. For JSON description see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>.
- </para>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 403 - the already was restore to workspace /{repo}/{ws}
-status code = 404 - the not found repository '{repo}' or unsupported encoding to workspaceConfig
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <programlisting>status code = 200</programlisting>
+ <para>
+ Return the JSON bean <literal>org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfo</literal> of just started restore. For JSON description see item <emphasis role="bold">/rest/jcr-backup/info/backup</emphasis>.
+ </para>
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 403 - the already was restore to workspace /{repo}/{ws}
+status code = 404 - the not found repository '{repo}' or unsupported encoding to workspaceConfig
status code = 500 - the other unknown errors
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <variablelist id="vari-Reference_Guide-Methods-Default_Workspace_Information">
- <title>Default Workspace Information</title>
- <varlistentry>
- <term>/rest/jcr-backup/info/default-ws-config</term>
- <listitem>
- <para>
- Will be returned the JSON bean to WorkspaceEntry for default workspace.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>URL</term>
- <listitem>
- <para>
- <uri>http://host:port/rest/jcr-backup/info/default-ws-config</uri>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Formats</term>
- <listitem>
- <para>
- json
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Methods</term>
- <listitem>
- <para>
- <literal>GET</literal>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Parameters</term>
- <listitem>
- <para>
- None.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Returns</term>
- <listitem>
- <para>
- When successful:
- </para>
- <para>
- The JSON bean to <literal>org.exoplatform.services.jcr.config.WorkspaceEntry</literal>:
- </para>
-
-<programlisting>{ "accessManager" : null,
- "autoInitPermissions" : null,
- "autoInitializedRootNt" : null,
- "cache" : { "parameters" : [ { "name" : "max-size",
- "value" : "10k"
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist id="vari-Reference_Guide-Methods-Default_Workspace_Information">
+ <title>Default Workspace Information</title>
+ <varlistentry>
+ <term>/rest/jcr-backup/info/default-ws-config</term>
+ <listitem>
+ <para>
+ Will be returned the JSON bean to WorkspaceEntry for default workspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>URL</term>
+ <listitem>
+ <para>
+ <uri>http://host:port/rest/jcr-backup/info/default-ws-config</uri>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formats</term>
+ <listitem>
+ <para>
+ json
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Methods</term>
+ <listitem>
+ <para>
+ <literal>GET</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Parameters</term>
+ <listitem>
+ <para>
+ None.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Returns</term>
+ <listitem>
+ <para>
+ When successful:
+ </para>
+ <para>
+ The JSON bean to <literal>org.exoplatform.services.jcr.config.WorkspaceEntry</literal>:
+ </para>
+ <programlisting>{ "accessManager" : null,
+ "autoInitPermissions" : null,
+ "autoInitializedRootNt" : null,
+ "cache" : { "parameters" : [ { "name" : "max-size",
+ "value" : "10k"
},
- { "name" : "live-time",
- "value" : "1h"
+ { "name" : "live-time",
+ "value" : "1h"
}
],
- "type" : "org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl"
+ "type" : "org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl"
},
- "container" : { "parameters" : [ { "name" : "source-name",
- "value" : "jdbcjcr"
+ "container" : { "parameters" : [ { "name" : "source-name",
+ "value" : "jdbcjcr"
},
- { "name" : "dialect",
- "value" : "hsqldb"
+ { "name" : "dialect",
+ "value" : "hsqldb"
},
- { "name" : "multi-db",
- "value" : "false"
+ { "name" : "multi-db",
+ "value" : "false"
},
- { "name" : "update-storage",
- "value" : "false"
+ { "name" : "update-storage",
+ "value" : "false"
},
- { "name" : "max-buffer-size",
- "value" : "200k"
+ { "name" : "max-buffer-size",
+ "value" : "200k"
},
- { "name" : "swap-directory",
- "value" : "../temp/swap/production"
+ { "name" : "swap-directory",
+ "value" : "../temp/swap/production"
}
],
- "type" : "org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer",
- "valueStorages" : [ { "filters" : [ { "ancestorPath" : null,
- "minValueSize" : 0,
- "propertyName" : null,
- "propertyType" : "Binary"
+ "type" : "org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer",
+ "valueStorages" : [ { "filters" : [ { "ancestorPath" : null,
+ "minValueSize" : 0,
+ "propertyName" : null,
+ "propertyType" : "Binary"
} ],
- "id" : "system",
- "parameters" : [ { "name" : "path",
- "value" : "../temp/values/production"
+ "id" : "system",
+ "parameters" : [ { "name" : "path",
+ "value" : "../temp/values/production"
} ],
- "type" : "org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage"
+ "type" : "org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage"
} ]
},
- "initializer" : { "parameters" : [ { "name" : "root-nodetype",
- "value" : "nt:unstructured"
+ "initializer" : { "parameters" : [ { "name" : "root-nodetype",
+ "value" : "nt:unstructured"
} ],
- "type" : "org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer"
+ "type" : "org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer"
},
- "lockManager" : { "persister" : { "parameters" : [ { "name" : "path",
- "value" : "../temp/lock/system"
+ "lockManager" : { "persister" : { "parameters" : [ { "name" : "path",
+ "value" : "../temp/lock/system"
} ],
- "type" : "org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister"
+ "type" : "org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister"
},
- "timeout" : 15728640
+ "timeout" : 15728640
},
- "name" : "production",
- "queryHandler" : { "analyzer" : { },
- "autoRepair" : true,
- "bufferSize" : 10,
- "cacheSize" : 1000,
- "documentOrder" : true,
- "errorLogSize" : 50,
- "excerptProviderClass" : "org.exoplatform.services.jcr.impl.core.query.lucene.DefaultHTMLExcerpt",
- "excludedNodeIdentifers" : null,
- "extractorBackLogSize" : 100,
- "extractorPoolSize" : 0,
- "extractorTimeout" : 100,
- "indexDir" : "../temp/jcrlucenedb/production",
- "indexingConfigurationClass" : "org.exoplatform.services.jcr.impl.core.query.lucene.IndexingConfigurationImpl",
- "indexingConfigurationPath" : null,
- "maxFieldLength" : 10000,
- "maxMergeDocs" : 2147483647,
- "mergeFactor" : 10,
- "minMergeDocs" : 100,
- "parameters" : [ { "name" : "index-dir",
- "value" : "../temp/jcrlucenedb/production"
+ "name" : "production",
+ "queryHandler" : { "analyzer" : { },
+ "autoRepair" : true,
+ "bufferSize" : 10,
+ "cacheSize" : 1000,
+ "documentOrder" : true,
+ "errorLogSize" : 50,
+ "excerptProviderClass" : "org.exoplatform.services.jcr.impl.core.query.lucene.DefaultHTMLExcerpt",
+ "excludedNodeIdentifers" : null,
+ "extractorBackLogSize" : 100,
+ "extractorPoolSize" : 0,
+ "extractorTimeout" : 100,
+ "indexDir" : "../temp/jcrlucenedb/production",
+ "indexingConfigurationClass" : "org.exoplatform.services.jcr.impl.core.query.lucene.IndexingConfigurationImpl",
+ "indexingConfigurationPath" : null,
+ "maxFieldLength" : 10000,
+ "maxMergeDocs" : 2147483647,
+ "mergeFactor" : 10,
+ "minMergeDocs" : 100,
+ "parameters" : [ { "name" : "index-dir",
+ "value" : "../temp/jcrlucenedb/production"
} ],
- "queryClass" : "org.exoplatform.services.jcr.impl.core.query.QueryImpl",
- "queryHandler" : null,
- "resultFetchSize" : 2147483647,
- "rootNodeIdentifer" : "00exo0jcr0root0uuid0000000000000",
- "spellCheckerClass" : null,
- "supportHighlighting" : false,
- "synonymProviderClass" : null,
- "synonymProviderConfigPath" : null,
- "type" : "org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex",
- "useCompoundFile" : false,
- "volatileIdleTime" : 3
+ "queryClass" : "org.exoplatform.services.jcr.impl.core.query.QueryImpl",
+ "queryHandler" : null,
+ "resultFetchSize" : 2147483647,
+ "rootNodeIdentifer" : "00exo0jcr0root0uuid0000000000000",
+ "spellCheckerClass" : null,
+ "supportHighlighting" : false,
+ "synonymProviderClass" : null,
+ "synonymProviderConfigPath" : null,
+ "type" : "org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex",
+ "useCompoundFile" : false,
+ "volatileIdleTime" : 3
},
- "uniqueName" : "repository_production"
+ "uniqueName" : "repository_production"
}</programlisting>
- <para>
- When unsuccessful:
- </para>
-
-<programlisting>status code = 500 - the unknown error
+ <para>
+ When unsuccessful:
+ </para>
+ <programlisting>status code = 500 - the unknown error
failure message in response - the description of failure</programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-HTTPBackupAgent_-HTTPBackupAgent_Configuration">
- <title>HTTPBackupAgent Configuration</title>
- <para>
- Add the components <literal>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</literal> and <literal>org.exoplatform.services.jcr.ext.backup.BackupManager</literal> to services configuration:
- </para>
-
-<programlisting language="XML"><component>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_-HTTPBackupAgent_Configuration">
+ <title>HTTPBackupAgent Configuration</title>
+ <para>
+ Add the components <literal>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</literal> and <literal>org.exoplatform.services.jcr.ext.backup.BackupManager</literal> to services configuration:
+ </para>
+ <programlisting language="XML"><component>
<type>org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent</type>
</component>
@@ -1472,15 +1242,14 @@
<init-params>
<properties-param>
<name>backup-properties</name>
- <property name="backup-dir" value="../temp/backup" />
+ <property name="backup-dir" value="../temp/backup" />
</properties-param>
</init-params>
</component></programlisting>
- <para>
- In case, if you will restore backup in same workspace (so you will drop previous workspace), you need configure <literal>RepositoryServiceConfiguration</literal> in order to save the changes of the repository configuration. For example:
- </para>
-
-<programlisting language="XML"><component>
+ <para>
+ In case, if you will restore backup in same workspace (so you will drop previous workspace), you need configure <literal>RepositoryServiceConfiguration</literal> in order to save the changes of the repository configuration. For example:
+ </para>
+ <programlisting language="XML"><component>
<key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
<type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
<init-params>
@@ -1492,51 +1261,45 @@
<properties-param>
<name>working-conf</name>
<description>working-conf</description>
- <property name="source-name" value="jdbcjcr" />
- <property name="dialect" value="hsqldb" />
- <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister" />
+ <property name="source-name" value="jdbcjcr" />
+ <property name="dialect" value="hsqldb" />
+ <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister" />
</properties-param>
</init-params>
</component></programlisting>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Backup_Client">
- <title>Backup Client</title>
- <note>
- <para>
- For JBoss Enterprise Portal Platform you should use context "<emphasis>/portal/rest</emphasis>". JBoss Enterprise Portal Platform uses form authentication, so first you need to login (url to form authentication is <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/<replaceable>portal</replaceable>/login</uri>) and then perform requests.
- </para>
- <para>
- The backup client supports form authentication. For example, the following would call the <emphasis>info</emphasis> command with form authentication to JBoss Enterprise Portal Platform :
- </para>
- <para>
- <command>./jcrbackup.sh http://127.0.0.1:8080/portal/rest form POST "/portal/login?initialURI=/portal/private&username=root&password=gtn" info</command>
- </para>
-
- </note>
- <para>
- The backup client is a console application.
- </para>
- <para>
- The backup client is an <literal>HTTP</literal> client for <literal>HTTPBackupAgent</literal>.
- </para>
- <para>
- Command signature:
- </para>
-
-<screen>Help info:
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Backup_Client">
+ <title>Backup Client</title>
+ <note>
+ <para>
+ For JBoss Enterprise Portal Platform you should use context "<emphasis>/portal/rest</emphasis>". JBoss Enterprise Portal Platform uses form authentication, so first you need to login (URL to form authentication is <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/<replaceable>portal</replaceable>/login</uri>) and then perform requests.
+ </para>
+ <para>
+ The backup client supports form authentication. For example, the following would call the <emphasis>info</emphasis> command with form authentication to JBoss Enterprise Portal Platform :
+ </para>
+ <para>
+ <command>./jcrbackup.sh http://127.0.0.1:8080/portal/rest form POST "/portal/login?initialURI=/portal/private&username=root&password=gtn" info</command>
+ </para>
+ </note>
+ <para>
+ The backup client is a console application.
+ </para>
+ <para>
+ The backup client is an <literal>HTTP</literal> client for <literal>HTTPBackupAgent</literal>.
+ </para>
+ <para>
+ Command signature:
+ </para>
+ <screen>Help info:
<url_basic_authentication>|<url form authentication> <cmd>
<url_basic_authentication> : http(s)//login:password@host:port/<context>
- <url form authentication> : http(s)//host:port/<context> "<form auth parm>"
+ <url form authentication> : http(s)//host:port/<context> "<form auth parm>"
<form auth parm> : form <method> <form path>
<method> : POST or GET
<form path> : /path/path?<paramName1>=<paramValue1>&<paramName2>=<paramValue2>...
- Example to <url form authentication> : http://127.0.0.1:8080/portal/rest form POST "/portal/login?initialURI=/portal/private&username=root&password=gtn"
+ Example to <url form authentication> : http://127.0.0.1:8080/portal/rest form POST "/portal/login?initialURI=/portal/private&username=root&password=gtn"
<cmd> : start <repo[/ws]> <backup_dir> [<incr>]
stop <backup_id>
@@ -1550,7 +1313,7 @@
start - start backup of repository or workspace
stop - stop backup
- status - information about the current or completed backup by 'backup_id'
+ status - information about the current or completed backup by 'backup_id'
restores - information about the last restore on specific repository or workspace
restore - restore the repository or workspace from specific backup
list - information about the current backups (in progress)
@@ -1559,11 +1322,11 @@
drop - delete the repository or workspace
help - print help information about backup console
- <repo[/ws]> - /<reponsitory-name>[/<workspace-name>] the repository or workspace
+ <repo[/ws]> - /<repository-name>[/<workspace-name>] the repository or workspace
<backup_dir> - path to folder for backup on remote server
<backup_id> - the identifier for backup
<backup_set_dir> - path to folder with backup set on remote server
- <incr> - incemental job period
+ <incr> - incremental job period
<pathToConfigFile> - path (local) to repository or workspace configuration
remove-exists - remove fully (db, value storage, index) exists repository/workspace
force-close-session - close opened sessions on repository or workspace.
@@ -1581,109 +1344,90 @@
10. restore <repo> <backup_set_path> <pathToConfigFile>
11. restore <backup_id>
12. restore <backup_set_path></screen>
-
- </section>
-
- <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Building_and_Running_Application">
- <title>Building and Running Application</title>
- <note>
- <title>Document Convention</title>
- <para>
- <filename><replaceable><JCR_SRC_HOME></replaceable></filename> the path where eXo JCR sources are located.
- </para>
-
- </note>
- <procedure>
- <title></title>
- <step>
- <para>
- Navigate to the backup client directory; <filename><replaceable><JCR_SRC_HOME></replaceable>/applications/exo.jcr.applications.backupconsole</filename>.
- </para>
-
- </step>
- <step>
- <para>
- Build the application with:
- </para>
-
-<programlisting><command>mvn clean install -P deploy</command></programlisting>
-
- </step>
- <step>
- <para>
- Navigate to <emphasis role="bold">${JCR-SRC-HOME}/applications/exo.jcr.applications.backupconsole/target/backupconsole-binary</emphasis>.
- </para>
-
- </step>
- <step>
- <para>
- Run the jar with:
- </para>
-
-<programlisting><command>java -jar exo.jcr.applications.backupconsole-binary.jar <command></command></programlisting>
- <para>
- Alternatively, use jcrbackup.cmd (or .sh);
- </para>
-
- </step>
-
- </procedure>
-
- <para>
- Get information about the backup service with:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 info</command></programlisting>
- <para>
- Which will return output similar to:
- </para>
-
-<screen>The backup service information :
+ </section>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Building_and_Running_Application">
+ <title>Building and Running Application</title>
+ <note>
+ <title>Document Convention</title>
+ <para>
+ <filename>
+ <replaceable><JCR_SRC_HOME></replaceable>
+ </filename> the path where eXo JCR sources are located.
+ </para>
+ </note>
+ <procedure>
+ <title/>
+ <step>
+ <para>
+ Navigate to the backup client directory; <filename><replaceable><JCR_SRC_HOME></replaceable>/applications/exo.jcr.applications.backupconsole</filename>.
+ </para>
+ </step>
+ <step>
+ <para>
+ Build the application with:
+ </para>
+ <programlisting><command>mvn clean install -P deploy</command></programlisting>
+ </step>
+ <step>
+ <para>
+ Navigate to <emphasis role="bold">${JCR-SRC-HOME}/applications/exo.jcr.applications.backupconsole/target/backupconsole-binary</emphasis>.
+ </para>
+ </step>
+ <step>
+ <para>
+ Run the jar with:
+ </para>
+ <programlisting><command>java -jar exo.jcr.applications.backupconsole-binary.jar <command></command></programlisting>
+ <para>
+ Alternatively, use jcrbackup.cmd (or .sh);
+ </para>
+ </step>
+ </procedure>
+ <para>
+ Get information about the backup service with:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 info</command></programlisting>
+ <para>
+ Which will return output similar to:
+ </para>
+ <screen>The backup service information :
full backup type : org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob
- incremetal backup type : org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob
+ incremental backup type : org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob
backup log folder : /path/to/backup/directory
default incremental job period : 3600
</screen>
-
- </section>
-
- <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Starting_Backups">
- <title>Starting Backups</title>
- <para>
- To start a full backup only on the workspace called "backup", pass the parameter <parameter><bakcup_dir></parameter> (<parameter>../temp/backup</parameter>) to the command:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository/backup ../temp/backup</command></programlisting>
- <para>
- Which will return output similar to:
- </para>
-
-<screen>Successful :
+ </section>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Starting_Backups">
+ <title>Starting Backups</title>
+ <para>
+ To start a full backup only on the workspace called "backup", pass the parameter <parameter><backup_dir></parameter> (<parameter>../temp/backup</parameter>) to the command:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository/backup ../temp/backup</command></programlisting>
+ <para>
+ Which will return output similar to:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To start a full and incremental backup on the workspace called "production" add the increment integer to the command:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository/production ../temp/backup 10000</command></programlisting>
- <para>
- Which will return output similar to:
- </para>
-
-<screen>
+ <para>
+ To start a full and incremental backup on the workspace called "production" add the increment integer to the command:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository/production ../temp/backup 10000</command></programlisting>
+ <para>
+ Which will return output similar to:
+ </para>
+ <screen>
Successful :
- tatus code = 200
+ status code = 200
</screen>
- <para>
- To get information about the current backups in progress, run the command:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 list</command></programlisting>
- <para>
- The output will look similar to:
- </para>
-
-<screen>The current backups information :
+ <para>
+ To get information about the current backups in progress, run the command:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 list</command></programlisting>
+ <para>
+ The output will look similar to:
+ </para>
+ <screen>The current backups information :
1) Backup with id b46370107f000101014b03ea5fbe8d54 :
repository name : repository
workspace name : production
@@ -1698,16 +1442,14 @@
full backup state : finished
started time : Fri, 17 Apr 2009 17:02:41 EEST
</screen>
- <para>
- To get information about individual backups, pass the id to the application:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 status b46370107f000101014b03ea5fbe8d54</command></programlisting>
- <para>
- Which will print the following details:
- </para>
-
-<screen>The current backup information :
+ <para>
+ To get information about individual backups, pass the id to the application:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 status b46370107f000101014b03ea5fbe8d54</command></programlisting>
+ <para>
+ Which will print the following details:
+ </para>
+ <screen>The current backup information :
backup id : b46370107f000101014b03ea5fbe8d54
backup folder : /home/rainf0x/java/exo-working/JCR-839/new_JCR/exo-tomcat/bin/../temp/backup
repository name : repository
@@ -1717,16 +1459,14 @@
incremental backup state : working
started time : Fri, 17 Apr 2009 17:03:16 EEST
</screen>
- <para>
- To get information about the completed (ready to restore) backups, use the following command:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 list completed</command></programlisting>
- <para>
- Which will return:
- </para>
-
-<screen>The completed (ready to restore) backups information :
+ <para>
+ To get information about the completed (ready to restore) backups, use the following command:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 list completed</command></programlisting>
+ <para>
+ Which will return:
+ </para>
+ <screen>The completed (ready to restore) backups information :
1) Backup with id adf6fadc7f00010100053b2cba43513c :
repository name : repository
workspace name : backup
@@ -1745,87 +1485,77 @@
backup type : full only
started time : Thu, 16 Apr 2009 14:51:08 EEST
</screen>
-
- </section>
-
- <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Stopping_Backups">
- <title>Stopping Backups</title>
- <para>
- Stop an individual backup with the following command:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 stop <backup_id></command></programlisting>
- <para>
- You will see the following output:
- </para>
-
-<screen>Successful :
+ </section>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Stopping_Backups">
+ <title>Stopping Backups</title>
+ <para>
+ Stop an individual backup with the following command:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 stop <backup_id></command></programlisting>
+ <para>
+ You will see the following output:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
-
- </section>
-
- <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Restoring">
- <title>Restoring</title>
- <important>
- <title>Linebreaks</title>
- <para>
- The linebreaks in the commands below are for rendering purposes only. Run the commands as a single line unless otherwise instructed.
- </para>
-
- </important>
- <para>
- Restore to the workspace called "backup3", you need the <replaceable><backup_id></replaceable> of a completed backup and the path to the file with the workspace configuration:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup3 <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- An example configuration file is included for reference:
- </para>
-
-<programlisting language="XML" role="XML"><repository-service default-repository="repository">
+ </section>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Restoring">
+ <title>Restoring</title>
+ <important>
+ <para>
+ The line breaks in the commands below are for rendering purposes only. Run the commands as a single line unless otherwise instructed.
+ </para>
+ </important>
+ <para>
+ Restore to the workspace called "backup3", you need the <replaceable><backup_id></replaceable> of a completed backup and the path to the file with the workspace configuration:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup3 <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
+ <para>
+ An example configuration file is included for reference:
+ </para>
+ <programlisting language="XML" role="XML"><repository-service default-repository="repository">
<repositories>
- <repository name="repository" system-workspace="production" default-workspace="production">
+ <repository name="repository" system-workspace="production" default-workspace="production">
<security-domain>exo-domain</security-domain>
<access-control>optional</access-control>
<authentication-policy>org.exoplatform.services.jcr.impl.core.access.JAASAuthenticator</authentication-policy>
<workspaces>
- <workspace name="backup">
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <workspace name="backup">
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
- <property name="source-name" value="jdbcjcr" />
- <property name="dialect" value="pgsql" />
- <property name="multi-db" value="false" />
- <property name="update-storage" value="false" />
- <property name="max-buffer-size" value="200k" />
- <property name="swap-directory" value="../temp/swap/backup" />
+ <property name="source-name" value="jdbcjcr" />
+ <property name="dialect" value="pgsql" />
+ <property name="multi-db" value="false" />
+ <property name="update-storage" value="false" />
+ <property name="max-buffer-size" value="200k" />
+ <property name="swap-directory" value="../temp/swap/backup" />
</properties>
<value-storages>
- <value-storage id="draft" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
+ <value-storage id="draft" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
<properties>
- <property name="path" value="../temp/values/backup" />
+ <property name="path" value="../temp/values/backup" />
</properties>
<filters>
- <filter property-type="Binary"/>
+ <filter property-type="Binary"/>
</filters>
</value-storage>
</value-storages>
</container>
- <initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
+ <initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
<properties>
- <property name="root-nodetype" value="nt:unstructured" />
+ <property name="root-nodetype" value="nt:unstructured" />
</properties>
</initializer>
- <cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl">
+ <cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl">
<properties>
- <property name="max-size" value="10k" />
- <property name="live-time" value="1h" />
+ <property name="max-size" value="10k" />
+ <property name="live-time" value="1h" />
</properties>
</cache>
- <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
- <property name="index-dir" value="../temp/jcrlucenedb/backup" />
+ <property name="index-dir" value="../temp/jcrlucenedb/backup" />
</properties>
</query-handler>
</workspace>
@@ -1834,23 +1564,20 @@
</repositories>
</repository-service>
</programlisting>
- <para>
- A successful restoration will return the following:
- </para>
-
-<screen>Successful :
+ <para>
+ A successful restoration will return the following:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To get information about the current restore for <filename>/repository/backup3</filename> workspace:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restores</command></programlisting>
- <para>
- Which will print the following details:
- </para>
-
-<screen>The current restores information :
+ <para>
+ To get information about the current restore for <filename>/repository/backup3</filename> workspace:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restores</command></programlisting>
+ <para>
+ Which will print the following details:
+ </para>
+ <screen>The current restores information :
1) Restore with id 6c302adc7f00010100df88d29535c6ee:
full backup date : 2009-04-03T16:34:37.394+03:00
backup log file : /home/rainf0x/java/exo-working/JCR-839/exo-tomcat/bin/../temp/backup/backup-6c302adc7f00010100df88d29535c6ee.xml
@@ -1860,183 +1587,151 @@
path to backup folder : /home/rainf0x/java/exo-working/JCR-839/exo-tomcat/bin/../temp/backup
restore state : successful
</screen>
- <para>
- To restore to the workspace "backup" and completely remove an existing workspace from the database, value storage and index, you need the <replaceable><backup_id></replaceable> of a completed backup and path to the file with the workspace configuration:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository/backup <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A successful restoration will return:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to the workspace "backup" and completely remove an existing workspace from the database, value storage and index, you need the <replaceable><backup_id></replaceable> of a completed backup and path to the file with the workspace configuration:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository/backup <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
+ <para>
+ A successful restoration will return:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore to the "backup" workspace from a backup set, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server side) of completed backups and the path to the configuration file for the workspace:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup /tmp/123/repository_backup-20101220_114156 /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A successful restoration will return:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to the "backup" workspace from a backup set, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server side) of completed backups and the path to the configuration file for the workspace:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup /tmp/123/repository_backup-20101220_114156 /path/to/exo-jcr-config_backup.xml</command></programlisting>
+ <para>
+ A successful restoration will return:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore to the workspace "backup" and completely remove an existing workspace, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server side) of completed backups and the path to the configuration file for the workspace:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository/backup /repository/backup /tmp/123/repository_backup-20101220_114156 /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A successful restoration will return:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to the workspace "backup" and completely remove an existing workspace, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server side) of completed backups and the path to the configuration file for the workspace:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository/backup /repository/backup /tmp/123/repository_backup-20101220_114156 /path/to/exo-jcr-config_backup.xml</command></programlisting>
+ <para>
+ A successful restoration will return:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore to the "backup" workspace with an original configuration (which was stored in backup set), you need the <replaceable><backup_id></replaceable> of the appropriate completed backup:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore <backup_id></command></programlisting>
- <para>
- A successful restoration will return:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to the "backup" workspace with an original configuration (which was stored in backup set), you need the <replaceable><backup_id></replaceable> of the appropriate completed backup:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore <backup_id></command></programlisting>
+ <para>
+ A successful restoration will return:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore to the workspace "backup" with an original configuration and completely remove the existing workspace, execute the above command and include the <parameter>remove-exists</parameter> switch:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists <backup_id></command></programlisting>
- <para>
- A successful restoration will output:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to the workspace "backup" with an original configuration and completely remove the existing workspace, execute the above command and include the <parameter>remove-exists</parameter> switch:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists <backup_id></command></programlisting>
+ <para>
+ A successful restoration will output:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore a repository you will need the <replaceable><backup_id></replaceable> of a completed backup and path to the configuration file of the repository:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository <backup_id> /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
- <para>
- A successful restoration will print:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore a repository you will need the <replaceable><backup_id></replaceable> of a completed backup and path to the configuration file of the repository:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository <backup_id> /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
+ <para>
+ A successful restoration will print:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore a repository and completely remove an existing repository, add the <parameter>remove-exists</parameter> parameter to the above command:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository <backup_id> /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
- <para>
- Return:
- </para>
-
-<programlisting>Successful :
+ <para>
+ To restore a repository and completely remove an existing repository, add the <parameter>remove-exists</parameter> parameter to the above command:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository <backup_id> /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
+ <para>
+ Return:
+ </para>
+ <programlisting>Successful :
status code = 200</programlisting>
- <para>
- To restore to a repository called "repository" from backup set, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder, on the server side) of a completed backup and the path to the repository configuration file:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository /tmp/123/repository_repository_backup_1292833493681 /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
- <para>
- If successful the above command will return:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to a repository called "repository" from backup set, you need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder, on the server side) of a completed backup and the path to the repository configuration file:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository /tmp/123/repository_repository_backup_1292833493681 /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
+ <para>
+ If successful the above command will return:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore to a repository called "repository" from a backup set and completely remove an existing repository from the database, value storage and index, you will need the <replaceable><backup_set_path></replaceable> of a completed backup and the path to the file with repository's configuration:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository /repository/backup /tmp/123/repository_repository_backup_1292833493681 /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
- <para>
- The application will print the following if successful:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to a repository called "repository" from a backup set and completely remove an existing repository from the database, value storage and index, you will need the <replaceable><backup_set_path></replaceable> of a completed backup and the path to the file with repository's configuration:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /repository /repository/backup /tmp/123/repository_repository_backup_1292833493681 /home/rainf0x/java/exo-working/JCR-839/exo-jcr-config.xml</command></programlisting>
+ <para>
+ The application will print the following if successful:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore to a repository called "repository" with an original configuration of repository (provided the original configuration was stored in a backup set):
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore <backup_id></command></programlisting>
- <para>
- Which, if successful, will return:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to a repository called "repository" with an original configuration of repository (provided the original configuration was stored in a backup set):
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore <backup_id></command></programlisting>
+ <para>
+ Which, if successful, will return:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore to a repository "repository" with original configuration (as above) and completely remove an existing repository:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists <backup_id></command></programlisting>
- <para>
- Which will print the following message if successful:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to a repository "repository" with original configuration (as above) and completely remove an existing repository:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists <backup_id></command></programlisting>
+ <para>
+ Which will print the following message if successful:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To restore to a repository "repository" from a backup set with an original configuration, you will need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server) of completed backup:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /tmp/123/repository_repository_backup_1292833493681</command></programlisting>
- <para>
- The following message will print on success:
- </para>
-
-<screen>Successful :
+ <para>
+ To restore to a repository "repository" from a backup set with an original configuration, you will need the <replaceable><backup_set_path></replaceable> (the path to the backup set folder on the server) of completed backup:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /tmp/123/repository_repository_backup_1292833493681</command></programlisting>
+ <para>
+ The following message will print on success:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
- <para>
- To perform the above (restore a repository with an original configuration from a backup set) and completely remove an existing repository from the underlying database, value storage and index, add the <parameter>remove-exists</parameter> parameter to the command:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /tmp/123/repository_repository_backup_1292833493681</command></programlisting>
- <para>
- The same success message will be printed if there were no errors.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Walkthrough_Creating_a_Backup_and_Restoring_a_Workspace">
- <title>Walkthrough: Creating a Backup and Restoring a Workspace</title>
- <procedure>
- <title></title>
- <step>
- <title>Create the backup:</title>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository/backup ../temp/backup 10000</command></programlisting>
- <para>
- You will see the following message if the task executes successfully:
- </para>
-
-<screen>Successful :
+ <para>
+ To perform the above (restore a repository with an original configuration from a backup set) and completely remove an existing repository from the underlying database, value storage and index, add the <parameter>remove-exists</parameter> parameter to the command:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore remove-exists /tmp/123/repository_repository_backup_1292833493681</command></programlisting>
+ <para>
+ The same success message will be printed if there were no errors.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Walkthrough_Creating_a_Backup_and_Restoring_a_Workspace">
+ <title>Walk-through: Creating a Backup and Restoring a Workspace</title>
+ <procedure>
+ <title/>
+ <step>
+ <title>Create the backup:</title>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository/backup ../temp/backup 10000</command></programlisting>
+ <para>
+ You will see the following message if the task executes successfully:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
-
- </step>
- <step>
- <title>Get information about current backups:</title>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 list</command></programlisting>
-
-<screen>The current backups information :
+ </step>
+ <step>
+ <title>Get information about current backups:</title>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 list</command></programlisting>
+ <screen>The current backups information :
1) Backup with id b469ba957f0001010178febaedf20eb7 :
repository name : repository
workspace name : backup
@@ -2045,76 +1740,61 @@
incremental backup state : working
started time : Fri, 17 Apr 2009 17:10:09 EEST
</screen>
-
- </step>
- <step>
- <title><emphasis role="bold">Optional:</emphasis> Stop a backup</title>
- <para>
- If you need to, you can stop a backup with its <replaceable><backup_id></replaceable>:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 stop <backup_id></command></programlisting>
- <para>
- You will get a success message once the nominated backup has been stopped.
- </para>
-
- </step>
- <step>
- <title>Deleting the workspace and close any opened sessions on it</title>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 drop force-close-session /repository/backup</command></programlisting>
- <para>
- A success message will be printed once all actions are completed.
- </para>
-
- </step>
- <step>
- <title>Restore the workspace</title>
- <substeps>
- <step>
- <para>
- Cleanse the database of references to the old workspace (<emphasis role="bold">"backup"</emphasis>, for example): When we use "single-db", then we will run the SQL queries for clean database:
- </para>
-
-<programlisting>delete from JCR_SREF where NODE_ID in (select ID from JCR_SITEM where CONTAINER_NAME = 'backup')
-delete from JCR_SVALUE where PROPERTY_ID in (select ID from JCR_SITEM where CONTAINER_NAME = 'backup')
-delete from JCR_SITEM where CONTAINER_NAME='backup'</programlisting>
-
- </step>
- <step>
- <para>
- Delete the value storage and the index data for the old workspace.
- </para>
-
- </step>
- <step>
- <para>
- Restore the workspace:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A success message will print if successful:
- </para>
-
-<screen>Successful :
+ </step>
+ <step>
+ <title><emphasis role="bold">Optional:</emphasis> Stop a backup</title>
+ <para>
+ If you need to, you can stop a backup with its <replaceable><backup_id></replaceable>:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 stop <backup_id></command></programlisting>
+ <para>
+ You will get a success message once the nominated backup has been stopped.
+ </para>
+ </step>
+ <step>
+ <title>Deleting the workspace and close any opened sessions on it</title>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 drop force-close-session /repository/backup</command></programlisting>
+ <para>
+ A success message will be printed once all actions are completed.
+ </para>
+ </step>
+ <step>
+ <title>Restore the workspace</title>
+ <substeps>
+ <step>
+ <para>
+ Cleanse the database of references to the old workspace (<emphasis role="bold">"backup"</emphasis>, for example): When we use "single-db", then we will run the SQL queries for clean database:
+ </para>
+ <programlisting>delete from JCR_SREF where NODE_ID in (select ID from JCR_SITEM where CONTAINER_NAME = 'backup')
+delete from JCR_SVALUE where PROPERTY_ID in (select ID from JCR_SITEM where CONTAINER_NAME = 'backup')
+delete from JCR_SITEM where CONTAINER_NAME='backup'</programlisting>
+ </step>
+ <step>
+ <para>
+ Delete the value storage and the index data for the old workspace.
+ </para>
+ </step>
+ <step>
+ <para>
+ Restore the workspace:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
+ <para>
+ A success message will print if successful:
+ </para>
+ <screen>Successful :
status code = 200
</screen>
-
- </step>
-
- </substeps>
-
- </step>
- <step>
- <title>Get information about the workspace restore</title>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restores /repository/backup</command></programlisting>
- <para>
- Which will output the following details:
- </para>
-
-<screen>The current restores information :
+ </step>
+ </substeps>
+ </step>
+ <step>
+ <title>Get information about the workspace restore</title>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restores /repository/backup</command></programlisting>
+ <para>
+ Which will output the following details:
+ </para>
+ <screen>The current restores information :
Restore with id b469ba957f0001010178febaedf20eb7:
backup folder : /home/rainf0x/java/exo-working/JCR-839/new_JCR/exo-tomcat/bin/../temp/backup
repository name : repository
@@ -2124,51 +1804,39 @@
started time : Fri, 17 Apr 2009 16:38:00 EEST
finished time : Fri, 17 Apr 2009 16:38:00 EEST
</screen>
-
- </step>
-
- </procedure>
-
-
- </section>
-
- <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Walkthrough_Creating_a_Backup_and_Restoring_a_Repository">
- <title>Walkthrough: Creating a Backup and Restoring a Repository</title>
- <note>
- <title>Default Repository</title>
- <para>
- If you delete the default repository, it should be restored with the name <emphasis>default</emphasis>.
- </para>
-
- </note>
- <important>
- <title>Required Components</title>
- <para>
- This usecase requires <literal>RestRepositoryService</literal> to be enabled as it is needed to delete a repository:
- </para>
-
-<programlisting language="XML"><component>
+ </step>
+ </procedure>
+ </section>
+ <section id="sect-Reference_Guide-HTTPBackupAgent_and_Backup_Client-Walkthrough_Creating_a_Backup_and_Restoring_a_Repository">
+ <title>Walk-through: Creating a Backup and Restoring a Repository</title>
+ <note>
+ <title>Default Repository</title>
+ <para>
+ If you delete the default repository, it should be restored with the name <emphasis>default</emphasis>.
+ </para>
+ </note>
+ <important>
+ <title>Required Components</title>
+ <para>
+ This use-case requires <literal>RestRepositoryService</literal> to be enabled as it is needed to delete a repository:
+ </para>
+ <programlisting language="XML"><component>
<type>org.exoplatform.services.jcr.ext.repository.RestRepositoryService</type>
</component></programlisting>
-
- </important>
- <procedure id="proc-Reference_Guide-Walkthrough_Creating_a_Backup_and_Restoring_a_Repository-Backup_and_Restore_a_Repository">
- <title>Backup and Restore a Repository</title>
- <step>
- <title>Creating a backup</title>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository ../temp/backup 10000</command></programlisting>
-
- </step>
- <step>
- <title>Get information about current backups</title>
-
-<programlisting>jcrbackup http://root:exo@127.0.0.1:8080 list</programlisting>
- <para>
- This will return the following details:
- </para>
-
-<screen>The current backups information :
+ </important>
+ <procedure id="proc-Reference_Guide-Walkthrough_Creating_a_Backup_and_Restoring_a_Repository-Backup_and_Restore_a_Repository">
+ <title>Backup and Restore a Repository</title>
+ <step>
+ <title>Creating a backup</title>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 start /repository ../temp/backup 10000</command></programlisting>
+ </step>
+ <step>
+ <title>Get information about current backups</title>
+ <programlisting>jcrbackup http://root:exo@127.0.0.1:8080 list</programlisting>
+ <para>
+ This will return the following details:
+ </para>
+ <screen>The current backups information :
1) Repository backup with id 9a4d40fb7f0000012ec8f0a4ec70b3da :
repository name : repository
backup type : full + incremetal
@@ -2176,95 +1844,72 @@
incremental backups state : working
started time : Mon, 11 Oct 2010 10:59:35 EEST
</screen>
-
- </step>
- <step>
- <title><emphasis role="bold">Optional:</emphasis> Stopping the backup</title>
- <para>
- If you should need to, you can stop a backup with the <replaceable><backup_id></replaceable> 9a4d40fb7f0000012ec8f0a4ec70b3da with the following command:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 stop 9a4d40fb7f0000012ec8f0a4ec70b3da</command></programlisting>
- <para>
- You will get a confirmation message once the backup is successfully stopped.
- </para>
-
- </step>
- <step>
- <title>Deleting a repository and close all opened sessions</title>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 drop force-close-session /repository</command></programlisting>
- <para>
- You will get a confirmation message once the backup is successfully stopped.
- </para>
-
- </step>
- <step>
- <title>Restore the repository</title>
- <substeps>
- <step>
- <para>
- Cleanse the database of references to the workspace: When we use "single-db", then we will run the SQL queries for clean database :
- </para>
-
-<programlisting>drop table JCR_SREF;
+ </step>
+ <step>
+ <title><emphasis role="bold">Optional:</emphasis> Stopping the backup</title>
+ <para>
+ If you should need to, you can stop a backup with the <replaceable><backup_id></replaceable> 9a4d40fb7f0000012ec8f0a4ec70b3da with the following command:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 stop 9a4d40fb7f0000012ec8f0a4ec70b3da</command></programlisting>
+ <para>
+ You will get a confirmation message once the backup is successfully stopped.
+ </para>
+ </step>
+ <step>
+ <title>Deleting a repository and close all opened sessions</title>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 drop force-close-session /repository</command></programlisting>
+ <para>
+ You will get a confirmation message once the backup is successfully stopped.
+ </para>
+ </step>
+ <step>
+ <title>Restore the repository</title>
+ <substeps>
+ <step>
+ <para>
+ Cleanse the database of references to the workspace: When we use "single-db", then we will run the SQL queries for clean database :
+ </para>
+ <programlisting>drop table JCR_SREF;
drop table JCR_SVALUE;
drop table JCR_SITEM;</programlisting>
-
- </step>
- <step>
- <para>
- Delete the value storage for repository.
- </para>
-
- </step>
- <step>
- <para>
- Delete the index data for repository.
- </para>
-
- </step>
- <step>
- <para>
- Restore:
- </para>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
- <para>
- A successful operation will return:
- </para>
-
-<screen>Successful :
+ </step>
+ <step>
+ <para>
+ Delete the value storage for repository.
+ </para>
+ </step>
+ <step>
+ <para>
+ Delete the index data for repository.
+ </para>
+ </step>
+ <step>
+ <para>
+ Restore:
+ </para>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository <backup_id> /path/to/exo-jcr-config_backup.xml</command></programlisting>
+ <para>
+ A successful operation will return:
+ </para>
+ <screen>Successful :
status code = 200</screen>
-
- </step>
-
- </substeps>
-
- </step>
- <step>
- <title>Get information about the restored repository</title>
-
-<programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restores /repository</command></programlisting>
- <para>
- Which will return the following details:
- </para>
-
-<screen>Repository restore with id 9a6dba327f000001325dfb228a181b07:
+ </step>
+ </substeps>
+ </step>
+ <step>
+ <title>Get information about the restored repository</title>
+ <programlisting><command>jcrbackup http://root:exo@127.0.0.1:8080 restores /repository</command></programlisting>
+ <para>
+ Which will return the following details:
+ </para>
+ <screen>Repository restore with id 9a6dba327f000001325dfb228a181b07:
backup folder : /home/rainf0x/java/exo-working/JCR-1459/exo-tomcat/bin/../temp/backup/repository_repository_backup_1286786103858
repository name : repository
backup type : full + incremetal
restore state : successful
started time : Mon, 11 Oct 2010 11:51:15 EEST
finished time : Mon, 11 Oct 2010 11:51:17 EEST</screen>
-
- </step>
-
- </procedure>
-
-
- </section>
-
-
+ </step>
+ </procedure>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/exojcr-backup-service.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/exojcr-backup-service.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/exojcr-backup-service.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,337 +1,290 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-eXo_JCR_Backup_Service">
- <title>eXo JCR Backup Service</title>
- <note>
- <para>
+ <title>eXo JCR Backup Service</title>
+ <note>
+ <para>
Restoration of system workspaces is not supported. Workspaces can only be restored as part of a complete repository restoration.
</para>
-
- </note>
- <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Concept">
- <title>Concept</title>
- <para>
+ </note>
+ <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Concept">
+ <title>Concept</title>
+ <para>
The main purpose of this feature is to restore data in case of system faults and repository crashes. Also, the backup results may be used as a content history.
</para>
- <para>
+ <para>
The concept is based on the export of a workspace unit in the <emphasis>Full</emphasis>, or <emphasis>Full + Incremental</emphasis> model. A repository workspace can be backup and restored using a combination of these modes.
</para>
- <para>
+ <para>
In all cases, however, at least one <emphasis>Full</emphasis> (initial) backup must be executed to mark a starting point of the backup history. An <emphasis>Incremental</emphasis> backup is not a complete image of the workspace. It contains only changes for some period. So it is not possible to perform an <emphasis>Incremental</emphasis> backup without an initial <emphasis>Full</emphasis> backup.
</para>
- <para>
+ <para>
The Backup service may operate as a hot-backup process at runtime on an in-use workspace. In this case the <emphasis>Full</emphasis> + <emphasis>Incremental</emphasis> model should be used to ensure data consistency during restoration.
</para>
- <para>
+ <para>
An <emphasis>Incremental</emphasis> backup will be run starting from the start point of the <emphasis>Full</emphasis> backup and will contain changes that have occurred during the <emphasis>Full</emphasis> backup, too.
</para>
- <para>
+ <para>
A <emphasis role="bold">restore</emphasis> operation is a mirror of a backup one. At least one <emphasis>Full</emphasis> backup should be restored to obtain a workspace saved at some time in the past.
</para>
- <para>
+ <para>
However, <emphasis>Incremental</emphasis> backups may be restored in the order of creation to reach a required state of a content. If the <emphasis>Incremental</emphasis> contains the same data as the <emphasis>Full</emphasis> backup (hot-backup), the changes will be applied again as if they were made in a normal way via API calls.
</para>
- <para>
+ <para>
According to the model there are several modes for backup logic:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<emphasis role="bold">Full backup only</emphasis>: Single operation, runs once
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">Full + Incrementas</emphasis>: Start with an initial <emphasis>Full</emphasis> backup and then keep incrementals changes in one file. Run until it is stopped.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">Full + Incremental(periodic)</emphasis>: Start with an initial <emphasis>Full</emphasis> backup and then keep incrementals with periodic result file rotation. Run until it is stopped.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-How_it_works">
- <title>How it works</title>
- <section id="sect-Reference_Guide-How_it_works-Implementation_details">
- <title>Implementation details</title>
- <para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-How_it_works">
+ <title>How it works</title>
+ <section id="sect-Reference_Guide-How_it_works-Implementation_details">
+ <title>Implementation details</title>
+ <para>
<emphasis>Full</emphasis> backup/restore is implemented using the JCR SysView Export/Import. Workspace data will be exported into Sysview XML data from root node.
</para>
- <para>
+ <para>
Restoring is implemented, using the special eXo JCR API feature: a dynamic workspace creation. Restoring of the workspace <emphasis>Full</emphasis> backup will create one new workspace in the repository. Then, the SysView XML data will be imported as the root node.
</para>
- <para>
+ <para>
<emphasis>Incremental</emphasis> backup is implemented using the eXo JCR ChangesLog API. This API allows to record each JCR API call as atomic entries in a changelog. Hence, the <emphasis>Incremental</emphasis> backup uses a listener that collects these logs and stores them in a file.
</para>
- <para>
+ <para>
Restoring an incremental backup consists in applying the collected set of ChangesLogs to a workspace in the correct order.
</para>
- <note>
- <title>Note</title>
- <para>
+ <note>
+ <title>Note</title>
+ <para>
Incremental backup is an experimental feature and not supported. Please use it with caution.
</para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-How_it_works-Work_basics">
- <title>Work basics</title>
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-How_it_works-Work_basics">
+ <title>Work basics</title>
+ <para>
The work of Backup is based on the BackupConfig configuration and the BackupChain logical unit.
</para>
- <para>
+ <para>
BackupConfig describes the backup operation chain that will be performed by the service. When you intend to work with it, the configuration should be prepared before the backup is started.
</para>
- <para>
+ <para>
The configuration contains such values as:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<emphasis role="bold">Types of full and incremental backup</emphasis> (fullBackupType, incrementalBackupType): Strings with full names of classes which will cover the type functional.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">Incremental period</emphasis>: A period after that a current backup will be stopped and a new one will be started in seconds (long).
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">Target repository and workspace names</emphasis>: Strings with described names
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">Destination directory</emphasis> for result files: String with a path to a folder where operation result files will be stored.
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
<literal>BackupChain</literal> is a unit performing the backup process and it covers the principle of initial <emphasis>Full</emphasis> backup execution and manages <emphasis>Incremental</emphasis> operations.
</para>
- <para>
+ <para>
<literal>BackupChain</literal> is used as a key object for accessing current backups during runtime via <literal>BackupManager</literal>. Each <literal>BackupJob</literal> performs a single atomic operation - a <emphasis>Full</emphasis> or <emphasis>Incremental</emphasis> process. The result of that operation is data for a Restore.
</para>
- <para>
+ <para>
<literal>BackupChain</literal> can contain one or more <literal>BackupJobs</literal>. The initial <emphasis>Full</emphasis> job is always there. Each <literal>BackupJobs</literal> has its own unique number which means its Job order in the chain, the initial <emphasis>Full</emphasis> job always has the number <literal>0</literal>.
</para>
- <formalpara id="form-Reference_Guide-Work_basics-Backup_process_result_data_and_file_location">
- <title>Backup process, result data and file location</title>
- <para>
+ <formalpara id="form-Reference_Guide-Work_basics-Backup_process_result_data_and_file_location">
+ <title>Backup process, result data and file location</title>
+ <para>
To start the backup process, it is necessary to create the <literal>BackupConfig</literal> and call the <literal>BackupManager.startBackup(BackupConfig)</literal> method. This method will return <literal>BackupChain</literal> created according to the configuration. At the same time, the chain creates a <literal>BackupChainLog</literal> which persists <literal>BackupConfig</literal> content and <literal>BackupChain</literal> operation states to the file in the service working directory (see Configuration).
</para>
-
- </formalpara>
- <para>
+ </formalpara>
+ <para>
When the chain starts the work and the initial <literal>BackupJob</literal> starts, the job will create a result data file using the destination directory path from <literal>BackupConfig</literal>.
</para>
- <para>
+ <para>
The destination directory will contain a directory with an automatically created name using the pattern <parameter>repository_workspace-timestamp</parameter> where <literal>timestamp</literal> is current time in the format of <literal>yyyyMMdd_hhmmss</literal> (for example; <literal>db1_ws1-20080306_055404</literal>).
</para>
- <para>
+ <para>
The directory will contain the results of all Jobs configured for execution. Each Job stores the backup result in its own file with the name <parameter>repository_workspace-timestamp.jobNumber</parameter>. <literal>BackupChain</literal> saves each state (<literal>STARTING</literal>, <literal>WAITING</literal>, <literal>WORKING</literal>, <literal>FINISHED</literal>) of its Jobs in the <literal>BackupChainLog</literal>, which has a current result full file path.
</para>
- <para>
+ <para>
<literal>BackupChain</literal> log file and job result files are a whole and consistent unit, that is a source for a Restore.
</para>
- <note>
- <para>
- <literal>BackupChain</literal> log contains absolute paths to job result files. Don't move these files to another location.
+ <note>
+ <para>
+ <literal>BackupChain</literal> log contains absolute paths to job result files. do not move these files to another location.
</para>
-
- </note>
- <formalpara id="form-Reference_Guide-Work_basics-Restore_requirements">
- <title>Restore requirements</title>
- <para>
- As outlined earlier, a Restore operation is a mirror of a Backup. The process is a <emphasis>Full</emphasis> restore of a root node with restoring an additional <emphasis>Incremental</emphasis> backup to reach a desired workspace state. Restoring the workspace <emphasis>Full</emphasis> backup will create a new workspace in the repository using given <literal>RepositoryEntry</literal> of existing repository and given (preconfigured) WorkspaceEntry for a new target workspace. A Restore process will restore a root node from the SysView XML data.
+ </note>
+ <formalpara id="form-Reference_Guide-Work_basics-Restore_requirements">
+ <title>Restore requirements</title>
+ <para>
+ As outlined earlier, a Restore operation is a mirror of a Backup. The process is a <emphasis>Full</emphasis> restore of a root node with restoring an additional <emphasis>Incremental</emphasis> backup to reach a desired workspace state. Restoring the workspace <emphasis>Full</emphasis> backup will create a new workspace in the repository using given <literal>RepositoryEntry</literal> of existing repository and given (pre-configured) WorkspaceEntry for a new target workspace. A Restore process will restore a root node from the SysView XML data.
</para>
-
- </formalpara>
- <note>
- <title>Exceptions</title>
- <para>
+ </formalpara>
+ <note>
+ <title>Exceptions</title>
+ <para>
The target workspace should not be in the repository. Otherwise, a <literal>BackupConfigurationException</literal> exception will be thrown.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
In case you already have a target Workspace (with the same name) in a Repository, you have to configure a new name for it. If no target workspace exists in the Repository, you may use the same name as the Backup one.
</para>
-
- </section>
-
-
</section>
-
- <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Configuration">
- <title>Configuration</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Configuration">
+ <title>Configuration</title>
+ <para>
As an optional extension, the Backup service is not enabled by default. <emphasis role="bold">You need to enable it via configuration</emphasis>.
</para>
- <para>
+ <para>
The following is an example configuration:
</para>
- <programlistingco>
- <areaspec>
- <area coords="9" id="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-incremental-backup-type" />
- <area coords="8" id="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-full-backup-type" />
- <area coords="7" id="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-default-incremental-job-period" />
- <area coords="10" id="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-backup-dir" />
-
- </areaspec>
-
-<programlisting language="XML"><component>
+ <programlistingco>
+ <areaspec>
+ <area coords="9" id="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-incremental-backup-type"/>
+ <area coords="8" id="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-full-backup-type"/>
+ <area coords="7" id="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-default-incremental-job-period"/>
+ <area coords="10" id="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-backup-dir"/>
+ </areaspec>
+ <programlisting language="XML"><component>
<key>org.exoplatform.services.jcr.ext.backup.BackupManager</key>
<type>org.exoplatform.services.jcr.ext.backup.impl.BackupManagerImpl</type>
<init-params>
<properties-param>
<name>backup-properties</name>
- <property name="backup-dir" value="target/backup" />
+ <property name="backup-dir" value="target/backup" />
</properties-param>
</init-params>
</component></programlisting>
- <calloutlist id="call-Reference_Guide-Configuration-Mandatory_parameter">
- <title>Mandatory parameter</title>
- <callout arearefs="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-backup-dir">
- <para>
+ <calloutlist id="call-Reference_Guide-Configuration-Mandatory_parameter">
+ <title>Mandatory parameter</title>
+ <callout arearefs="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-backup-dir">
+ <para>
<parameter>backup-dir</parameter> is the path to a working directory where the service will store internal files and chain logs.
</para>
-
- </callout>
-
- </calloutlist>
- <calloutlist id="call-Reference_Guide-Configuration-Optional_parameters">
- <title>Optional parameters</title>
- <callout arearefs="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-incremental-backup-type">
- <para>
+ </callout>
+ </calloutlist>
+ <calloutlist id="call-Reference_Guide-Configuration-Optional_parameters">
+ <title>Optional parameters</title>
+ <callout arearefs="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-incremental-backup-type">
+ <para>
<parameter>incremental-backup-type</parameter> The FQN of incremental job class. Must implement <literal>org.exoplatform.services.jcr.ext.backup.BackupJob</literal>. By default, <literal>org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob</literal> is used.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-full-backup-type">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-full-backup-type">
+ <para>
<parameter>full-backup-type</parameter> is the FQN of the full backup job class. It must implement <literal>org.exoplatform.services.jcr.ext.backup.BackupJob</literal>. By default, <literal>org.exoplatform.services.jcr.ext.backup.impl.rdbms.FullBackupJob</literal> is used. Please, notice that file-system based implementation <literal>org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob</literal> is deprecated and not recommended for use..
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-default-incremental-job-period">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-eXo_JCR_Backup_Service-Configuration-default-incremental-job-period">
+ <para>
<parameter>default-incremental-job-period</parameter> is the period between incremental flushes (in seconds). Default is <literal>3600</literal> seconds.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
- </section>
-
- <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-RDBMS_backup">
- <title>RDBMS backup</title>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </section>
+ <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-RDBMS_backup">
+ <title>RDBMS backup</title>
+ <para>
RDBMS backup It is the latest, currently supported used by default and recommended implementation of full backup job for BackupManager service. It is useful in case when database is used to store data.
</para>
- <para>
+ <para>
Brings such advantages:
</para>
- <para>
+ <para>
<itemizedlist>
- <listitem>
- <para>
+ <listitem>
+ <para>
fast: backup takes only several minutes to perform full backup of repository with 1 million rows in tables;
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
atomic restore: restore process into existing workspace/repository with same configuration is atomic, it means you don’t loose the data when restore failed, the original data remains;
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
cluster aware: it is possible to make backup/restore in cluster environment into existing workspace/repository with same configuration;
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
consistence backup: all threads make waiting until backup is finished and then continue to work, so, there are no data modification during backup process;
</para>
+ </listitem>
+ </itemizedlist>
- </listitem>
-
- </itemizedlist>
-
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Usage">
- <title>Usage</title>
- <section id="sect-Reference_Guide-Usage-Performing_a_Backup">
- <title>Performing a Backup</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Usage">
+ <title>Usage</title>
+ <section id="sect-Reference_Guide-Usage-Performing_a_Backup">
+ <title>Performing a Backup</title>
+ <para>
In the following example, we create a <literal>BackupConfig</literal> bean for the <emphasis>Full</emphasis> + <emphasis>Incremental</emphasis>s mode, then we ask the BackupManager to start the backup process.
</para>
-
-<programlisting language="Java">// Obtaining the backup service from the eXo container.
+ <programlisting language="Java">// Obtaining the backup service from the eXo container.
BackupManager backup = (BackupManager) container.getComponentInstanceOfType(BackupManager.class);
// And prepare the BackupConfig instance with custom parameters.
// full backup & incremental
-File backDir = new File("/backup/ws1"); // the destination path for result files
+File backDir = new File("/backup/ws1"); // the destination path for result files
backDir.mkdirs();
BackupConfig config = new BackupConfig();
config.setRepository(repository.getName());
-config.setWorkspace("ws1");
+config.setWorkspace("ws1");
config.setBackupDir(backDir);
// Before 1.9.3, you also need to indicate the backupjobs class FDNs
-// config.setFullBackupType("org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob");
-// config.setIncrementalBackupType("org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob");
+// config.setFullBackupType("org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob");
+// config.setIncrementalBackupType("org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob");
// start backup using the service manager
BackupChain chain = backup.startBackup(config);</programlisting>
- <para>
+ <para>
To stop the backup operation, you must use the <literal>BackupChain</literal> instance.
</para>
-
-<programlisting language="Java">// stop backup
+ <programlisting language="Java">// stop backup
backup.stopBackup(chain);</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Usage-Performing_a_Restore">
- <title>Performing a Restore</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Usage-Performing_a_Restore">
+ <title>Performing a Restore</title>
+ <para>
Restoration involves reloading the backup file into a <literal>BackupChainLog</literal> and applying appropriate workspace initialization. The following snippet shows the typical sequence for restoring a workspace:
</para>
-
-<programlisting language="Java">// find BackupChain using the repository and workspace names (return null if not found)
-BackupChain chain = backup.findBackup("db1", "ws1");
+ <programlisting language="Java">// find BackupChain using the repository and workspace names (return null if not found)
+BackupChain chain = backup.findBackup("db1", "ws1");
// Get the RepositoryEntry and WorkspaceEntry
ManageableRepository repo = repositoryService.getRepository(repository);
@@ -348,375 +301,313 @@
// run restoration
backup.restore(bchLog, repositoryEntry, workspaceEntry);</programlisting>
- <section id="sect-Reference_Guide-Performing_a_Restore-Restoring_Into_An_Existing_Workspace">
- <title>Restoring Into An Existing Workspace</title>
- <note>
- <para>
+ <section id="sect-Reference_Guide-Performing_a_Restore-Restoring_Into_An_Existing_Workspace">
+ <title>Restoring Into An Existing Workspace</title>
+ <note>
+ <para>
These instructions only applies to regular workspace. Special instructions are provided below for System workspace.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
To restore a backup over an existing workspace, you are required to clear its data. Your backup process should follow these steps:
</para>
- <procedure id="proc-Reference_Guide-Restoring_Into_An_Existing_Workspace-Restore_Over_a_Workspace">
- <title>Restore Over a Workspace</title>
- <step>
- <para>
+ <procedure id="proc-Reference_Guide-Restoring_Into_An_Existing_Workspace-Restore_Over_a_Workspace">
+ <title>Restore Over a Workspace</title>
+ <step>
+ <para>
Remove the workspace:
</para>
-
-<programlisting language="Java">ManageableRepository repo = repositoryService.getRepository(repository);
+ <programlisting language="Java">ManageableRepository repo = repositoryService.getRepository(repository);
repo.removeWorkspace(workspace);</programlisting>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Clean the database, value storage and index of references to the workspace.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Perform the Restore. Refer to the snippet above.
</para>
-
- </step>
-
- </procedure>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Performing_a_Restore-System_workspace">
- <title>System workspace</title>
- <note>
- <para>
+ </step>
+ </procedure>
+ </section>
+ <section id="sect-Reference_Guide-Performing_a_Restore-System_workspace">
+ <title>System workspace</title>
+ <note>
+ <para>
The <literal>BackupWorkspaceInitializer</literal> is available in JCR 1.9 and later.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
Restoring the JCR System workspace requires you to shut down the system and use of a special initializer.
</para>
- <para>
+ <para>
Follow these steps (this will also work for normal workspaces):
</para>
- <procedure>
- <title></title>
- <step>
- <para>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Stop the repository (or portal).
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Clean the database, value storage, index.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
In the configuration, set the workspace <literal>BackupWorkspaceInitializer</literal> to refer to your backup.
</para>
- <para>
+ <para>
For example:
</para>
-
-<programlisting language="XML"><workspaces>
- <workspace name="production" ... >
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <programlisting language="XML"><workspaces>
+ <workspace name="production" ... >
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
...
</container>
- <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
+ <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
<properties>
- <property name="restore-path" value="D:\java\exo-working\backup\repository_production-20090527_030434"/>
+ <property name="restore-path" value="D:\java\exo-working\backup\repository_production-20090527_030434"/>
</properties>
</initializer>
...
</workspace>
</programlisting>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Restart the repository (or portal).
</para>
-
- </step>
-
- </procedure>
-
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Usage-Repository_and_Workspace_Initialization_From_Backup">
- <title>Repository and Workspace Initialization From Backup</title>
- <para>
+ </step>
+ </procedure>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Usage-Repository_and_Workspace_Initialization_From_Backup">
+ <title>Repository and Workspace Initialization From Backup</title>
+ <para>
Repository and Workspace initialization from backup can use the <literal>BackupWorkspaceInitializer</literal>.
</para>
- <para>
+ <para>
Will be configured <literal>BackupWorkspaceInitializer</literal> in configuration of workspace to restore the Workspace from backup over initializer.
</para>
- <para>
+ <para>
Will be configured <literal>BackupWorkspaceInitializer</literal> in all configurations workspaces of the Repository to restore the Repository from backup over initializer.
</para>
- <para>
+ <para>
Restoring the repository or workspace requires to shutdown the repository.
</para>
- <para>
+ <para>
Follow these steps:
</para>
- <procedure>
- <title></title>
- <step>
- <para>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Stop the repository. This step can be skipped if the repository or workspace does not exist.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Clean the database, value storage and index. This step can be skipped if repository or workspace is new.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Set the <literal>BackupWorkspaceInitializerIn</literal> in the workspace(s) configuration to refer to your backup.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start repository
</para>
-
- </step>
-
- </procedure>
-
- <para>
- Below is an example of a configuration initializer set to restore the workspace "<emphasis>backup</emphasis>" over <literal>BackupWorkspaceInitializer</literal>:
+ </step>
+ </procedure>
+ <para>
+ Below is an example of a configuration initializer set to restore the workspace "<emphasis>backup</emphasis>" over <literal>BackupWorkspaceInitializer</literal>:
</para>
-
-<programlisting language="XML"><workspaces>
- <workspace name="backup" ... >
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <programlisting language="XML"><workspaces>
+ <workspace name="backup" ... >
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
...
</container>
- <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
+ <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
<properties>
- <property name="restore-path" value="D:\java\exo-working\backup\repository_backup-20110120_044734"/>
+ <property name="restore-path" value="D:\java\exo-working\backup\repository_backup-20110120_044734"/>
</properties>
</initializer>
...
</workspace></programlisting>
- <section id="sect-Reference_Guide-Repository_and_Workspace_Initialization_From_Backup-Restore_the_Workspace_over_BackupWorkspaceInitializer">
- <title>Restore the Workspace over BackupWorkspaceInitializer</title>
- <para>
- Below is an example of configuration initializer to restore the workspace "<emphasis>backup</emphasis>" over <literal>BackupWorkspaceInitializer</literal>:
+ <section id="sect-Reference_Guide-Repository_and_Workspace_Initialization_From_Backup-Restore_the_Workspace_over_BackupWorkspaceInitializer">
+ <title>Restore the Workspace over BackupWorkspaceInitializer</title>
+ <para>
+ Below is an example of configuration initializer to restore the workspace "<emphasis>backup</emphasis>" over <literal>BackupWorkspaceInitializer</literal>:
</para>
- <procedure>
- <title></title>
- <step>
- <para>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Stop the repository. This can be skipped if the repository does not yet exist.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Clean the database, value storage and index. This step can be skipped if the workspace is new.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Set <parameter>BackupWorkspaceInitializer</parameter> in the workspace configuration to refer to your backup.
</para>
-
-<programlisting language="XML"><workspaces>
- <workspace name="backup" ... >
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <programlisting language="XML"><workspaces>
+ <workspace name="backup" ... >
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
...
</container>
- <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
+ <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
<properties>
- <property name="restore-path" value="D:\java\exo-working\backup\repository_backup-20110120_044734"/>
+ <property name="restore-path" value="D:\java\exo-working\backup\repository_backup-20110120_044734"/>
</properties>
</initializer>
...
</workspace></programlisting>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start the repository.
</para>
-
- </step>
-
- </procedure>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Repository_and_Workspace_Initialization_From_Backup-Restore_the_Repository_over_BackupWorkspaceInitializer">
- <title>Restore the Repository over BackupWorkspaceInitializer</title>
- <para>
- Below is an example of configuration initializers to restore the repository "<emphasis>repository</emphasis>" over <literal>BackupWorkspaceInitializer</literal>:
+ </step>
+ </procedure>
+ </section>
+ <section id="sect-Reference_Guide-Repository_and_Workspace_Initialization_From_Backup-Restore_the_Repository_over_BackupWorkspaceInitializer">
+ <title>Restore the Repository over BackupWorkspaceInitializer</title>
+ <para>
+ Below is an example of configuration initializers to restore the repository "<emphasis>repository</emphasis>" over <literal>BackupWorkspaceInitializer</literal>:
</para>
- <procedure>
- <title></title>
- <step>
- <para>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Stop the repository. This can be skipped if the repository does not yet exist.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Clean the database, value storage and index. This step can be skipped if the workspace is new.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Configure workspace initializers in the repository configuration to refer to your backup.
</para>
-
-<programlisting language="XML">...
+ <programlisting language="XML">...
<workspaces>
- <workspace name="system" ... >
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <workspace name="system" ... >
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
...
</container>
- <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
+ <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
<properties>
- <property name="restore-path" value="D:\java\exo-working\backup\repository_system-20110120_052334"/>
+ <property name="restore-path" value="D:\java\exo-working\backup\repository_system-20110120_052334"/>
</properties>
</initializer>
...
</workspace>
- <workspace name="collaboration" ... >
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <workspace name="collaboration" ... >
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
...
</container>
- <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
+ <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
<properties>
- <property name="restore-path" value="D:\java\exo-working\backup\repository_collaboration-20110120_052341"/>
+ <property name="restore-path" value="D:\java\exo-working\backup\repository_collaboration-20110120_052341"/>
</properties>
</initializer>
...
</workspace>
- <workspace name="backup" ... >
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <workspace name="backup" ... >
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
...
</container>
- <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
+ <initializer class="org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer">
<properties>
- <property name="restore-path" value="D:\java\exo-working\backup\repository_backup-20110120_052417"/>
+ <property name="restore-path" value="D:\java\exo-working\backup\repository_backup-20110120_052417"/>
</properties>
</initializer>
...
</workspace>
</workspaces>
</programlisting>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start the repository.
</para>
-
- </step>
-
- </procedure>
-
-
- </section>
-
-
- </section>
-
-
+ </step>
+ </procedure>
+ </section>
</section>
-
- <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Scheduling_experimental">
- <title>Scheduling (experimental)</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Scheduling_experimental">
+ <title>Scheduling (experimental)</title>
+ <para>
The Backup service has an additional feature that can be useful for a production level backup implementation. When you need to organize a backup of a repository, it is necessary to have a tool which will be able to create and manage a cycle of <emphasis>Full</emphasis> and <emphasis>Incremental</emphasis> backups in a periodic manner.
</para>
- <para>
+ <para>
The service has an internal <literal>BackupScheduler</literal> which can run a configurable cycle of <literal>BackupChains</literal> as if they have been executed by a user during some period of time. The <literal>BackupScheduler</literal> is essentially a user-like daemon which asks the <literal>BackupManager</literal> to start or stop backup operations.
</para>
- <para>
+ <para>
For that purpose, <literal>BackupScheduler</literal> has the method: <parameter>BackupScheduler.schedule(backupConfig, startDate, stopDate, chainPeriod, incrementalPeriod)</parameter>
</para>
- <variablelist id="vari-Reference_Guide-Scheduling_experimental-BackupScheduler_Method">
- <title>BackupScheduler Method</title>
- <varlistentry>
- <term>backupConfig</term>
- <listitem>
- <para>
+ <variablelist id="vari-Reference_Guide-Scheduling_experimental-BackupScheduler_Method">
+ <title>BackupScheduler Method</title>
+ <varlistentry>
+ <term>backupConfig</term>
+ <listitem>
+ <para>
A ready configuration which will be given to the <literal>BackupManager.startBackup()</literal> method.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>startDate</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>startDate</term>
+ <listitem>
+ <para>
The date and time of the backup start.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>stopDate</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>stopDate</term>
+ <listitem>
+ <para>
The date and time of the backup stop.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>chainPeriod</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chainPeriod</term>
+ <listitem>
+ <para>
A period after which a current <literal>BackupChain</literal> will be stopped and a new one will be started in seconds.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>incrementalPeriod</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>incrementalPeriod</term>
+ <listitem>
+ <para>
If it is greater than <literal>0</literal>, it will be used to override the same value in <literal>backupConfig</literal>.
</para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
-<programlisting language="Java">// geting the scheduler from the BackupManager
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <programlisting language="Java">// geting the scheduler from the BackupManager
BackupScheduler scheduler = backup.getScheduler();
// schedule backup using a ready configuration (Full + Incrementals) to run from startTime
@@ -724,7 +615,7 @@
// incremental will rotate result files every 3 hours.
scheduler.schedule(config, startTime, stopTime, 3600 * 24, 3600 * 3);
-// it's possible to run the scheduler for an uncertain period of time (i.e. without stop time).
+// it's possible to run the scheduler for an uncertain period of time (i.e. without stop time).
// schedule backup to run from startTime till it will be stopped manually
// also there, the incremental will rotate result files as it configured in BackupConfig
scheduler.schedule(config, startTime, null, 3600 * 24, 0);
@@ -734,34 +625,31 @@
// the scheduler will search in internal tasks list for task with repository and
// workspace name from the configuration and will stop that task.
scheduler.unschedule(config);</programlisting>
- <para>
+ <para>
When the <literal>BackupScheduler</literal> starts the scheduling, it uses the internal an Timer with <literal>startDate</literal> for the first (or just once) execution. If <literal>chainPeriod</literal> is greater than <literal>0</literal>, then the task is repeated with this value used as a period starting from <literal>startDate</literal>.
</para>
- <para>
+ <para>
Otherwise, the task will be executed once at <literal>startDate</literal> time. If the scheduler has <literal>stopDate</literal>, it will stop the task (the chain cycle) after <literal>stopDate</literal>. And the last parameter <literal>incrementalPeriod</literal> will be used instead of the same from <literal>BackupConfig</literal> if its values are greater than <literal>0</literal>.
</para>
- <para>
+ <para>
Starting each task (<literal>BackupScheduler.schedule(...)</literal>), the scheduler creates a task file in the service working directory (see <emphasis role="bold">Configuration</emphasis>, <parameter>backup-dir</parameter>) which describes the task backup configuration and periodic values. These files will be used at the backup service start (JVM start) to reinitialize <literal>BackupScheduler</literal> for continuous task scheduling. Only tasks that do not have a <literal>stopDate</literal> or a <literal>stopDate</literal> not expired will be reinitialized.
</para>
- <para>
- There is one notice about <literal>BackupScheduler</literal> task reinitialization in the current implementation. It comes from the <literal>BackupScheduler</literal> nature and its implemented behavior. As the scheduler is just a virtual user which asks the <literal>BackupManager</literal> to start or stop backup operations, it is not able to reinitialize each existing <literal>BackupChain</literal> before the service (JVM) is stopped. But it's possible to start a new operation with the same configuration via <literal>BackupManager</literal> (that was configured before and stored in a task file).
+ <para>
+ There is one notice about <literal>BackupScheduler</literal> task reinitialization in the current implementation. It comes from the <literal>BackupScheduler</literal> nature and its implemented behavior. As the scheduler is just a virtual user which asks the <literal>BackupManager</literal> to start or stop backup operations, it is not able to reinitialize each existing <literal>BackupChain</literal> before the service (JVM) is stopped. But it's possible to start a new operation with the same configuration via <literal>BackupManager</literal> (that was configured before and stored in a task file).
</para>
- <para>
+ <para>
This is a main detail of the <literal>BackupScheduler</literal> which should be taken into suggestion of a backup operation design now. In case of reinitialization, the task will have new time values for the backup operation cycle as the <literal>chainPeriod</literal> and <literal>incrementalPeriod</literal> will be applied again. That behavior may be changed in the future.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Restore_existing_workspace_or_repository">
- <title>Restore existing workspace or repository</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Restore_existing_workspace_or_repository">
+ <title>Restore existing workspace or repository</title>
+ <para>
The restore of existing workspace or repository is available.
</para>
- <para>
+ <para>
For restore will be used special methods:
</para>
-
-<programlisting language="Java"> /**
+ <programlisting language="Java"> /**
* Restore existing workspace. Previous data will be deleted.
* For getting status of workspace restore can use
* BackupManager.getLastRestore(String repositoryName, String workspaceName) method
@@ -771,7 +659,7 @@
* @param workspaceEntry
* new workspace configuration
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -790,7 +678,7 @@
* @param workspaceEntry
* new workspace configuration
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -808,7 +696,7 @@
* @param repositoryEntry
* new repository configuration
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -826,7 +714,7 @@
* @param repositoryEntry
* new repository configuration
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -834,52 +722,43 @@
*/
void restoreExistingRepository(RepositoryBackupChainLog log, RepositoryEntry repositoryEntry, boolean asynchronous)
throws BackupOperationException, BackupConfigurationException;</programlisting>
- <para>
+ <para>
These methods for restore will:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
Remove existed workspace or repository;
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Clean database;
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Clean index data;
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Clean value storage;
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Restore from backup.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Restore_a_workspace_or_a_repository_using_original_configuration">
- <title>Restore a workspace or a repository using original configuration</title>
- <para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Restore_a_workspace_or_a_repository_using_original_configuration">
+ <title>Restore a workspace or a repository using original configuration</title>
+ <para>
The Backup manager allows you to restore a repository or a workspace using the original configuration stored into the backup log:
</para>
-
-<programlisting language="Java">/**
+ <programlisting language="Java">/**
* Restore existing workspace. Previous data will be deleted.
* For getting status of workspace restore can use
* BackupManager.getLastRestore(String repositoryName, String workspaceName) method
@@ -888,7 +767,7 @@
* @param workspaceBackupIdentifier
* identifier to workspace backup.
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -907,7 +786,7 @@
* @param repositoryBackupIdentifier
* identifier to repository backup.
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -923,7 +802,7 @@
* @param workspaceBackupIdentifier
* identifier to workspace backup.
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -938,7 +817,7 @@
* @param repositoryBackupIdentifier
* identifier to repository backup.
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -956,7 +835,7 @@
* @param workspaceBackupSetDir
* the directory with backup set
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -974,7 +853,7 @@
* @param repositoryBackupSetDir
* the directory with backup set
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -989,7 +868,7 @@
* @param workspaceBackupSetDir
* the directory with backup set
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -1004,7 +883,7 @@
* @param repositoryBackupSetDir
* the directory with backup set
* @param asynchronous
- * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
+ * if 'true' restore will be in asynchronous mode (i.e. in separated thread)
* @throws BackupOperationException
* if backup operation exception occurred
* @throws BackupConfigurationException
@@ -1012,17 +891,11 @@
*/
void restoreRepository(File repositoryBackupSetDir, boolean asynchronous) throws BackupOperationException,
BackupConfigurationException;</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Backup_set_portability">
- <title>Backup set portability</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Backup_set_portability">
+ <title>Backup set portability</title>
+ <para>
The Backup log is stored during the Backup operation into two different locations: <parameter>backup-dir</parameter> directory of <literal>BackupService</literal> to support interactive operations via Backup API (e.g. console) and backup set files for portability (e.g. on another server).
</para>
-
- </section>
-
-
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/use-external-backup-tool.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/use-external-backup-tool.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/use-external-backup-tool.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,82 +1,67 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Use_External_Backup_Tool">
- <title>Use External Backup Tool</title>
- <section id="sect-Reference_Guide-Use_External_Backup_Tool-Repository_Suspending">
- <title>Repository Suspending</title>
- <para>
- To have the repository content consistent with the search index and value storage, the repository should be suspened. This means all working threads are suspended until a resume operation is performed. The index will be flushed.
- </para>
- <para>
- JCR provides ability to suspend repository via JMX.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/repository-suspend-controller.png" width="444" />
- </imageobject>
-
- </mediaobject>
- <para>
- To suspend repository you need to invoke the <literal>suspend()</literal> operation. The returned result will be "<emphasis>suspended</emphasis>" if everything passed successfully.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/repository-suspend-controller-suspended.png" />
- </imageobject>
-
- </mediaobject>
- <para>
- An "<emphasis>undefined</emphasis>" result means not all components were successfully suspended. Check the console to review the stacktraces.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Use_External_Backup_Tool-Backup">
- <title>Backup</title>
- <para>
- You can backup your content manually or by using third part software. You should back up:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Database.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Lucene index.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Value storage (if configured).
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Use_External_Backup_Tool-Repository_Resuming">
- <title>Repository Resuming</title>
- <para>
- Once a backup is done you need to invoke the <literal>resume()</literal> operation to switch the repository back to online. The returned result will be "<emphasis>online</emphasis>".
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/repository-suspend-controller-online.png" />
- </imageobject>
-
- </mediaobject>
-
- </section>
-
-
+ <title>Use External Backup Tool</title>
+ <section id="sect-Reference_Guide-Use_External_Backup_Tool-Repository_Suspending">
+ <title>Repository Suspending</title>
+ <para>
+ To have the repository content consistent with the search index and value storage, the repository should be suspended. This means all working threads are suspended until a resume operation is performed. The index will be flushed.
+ </para>
+ <para>
+ JCR provides ability to suspend repository via JMX.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" fileref="images/eXoJCR/repository-suspend-controller.png"/>
+ </imageobject>
+ </mediaobject>
+ <para>
+ To suspend repository you need to invoke the <literal>suspend()</literal> operation. The returned result will be "<emphasis>suspended</emphasis>" if everything passed successfully.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/repository-suspend-controller-suspended.png"/>
+ </imageobject>
+ </mediaobject>
+ <para>
+ An "<emphasis>undefined</emphasis>" result means not all components were successfully suspended. Check the console to review the stack traces.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Use_External_Backup_Tool-Backup">
+ <title>Backup</title>
+ <para>
+ You can backup your content manually or by using third part software. You should back up:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Database.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Lucene index.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Value storage (if configured).
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Use_External_Backup_Tool-Repository_Resuming">
+ <title>Repository Resuming</title>
+ <para>
+ Once a backup is done you need to invoke the <literal>resume()</literal> operation to switch the repository back to on-line. The returned result will be "<emphasis>on-line</emphasis>".
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/repository-suspend-controller-online.png"/>
+ </imageobject>
+ </mediaobject>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/cluster-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/cluster-config.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/cluster-config.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -4,7 +4,7 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Cluster_Configuration">
- <title>Cluster Configuration</title>
+ <title>Configuring Cluster</title>
<section id="sect-Reference_Guide-Cluster_Configuration-Launching_Cluster">
<title>Launching Cluster</title>
<section id="sect-Reference_Guide-Launching_Cluster-Deploying_eXo_JCR_to_JBoss_Application_Server">
@@ -21,17 +21,17 @@
</step>
<step>
<para>
- Copy the file into <filename>EPP_HOME/server/<replaceable>PROFILE</replaceable>/deploy</filename> directory.
+ Copy the file into <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy</filename> directory.
</para>
</step>
<step>
<para>
- Drop <filename>exo-configuration.xml</filename> into your root <replaceable>EPP_HOME</replaceable> directory.
+ Drop <filename>exo-configuration.xml</filename> into your root <filename><replaceable>EPP_DIST</replaceable>/jboss-as/</filename> directory.
</para>
</step>
<step>
<para>
- Configure JAAS by inserting the XML fragment shown below into <filename>EPP_HOME/server/<replaceable>PROFILE</replaceable>/conf/login-config.xml</filename>
+ Configure JAAS by inserting the XML fragment shown below into <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/conf/login-config.xml</filename>
</para>
<programlisting language="XML" role="XML"><application-policy name="exo-domain">
<authentication>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -54,7 +54,7 @@
JCR services are registered in the Portal container.
</para>
<para>
- Below is an example configuration from the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jcr-configuration.xml</filename> file.
+ Below is an example configuration from the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jcr-configuration.xml</filename> file.
</para>
<programlisting linenumbering="numbered" language="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml" parse="text"/></programlisting>
<section id="sect-Reference_Guide-Portal_configuration-JCR_Configuration">
@@ -63,7 +63,7 @@
The JCR Service can use multiple <emphasis>Repositories</emphasis> and each repository can have multiple <emphasis>Workspaces</emphasis>.
</para>
<para>
- Configure the workspaces by locating the workspace you need to modify in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
+ Configure the workspaces by locating the workspace you need to modify in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
</para>
<para>
The repository configuration supports human-readable values. They are not case-sensitive.
@@ -406,7 +406,7 @@
<title>Value Storage plug-in configuration (for data container):</title>
<note>
<para>
- The value-storage element is optional. If you don't include it, the values will be stored as BLOBs inside the database.
+ The value-storage element is optional. If you do not include it, the values will be stored as BLOBs inside the database.
</para>
</note>
<variablelist>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -4,7 +4,7 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JDBC_Data_Container_Config">
- <title>JDBC Data Container Config</title>
+ <title>Configuring the JDBC Data Container</title>
<section id="sect-Reference_Guide-JDBC_Data_Container_Config-Introduction">
<title>Introduction</title>
<para>
@@ -109,7 +109,7 @@
Each database software supports ANSI SQL standards but also has its own specifics. Therefore each database has its own configuration setting in the eXo JCR as a database dialect parameter. More detailed configuration of the database can be set by editing the metadata SQL-script files.
</para>
<para>
- You can find SQL-scripts in <filename>conf/storage/</filename> directory of the <filename><replaceable>EPP_HOME</replaceable>jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib/exo.jcr.component.core-XXX.XXX.jar</filename> file .
+ You can find SQL-scripts in <filename>conf/storage/</filename> directory of the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib/exo.jcr.component.core-XXX.XXX.jar</filename> file .
</para>
<para>
The following tables show the correspondence between the scripts and databases:
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -37,7 +37,7 @@
<itemizedlist>
<listitem>
<para>
- The configuration file to be modified for these changes is <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
+ The configuration file to be modified for these changes is <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
</para>
</listitem>
<listitem>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/search-configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/search-configuration.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/search-configuration.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -4,7 +4,7 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Search_Configuration">
- <title>Search Configuration</title>
+ <title>Configuring Search</title>
<para>
The search function in JCR can be configured to perform in specific ways. This section will discuss configuring the search function to improve search performance and results.
</para>
@@ -12,7 +12,7 @@
Below is an example of the configuration file that governs search behaviors. Refer to <xref linkend="sect-Reference_Guide-Search_Configuration-Global_Search_Index"/> for how searching operates in JCR and information about customized searches.
</para>
<para>
- The JCR index configuration file is located at <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
+ The JCR index configuration file is located at <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
</para>
<para>
A code example is included below with a list of the configuration parameters shown below that.
@@ -528,7 +528,7 @@
</calloutlist>
</programlistingco>
<para>
- The global search index is configured in the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable><VERSION></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename> configuration file within the "query-handler" tag.
+ The global search index is configured in the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>VERSION</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename> configuration file within the "query-handler" tag.
</para>
<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
</programlisting>
@@ -628,13 +628,13 @@
</programlisting>
<para>
- in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable><VERSION></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename> with the new class:
+ in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename> with the new class:
</para>
<programlisting language="XML" role="XML"><query-handler class="mypackage.indexation.MySearchIndex>
</programlisting>
<para>
- To configure an application to use a new analyzer, add the <parameter>analyzer</parameter> parameter to each query-handler configuration in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable><VERSION></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>:
+ To configure an application to use a new analyzer, add the <parameter>analyzer</parameter> parameter to each query-handler configuration in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>:
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default69.xml" parse="text"/></programlisting>
<para>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -4,7 +4,7 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JBoss_Cache_configuration">
- <title>JBoss Cache configuration</title>
+ <title>Configuring JBoss Cache</title>
<section id="sect-Reference_Guide-JBoss_Cache_configuration-Indexer_lock_manager_and_data_container_configuration">
<title>Indexer, lock manager and data container configuration</title>
<para>
@@ -70,7 +70,7 @@
<section id="sect-Reference_Guide-JBoss_Cache_configuration-Shipped_JBoss_Cache_configuration_templates">
<title>Shipped JBoss Cache configuration templates</title>
<para>
- The eXo JCR implementation is shipped with ready-to-use JBoss Cache configuration templates for JCR's components. They are located in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jbosscache</filename> directory, inside either the <filename>cluster</filename> or <filename>local</filename> directory.
+ The eXo JCR implementation is shipped with ready-to-use JBoss Cache configuration templates for JCR's components. They are located in <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jbosscache</filename> directory, inside either the <filename>cluster</filename> or <filename>local</filename> directory.
</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/en-US/modules/eXoJCR/jcr/other/link-producer.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/link-producer.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/link-producer.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,96 +1,83 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Link_Producer_Service">
- <title>Link Producer Service</title>
- <para>
- The Link Producer Service is a simple service which generates an file that is compatible with the Microsoft link file format. It is an extension of the REST Framework library and is included into the WebDav service. On dispatching a <literal>GET</literal> request the service generates the content of an <filename>.lnk</filename> file, which points to a JCR resource via WebDav.
+ <title>Link Producer Service</title>
+ <para>
+ The Link Producer Service is a simple service which generates an file that is compatible with the Microsoft link file format. It is an extension of the REST Framework library and is included into the WebDAV service. On dispatching a <literal>GET</literal> request the service generates the content of an <filename>.lnk</filename> file, which points to a JCR resource via WebDAV.
</para>
- <para>
+ <para>
Link Producer has a simple configuration which is described below:
</para>
-
-<programlisting language="XML" role="XML"><component>
+ <programlisting language="XML" role="XML"><component>
<key>org.exoplatform.services.webdav.lnkproducer.LnkProducer</key>
<type>org.exoplatform.services.webdav.lnkproducer.LnkProducer</type>
</component></programlisting>
- <para>
- When using JCR the resource can be addressed by WebDav reference (href) like <uri>http://host:port/rest/jcr/repository/workspace/somenode/somefile.extension</uri> , the link servlet must be called for this resource by several hrefs, like <uri>http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...</uri>
+ <para>
+ When using JCR the resource can be addressed by WebDAV reference (href) like <uri>http://host:port/rest/jcr/repository/workspace/<replaceable>somenode</replaceable><replaceable>/somefile</replaceable><replaceable>.extension</replaceable></uri> , the link servlet must be called for this resource by several hrefs, like <uri>http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...<replaceable>somenode</replaceable>/<replaceable>somefile.extension</replaceable></uri>
</para>
- <para>
+ <para>
Please note, that when using the portal mode the REST servlet is available using a reference (href) like <uri>http://localhost:8080/portal/rest/...</uri>
</para>
- <para>
+ <para>
The name of the <filename>.lnk</filename> file can be any. But for the best compatibility it must be the same as the name of the JCR resource.
</para>
- <para>
+ <para>
Here is a step by step sample of a use case of the link producer.
</para>
- <procedure>
- <title></title>
- <step>
- <para>
- Type valid reference to the resource, using the link producer in your browser's adress field:
+ <procedure>
+ <title/>
+ <step>
+ <para>
+ Type valid reference to the resource, using the link producer in your browser's address field:
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer1.JPG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </step>
- <step>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" fileref="images/eXoJCR/other/lnkproducer1.JPG"/>
+ </imageobject>
+ </mediaobject>
+ </step>
+ <step>
+ <para>
Internet Explorer will give a dialog window requesting to Open a file or to Save it. Click on the Open button
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer2.JPG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </step>
- <step>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" fileref="images/eXoJCR/other/lnkproducer2.JPG"/>
+ </imageobject>
+ </mediaobject>
+ </step>
+ <step>
+ <para>
In Windows system an <filename>.lnk</filename> file will be downloaded and opened with the application which is registered to open the files, which are pointed to by the <filename>.lnk</filename> file. In case of a .doc file, Windows opens Microsoft Office Word which will try to open a remote file (test0000.doc). Maybe it will be necessary to enter USERNAME and PASSWORD.
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer3.JPG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </step>
- <step>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" fileref="images/eXoJCR/other/lnkproducer3.JPG"/>
+ </imageobject>
+ </mediaobject>
+ </step>
+ <step>
+ <para>
Edit the file in Microsoft Word.
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer4.JPG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </step>
-
- </procedure>
-
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" fileref="images/eXoJCR/other/lnkproducer4.JPG"/>
+ </imageobject>
+ </mediaobject>
+ </step>
+ </procedure>
+ <para>
The Link Producer is necessary for opening/editing and then saving the remote files in Microsoft Office Word, without any further updates.
</para>
- <para>
+ <para>
Also the Link Producer can be referenced to from an HTML page. If page contains code such as...
</para>
-
-<programlisting language="HTML" role="HTML"><a href="http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...">somefile.extension</a></programlisting>
- <para>
- ...the file "somefile.extension" will open directly.
+ <programlisting language="HTML" role="HTML"><a href="http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/workspace/somenode/somefile.extension">somefile.extension</a></programlisting>
+ <para>
+ ...the file "somefile.extension" will open directly.
</para>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/performance-tuning-guide.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/performance-tuning-guide.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/performance-tuning-guide.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,442 +1,281 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JCR_Performance_Tuning_Guide">
- <title>JCR Performance Tuning Guide</title>
- <section id="sect-Reference_Guide-JCR_Performance_Tuning_Guide-Introduction">
- <title>Introduction</title>
- <para>
- This section will show you various ways of improving JCR performance.
- </para>
- <para>
- It is intended for Administrators and others who want to use the JCR features more efficiently.
- </para>
+ <title>JCR Performance Tuning Guide</title>
+ <section id="sect-Reference_Guide-JCR_Performance_Tuning_Guide-Introduction">
+ <title>Introduction</title>
+ <para>
+ This section will show you various ways of improving JCR performance.
+ </para>
+ <para>
+ It is intended for Administrators and others who want to use the JCR features more efficiently.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-JCR_Performance_Tuning_Guide-JCR_Performance_and_Scalability">
+ <title>JCR Performance and Scalability</title>
+ <section id="sect-Reference_Guide-JCR_Performance_and_Scalability-Cluster_configuration">
+ <title>Cluster configuration</title>
+ <para>
+ The table below contains details about the configuration of the cluster used in benchmark testing:
+ </para>
+ <table id="tabl-Reference_Guide-Cluster_configuration-EC2_network_1Gbit">
+ <title>EC2 network: 1Gbit</title>
+ <tgroup cols="2">
+ <colspec colname="1"/>
+ <colspec colname="2"/>
+ <spanspec namest="1" nameend="2" spanname="hspan"/>
+ <thead>
+ <row>
+ <entry> Servers hardware </entry>
+ <entry> Specification </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> RAM </entry>
+ <entry> 7.5 GB </entry>
+ </row>
+ <row>
+ <entry> Processors </entry>
+ <entry> 4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each) </entry>
+ </row>
+ <row>
+ <entry> Storage </entry>
+ <entry> 850 GB (2×420 GB plus 10 GB root partition) </entry>
+ </row>
+ <row>
+ <entry> Architecture </entry>
+ <entry> 64-bit </entry>
+ </row>
+ <row>
+ <entry> I/O Performance </entry>
+ <entry> High </entry>
+ </row>
+ <row>
+ <entry> API name </entry>
+ <entry>
+ <literal>m1.large</literal>
+ </entry>
+ </row>
+ <row>
+ <entry spanname="hspan">
+ <emphasis role="bold">Note:</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry spanname="hspan"> NFS and statistics (cacti snmp) server were located on one physical server. </entry>
+ </row>
+ <row>
+ <entry spanname="hspan">
+ <emphasis role="bold">JBoss AS configuration:</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry spanname="hspan">
+ <code>JAVA_OPTS: -Dprogram.name=run.sh -server -Xms4g -Xmx4g -XX:MaxPermSize=512m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+UseParallelGC -Djava.net.preferIPv4Stack=true</code>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>
+ <section id="sect-Reference_Guide-JCR_Performance_and_Scalability-JCR_Clustered_Performance">
+ <title>JCR Clustered Performance</title>
+ <para>
+ Benchmark test using WebDAV (Complex read/write load test (benchmark)) with 20K same file. To obtain per-operation results we have used custom output from the test case threads to CSV file.
+ </para>
+ <para>
+ <citetitle>Read operation</citetitle>:
+ <simplelist>
+ <member>Warm-up iterations: 100</member>
+ <member>Run iterations: 2000</member>
+ <member>Background writing threads: 25</member>
+ <member>Reading threads: 225</member>
+ </simplelist>
- </section>
-
- <section id="sect-Reference_Guide-JCR_Performance_Tuning_Guide-JCR_Performance_and_Scalability">
- <title>JCR Performance and Scalability</title>
- <section id="sect-Reference_Guide-JCR_Performance_and_Scalability-Cluster_configuration">
- <title>Cluster configuration</title>
- <para>
- The table below contains details about the configuration of the cluster used in benchmark testing:
- </para>
- <table id="tabl-Reference_Guide-Cluster_configuration-EC2_network_1Gbit">
- <title>EC2 network: 1Gbit</title>
- <tgroup cols="2">
- <colspec colname="1"></colspec>
- <colspec colname="2"></colspec>
- <spanspec nameend="2" namest="1" spanname="hspan"></spanspec> <thead>
- <row>
- <entry>
- Servers hardware
- </entry>
- <entry>
- Specification
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- RAM
- </entry>
- <entry>
- 7.5 GB
- </entry>
-
- </row>
- <row>
- <entry>
- Processors
- </entry>
- <entry>
- 4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each)
- </entry>
-
- </row>
- <row>
- <entry>
- Storage
- </entry>
- <entry>
- 850 GB (2×420 GB plus 10 GB root partition)
- </entry>
-
- </row>
- <row>
- <entry>
- Architecture
- </entry>
- <entry>
- 64-bit
- </entry>
-
- </row>
- <row>
- <entry>
- I/O Performance
- </entry>
- <entry>
- High
- </entry>
-
- </row>
- <row>
- <entry>
- API name
- </entry>
- <entry>
- <literal>m1.large</literal>
- </entry>
-
- </row>
- <row>
- <entry spanname="hspan">
- <emphasis role="bold">Note:</emphasis>
- </entry>
-
- </row>
- <row>
- <entry spanname="hspan">
- NFS and statistics (cacti snmp) server were located on one physical server.
- </entry>
-
- </row>
- <row>
- <entry spanname="hspan">
- <emphasis role="bold">JBoss AS configuration:</emphasis>
- </entry>
-
- </row>
- <row>
- <entry spanname="hspan">
- <code>JAVA_OPTS: -Dprogram.name=run.sh -server -Xms4g -Xmx4g -XX:MaxPermSize=512m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+UseParallelGC -Djava.net.preferIPv4Stack=true</code>
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_Performance_and_Scalability-JCR_Clustered_Performance">
- <title>JCR Clustered Performance</title>
- <para>
- Benchmark test using WebDAV (Complex read/write load test (benchmark)) with 20K same file. To obtain per-operation results we have used custom output from the test case threads to CSV file.
- </para>
- <para>
- <citetitle>Read operation</citetitle>:
- <simplelist>
- <member>Warm-up iterations: 100</member>
- <member>Run iterations: 2000</member>
- <member>Background writing threads: 25</member>
- <member>Reading threads: 225</member>
-
- </simplelist>
-
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/perf_EC2_results.jpg" />
- </imageobject>
-
- </mediaobject>
- <table>
- <title></title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- Nodes count
- </entry>
- <entry>
- tps
- </entry>
- <entry>
- Responses >2s
- </entry>
- <entry>
- Responses >4s
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- 1
- </entry>
- <entry>
- 523
- </entry>
- <entry>
- 6.87%
- </entry>
- <entry>
- 1.27%
- </entry>
-
- </row>
- <row>
- <entry>
- 2
- </entry>
- <entry>
- 1754
- </entry>
- <entry>
- 0.64%
- </entry>
- <entry>
- 0.08%
- </entry>
-
- </row>
- <row>
- <entry>
- 3
- </entry>
- <entry>
- 2388
- </entry>
- <entry>
- 0.49%
- </entry>
- <entry>
- 0.09%
- </entry>
-
- </row>
- <row>
- <entry>
- 4
- </entry>
- <entry>
- 2706
- </entry>
- <entry>
- 0.46%
- </entry>
- <entry>
- 0.1%
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <para>
- <citetitle>Read operation with more threads</citetitle>:
- </para>
- <simplelist>
- <member>Warm-up iterations: 100</member>
- <member>Run iterations: 2000</member>
- <member>Background writing threads: 50</member>
- <member>Reading threads: 450</member>
-
- </simplelist>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/perf_EC2_results_2.jpg" />
- </imageobject>
-
- </mediaobject>
- <table>
- <title></title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- Nodes count
- </entry>
- <entry>
- tps
- </entry>
- <entry>
- Responses >2s
- </entry>
- <entry>
- Responses >4s
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- 1
- </entry>
- <entry>
- 116
- </entry>
- <entry>
- ?
- </entry>
- <entry>
- ?
- </entry>
-
- </row>
- <row>
- <entry>
- 2
- </entry>
- <entry>
- 1558
- </entry>
- <entry>
- 6.1%
- </entry>
- <entry>
- 0.6%
- </entry>
-
- </row>
- <row>
- <entry>
- 3
- </entry>
- <entry>
- 2242
- </entry>
- <entry>
- 3.1%
- </entry>
- <entry>
- 0.38%
- </entry>
-
- </row>
- <row>
- <entry>
- 4
- </entry>
- <entry>
- 2756
- </entry>
- <entry>
- 2.2%
- </entry>
- <entry>
- 0.41%
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_Performance_Tuning_Guide-Performance_Tuning_Guide">
- <title>Performance Tuning Guide</title>
- <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 parallel garbage collector.
- </para>
- <note>
- <title>Note</title>
- <para>
- Beware of setting <parameter>maxThreads</parameter> too big, this can cause <exceptionname>OutOfMemoryError</exceptionname>. We've got it with <code>maxThreads=1250</code> on such machine:
- </para>
- <simplelist>
- <member>7.5 GB memory</member>
- <member>4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each)</member>
- <member>850 GB instance storage (2×420 GB plus 10 GB root partition)</member>
- <member>64-bit platform</member>
- <member>I/O Performance: High</member>
- <member>API name: m1.large</member>
- <member>java -Xmx 4g</member>
-
- </simplelist>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-Performance_Tuning_Guide-JCR_Cache_Tuning">
- <title>JCR Cache Tuning</title>
- <para>
- <citetitle>Cache size</citetitle>
- </para>
- <para>
- JCR-cluster implementation is built using JBoss Cache as distributed, replicated cache. But there is one particularity related to remove action in it. Speed of this operation depends on the actual size of cache. As many nodes are currently in cache as much time is needed to remove one particular node (subtree) from it.
- </para>
- <para>
- <citetitle>Eviction</citetitle>
- </para>
- <para>
- 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>.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Performance_Tuning_Guide-Clustering">
- <title>Clustering</title>
- <para>
- For performance it is better to have loadbalacer, DB server and shared NFS on different computers. If in some reasons you see that one node gets more load than others you can decrease this load using load value in load balancer.
- </para>
- <para>
- <citetitle>JGroups configuration</citetitle>
- </para>
- <para>
- It's recommended to use "multiplexer stack" feature present in JGroups. It is set by default in eXo JCR and offers higher performance in cluster, using less network connections also. If there are two or more clusters in your network, please check that they use different ports and different cluster names.
- </para>
- <para>
- <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. 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.
- </para>
- <para>
- <citetitle>Replication timeout</citetitle>
- </para>
- <para>
- Some operations may take too much time. So if you get <exceptionname>ReplicationTimeoutException</exceptionname> try increasing replication timeout:
- </para>
-
-<programlisting language="XML" role="XML"> <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/perf_EC2_results.jpg"/>
+ </imageobject>
+ </mediaobject>
+ <table>
+ <title/>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry> Nodes count </entry>
+ <entry> tps </entry>
+ <entry> Responses >2s </entry>
+ <entry> Responses >4s </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> 1 </entry>
+ <entry> 523 </entry>
+ <entry> 6.87% </entry>
+ <entry> 1.27% </entry>
+ </row>
+ <row>
+ <entry> 2 </entry>
+ <entry> 1754 </entry>
+ <entry> 0.64% </entry>
+ <entry> 0.08% </entry>
+ </row>
+ <row>
+ <entry> 3 </entry>
+ <entry> 2388 </entry>
+ <entry> 0.49% </entry>
+ <entry> 0.09% </entry>
+ </row>
+ <row>
+ <entry> 4 </entry>
+ <entry> 2706 </entry>
+ <entry> 0.46% </entry>
+ <entry> 0.1% </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ <citetitle>Read operation with more threads</citetitle>:
+ </para>
+ <simplelist>
+ <member>Warm-up iterations: 100</member>
+ <member>Run iterations: 2000</member>
+ <member>Background writing threads: 50</member>
+ <member>Reading threads: 450</member>
+ </simplelist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/perf_EC2_results_2.jpg"/>
+ </imageobject>
+ </mediaobject>
+ <table>
+ <title/>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry> Nodes count </entry>
+ <entry> tps </entry>
+ <entry> Responses >2s </entry>
+ <entry> Responses >4s </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> 1 </entry>
+ <entry> 116 </entry>
+ <entry> ? </entry>
+ <entry> ? </entry>
+ </row>
+ <row>
+ <entry> 2 </entry>
+ <entry> 1558 </entry>
+ <entry> 6.1% </entry>
+ <entry> 0.6% </entry>
+ </row>
+ <row>
+ <entry> 3 </entry>
+ <entry> 2242 </entry>
+ <entry> 3.1% </entry>
+ <entry> 0.38% </entry>
+ </row>
+ <row>
+ <entry> 4 </entry>
+ <entry> 2756 </entry>
+ <entry> 2.2% </entry>
+ <entry> 0.41% </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-JCR_Performance_Tuning_Guide-Performance_Tuning_Guide">
+ <title>Performance Tuning Guide</title>
+ <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 parallel garbage collector.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>
+ Beware of setting <parameter>maxThreads</parameter> too big, this can cause <exceptionname>OutOfMemoryError</exceptionname>. We've got it with <code>maxThreads=1250</code> on such machine:
+ </para>
+ <simplelist>
+ <member>7.5 GB memory</member>
+ <member>4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each)</member>
+ <member>850 GB instance storage (2×420 GB plus 10 GB root partition)</member>
+ <member>64-bit platform</member>
+ <member>I/O Performance: High</member>
+ <member>API name: m1.large</member>
+ <member>java -Xmx 4g</member>
+ </simplelist>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Performance_Tuning_Guide-JCR_Cache_Tuning">
+ <title>JCR Cache Tuning</title>
+ <para>
+ <citetitle>Cache size</citetitle>
+ </para>
+ <para>
+ JCR-cluster implementation is built using JBoss Cache as distributed, replicated cache. But there is one particularity related to remove action in it. Speed of this operation depends on the actual size of cache. As many nodes are currently in cache as much time is needed to remove one particular node (subtree) from it.
+ </para>
+ <para>
+ <citetitle>Eviction</citetitle>
+ </para>
+ <para>
+ 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>.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Performance_Tuning_Guide-Clustering">
+ <title>Clustering</title>
+ <para>
+ For performance it is better to have a load-balancer, DB server and shared NFS on different computers. If in some reasons you see that one node gets more load than others you can decrease this load using load value in load balancer.
+ </para>
+ <para>
+ <citetitle>JGroups configuration</citetitle>
+ </para>
+ <para>
+ It's recommended to use "multiplexer stack" feature present in JGroups. It is set by default in eXo JCR and offers higher performance in cluster, using less network connections also. If there are two or more clusters in your network, please check that they use different ports and different cluster names.
+ </para>
+ <para>
+ <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. 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.
+ </para>
+ <para>
+ <citetitle>Replication timeout</citetitle>
+ </para>
+ <para>
+ Some operations may take too much time. So if you get <exceptionname>ReplicationTimeoutException</exceptionname> try increasing replication timeout:
+ </para>
+ <programlisting language="XML" role="XML"> <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
...
- <sync replTimeout="60000" />
+ <sync replTimeout="60000" />
</clustering>
</programlisting>
- <para>
- value is set in miliseconds.
- </para>
-
- </section>
-
- <!-- <section id="sect-Reference_Guide-Performance_Tuning_Guide-JVM_parameters">
+ <para>
+ value is set in milliseconds.
+ </para>
+ </section>
+<!-- <section id="sect-Reference_Guide-Performance_Tuning_Guide-JVM_parameters">
<title>JVM parameters</title>
<para>
<citetitle>PermGen space size</citetitle>
@@ -445,9 +284,5 @@
If you intend to use Infinispan, you will have to increase the PermGen size to at least 256 Mo due to the latest versions of JGroups that are needed by Infinispan (please note that Infinspan is only dedicated to the community for now, no support will be provided). In case, you intend to use JBoss Cache, you can keep on using JGroups 2.6.13.GA which means that you don't need to increase the PermGen size.
</para>
- </section> -->
- </section>
-
-
+ </section> --> </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,54 +1,52 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-WebDAV">
- <title>WebDAV</title>
- <section id="sect-Reference_Guide-WebDAV-Introduction">
- <title>Introduction</title>
- <para>
+ <title>WebDAV</title>
+ <section id="sect-Reference_Guide-WebDAV-Introduction">
+ <title>Introduction</title>
+ <para>
The <application>WebDAV</application> protocol enables you to use third party tools to communicate with hierarchical content servers via the HTTP protocol. It is possible to add and remove documents or a set of documents from a path on the server.
</para>
- <para>
+ <para>
<application>DeltaV</application> is an extension of the WebDav protocol that allows managing document versioning. The <emphasis>Locking</emphasis> feature guarantees protection against multiple access when writing resources. The ordering support allows changing the position of the resource in the list and sort the directory to make the directory tree viewed conveniently. The full-text search makes it easy to find the necessary documents. You can search by using two languages: SQL and XPATH.
</para>
- <para>
- In the eXo JCR, the WebDAV layer (based on the code taken from the extension modules of the reference implementation) is plugged in on top of our JCR implementation. This makes it possible to browse a workspace using the third party tools regardless of operating system environments. You can use a Java WebDAV client, such as <application>DAVExplorer</application> or <application>Internet Explorer</application> using <menuchoice><guimenu>File</guimenu><guimenuitem>Open as a Web Folder</guimenuitem></menuchoice>.
+ <para>
+ In the eXo JCR, the WebDAV layer (based on the code taken from the extension modules of the reference implementation) is plugged in on top of our JCR implementation. This makes it possible to browse a workspace using the third party tools regardless of operating system environments. You can use a Java WebDAV client, such as <application>DAVExplorer</application> or <application>Internet Explorer</application> using <menuchoice>
+ <guimenu>File</guimenu>
+ <guimenuitem>Open as a Web Folder</guimenuitem>
+ </menuchoice>.
</para>
- <para>
+ <para>
WebDav is an extension of the REST service. To get the WebDav server ready, you must deploy the REST application. Then, you can access any workspaces of your repository by using the following URL:
</para>
- <para>
- <ulink type="http" url="http://host:port/portal/rest/private/jcr/{RepositoryName}/{WorkspaceName}..." />
+ <para>
+ <ulink url="http://host:port/portal/rest/private/jcr/{RepositoryName}/{WorkspaceName}..." type="http"/>
</para>
- <para>
- When accessing the WebDAV server via <ulink type="http" url="http://localhost:8080/rest/jcr/repository/production" />, you can substitute <ulink type="http" url="http://localhost:8080/rest/jcr/repository/production">production</ulink> with <ulink type="http" url="http://localhost:8080/rest/jcr/repository/collaboration">collaboration</ulink>.
+ <para>
+ When accessing the WebDAV server via <ulink url="http://localhost:8080/rest/jcr/repository/production" type="http"/>, you can substitute <ulink url="http://localhost:8080/rest/jcr/repository/production" type="http">production</ulink> with <ulink url="http://localhost:8080/rest/jcr/repository/collaboration" type="http">collaboration</ulink>.
</para>
- <para>
+ <para>
You will be asked to enter your login credentials. These will then be checked by using the organization service that can be implemented thanks to an InMemory (dummy) module or a DB module or an LDAP one and the JCR user session will be created with the correct JCR Credentials.
</para>
- <note>
- <title>Note:</title>
- <para>
- If you try the "in ECM" option, add "@ecm" to the user's password. Alternatively, you may modify jaas.conf by adding the <emphasis role="bold">domain=ecm</emphasis> option as follows:
+ <note>
+ <title>Note:</title>
+ <para>
+ If you try the "in ECM" option, add "@ecm" to the user's password. Alternatively, you may modify jaas.conf by adding the <emphasis role="bold">domain=ecm</emphasis> option as follows:
</para>
-
-<programlisting>exo-domain {
+ <programlisting>exo-domain {
org.exoplatform.services.security.jaas.BasicLoginModule required domain=ecm;
};</programlisting>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-WebDAV-WebDAV_Configuration">
- <title>WebDAV Configuration</title>
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-WebDAV-WebDAV_Configuration">
+ <title>WebDAV Configuration</title>
+ <para>
The WebDAV configuration file:
</para>
-
-<programlisting language="XML" role="XML"><component>
+ <programlisting language="XML" role="XML"><component>
<key>org.exoplatform.services.webdav.WebDavServiceImpl</key>
<type>org.exoplatform.services.webdav.WebDavServiceImpl</type>
<init-params>
@@ -63,7 +61,7 @@
<!-- this is the value of WWW-Authenticate header -->
<value-param>
<name>auth-header</name>
- <value>Basic realm="eXo-Platform Webdav Server 1.6.1"</value>
+ <value>Basic realm="eXo-Platform Webdav Server 1.6.1"</value>
</value-param>
<!-- default node type which is used for the creation of collections -->
@@ -78,7 +76,7 @@
<value>nt:file</value>
</value-param>
- <!-- if MimeTypeResolver can't find the required mime type,
+ <!-- if MimeTypeResolver can't find the required mime type,
which conforms with the file extension, and the mimeType header is absent
in the HTTP request header, this parameter is used
as the default mime type-->
@@ -88,9 +86,9 @@
</value-param>
<!-- This parameter indicates one of the three cases when you update the content of the resource by PUT command.
- In case of "create-version", PUT command creates the new version of the resource if this resource exists.
- In case of "replace" - if the resource exists, PUT command updates the content of the resource and its last modification date.
- In case of "add", the PUT command tries to create the new resource with the same name (if the parent node allows same-name siblings).-->
+ In case of "create-version", PUT command creates the new version of the resource if this resource exists.
+ In case of "replace" - if the resource exists, PUT command updates the content of the resource and its last modification date.
+ In case of "add", the PUT command tries to create the new resource with the same name (if the parent node allows same-name siblings).-->
<value-param>
<name>update-policy</name>
@@ -101,8 +99,8 @@
<!--
This parameter determines how service responds to a method that attempts to modify file content.
- In case of "checkout-checkin" value, when a modification request is applied to a checked-in version-controlled resource, the request is automatically preceded by a checkout and followed by a checkin operation.
- In case of "checkout" value, when a modification request is applied to a checked-in version-controlled resource, the request is automatically preceded by a checkout operation.
+ In case of "checkout-checkin" value, when a modification request is applied to a checked-in version-controlled resource, the request is automatically preceded by a checkout and followed by a checkin operation.
+ In case of "checkout" value, when a modification request is applied to a checked-in version-controlled resource, the request is automatically preceded by a checkout operation.
-->
<value-param>
<name>auto-version</name>
@@ -112,7 +110,7 @@
<!--
This parameter is responsible for managing Cache-Control header value which will be returned to the client.
- You can use patterns like "text/*", "image/*" or wildcard to define the type of content.
+ You can use patterns like "text/*", "image/*" or wildcard to define the type of content.
-->
<value-param>
<name>cache-control</name>
@@ -130,357 +128,221 @@
</init-params>
</component></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-WebDAV-Corresponding_WebDav_and_JCR_actions">
- <title>Corresponding WebDav and JCR actions</title>
- <table>
- <title></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- WebDav
- </entry>
- <entry>
- JCR
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- COPY
- </entry>
- <entry>
- Workspace.copy(...)
- </entry>
-
- </row>
- <row>
- <entry>
- DELETE
- </entry>
- <entry>
- Node.remove()
- </entry>
-
- </row>
- <row>
- <entry>
- GET
- </entry>
- <entry>
- Node.getProperty(...); Property.getValue()
- </entry>
-
- </row>
- <row>
- <entry>
- HEAD
- </entry>
- <entry>
- Node.getProperty(...); Property.getLength()
- </entry>
-
- </row>
- <row>
- <entry>
- MKCOL
- </entry>
- <entry>
- Node.addNode(...)
- </entry>
-
- </row>
- <row>
- <entry>
- MOVE
- </entry>
- <entry>
- Session.move(...) or Workspace.move(...)
- </entry>
-
- </row>
- <row>
- <entry>
- PROPFIND
- </entry>
- <entry>
- Session.getNode(...); Node.getNode(...); Node.getNodes(...); Node.getProperties()
- </entry>
-
- </row>
- <row>
- <entry>
- PROPPATCH
- </entry>
- <entry>
- Node.setProperty(...); Node.getProperty(...).remove()
- </entry>
-
- </row>
- <row>
- <entry>
- PUT
- </entry>
- <entry>
- Node.addNode("node","nt:file"); Node.setProperty("jcr:data", "data")
- </entry>
-
- </row>
- <row>
- <entry>
- CHECKIN
- </entry>
- <entry>
- Node.checkin()
- </entry>
-
- </row>
- <row>
- <entry>
- CHECKOUT
- </entry>
- <entry>
- Node.checkout()
- </entry>
-
- </row>
- <row>
- <entry>
- REPORT
- </entry>
- <entry>
- Node.getVersionHistory(); VersionHistory.getAllVersions(); Version.getProperties()
- </entry>
-
- </row>
- <row>
- <entry>
- RESTORE
- </entry>
- <entry>
- Node.restore(...)
- </entry>
-
- </row>
- <row>
- <entry>
- UNCHECKOUT
- </entry>
- <entry>
- Node.restore(...)
- </entry>
-
- </row>
- <row>
- <entry>
- VERSION-CONTROL
- </entry>
- <entry>
- Node.addMixin("mix:versionable")
- </entry>
-
- </row>
- <row>
- <entry>
- LOCK
- </entry>
- <entry>
- Node.lock(...)
- </entry>
-
- </row>
- <row>
- <entry>
- UNLOCK
- </entry>
- <entry>
- Node.unlock()
- </entry>
-
- </row>
- <row>
- <entry>
- ORDERPATCH
- </entry>
- <entry>
- Node.orderBefore(...)
- </entry>
-
- </row>
- <row>
- <entry>
- SEARCH
- </entry>
- <entry>
- Workspace.getQueryManager(); QueryManager.createQuery(); Query.execute()
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
- <section id="sect-Reference_Guide-WebDAV-WebDAV_Considerations">
- <title>WebDAV Considerations</title>
- <!-- DOCS NOTE: This content is duplicated in the Site Publisher User Guide to avoid cross-document linking.
- Any changes here should also be made there-->
- <para>
+ </section>
+ <section id="sect-Reference_Guide-WebDAV-Corresponding_WebDav_and_JCR_actions">
+ <title>Corresponding WebDAV and JCR actions</title>
+ <table>
+ <title/>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry> WebDav </entry>
+ <entry> JCR </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> COPY </entry>
+ <entry> Workspace.copy(...) </entry>
+ </row>
+ <row>
+ <entry> DELETE </entry>
+ <entry> Node.remove() </entry>
+ </row>
+ <row>
+ <entry> GET </entry>
+ <entry> Node.getProperty(...); Property.getValue() </entry>
+ </row>
+ <row>
+ <entry> HEAD </entry>
+ <entry> Node.getProperty(...); Property.getLength() </entry>
+ </row>
+ <row>
+ <entry> MKCOL </entry>
+ <entry> Node.addNode(...) </entry>
+ </row>
+ <row>
+ <entry> MOVE </entry>
+ <entry> Session.move(...) or Workspace.move(...) </entry>
+ </row>
+ <row>
+ <entry> PROPFIND </entry>
+ <entry> Session.getNode(...); Node.getNode(...); Node.getNodes(...); Node.getProperties() </entry>
+ </row>
+ <row>
+ <entry> PROPPATCH </entry>
+ <entry> Node.setProperty(...); Node.getProperty(...).remove() </entry>
+ </row>
+ <row>
+ <entry> PUT </entry>
+ <entry> Node.addNode("node","nt:file"); Node.setProperty("jcr:data", "data") </entry>
+ </row>
+ <row>
+ <entry> CHECKIN </entry>
+ <entry> Node.checkin() </entry>
+ </row>
+ <row>
+ <entry> CHECKOUT </entry>
+ <entry> Node.checkout() </entry>
+ </row>
+ <row>
+ <entry> REPORT </entry>
+ <entry> Node.getVersionHistory(); VersionHistory.getAllVersions(); Version.getProperties() </entry>
+ </row>
+ <row>
+ <entry> RESTORE </entry>
+ <entry> Node.restore(...) </entry>
+ </row>
+ <row>
+ <entry> UNCHECKOUT </entry>
+ <entry> Node.restore(...) </entry>
+ </row>
+ <row>
+ <entry> VERSION-CONTROL </entry>
+ <entry> Node.addMixin("mix:versionable") </entry>
+ </row>
+ <row>
+ <entry> LOCK </entry>
+ <entry> Node.lock(...) </entry>
+ </row>
+ <row>
+ <entry> UNLOCK </entry>
+ <entry> Node.unlock() </entry>
+ </row>
+ <row>
+ <entry> ORDERPATCH </entry>
+ <entry> Node.orderBefore(...) </entry>
+ </row>
+ <row>
+ <entry> SEARCH </entry>
+ <entry> Workspace.getQueryManager(); QueryManager.createQuery(); Query.execute() </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>
+ <section id="sect-Reference_Guide-WebDAV-WebDAV_Considerations">
+ <title>WebDAV Considerations</title>
+<!-- DOCS NOTE: This content is duplicated in the Site Publisher User Guide to avoid cross-document linking.
+ Any changes here should also be made there--> <para>
There are some restrictions for WebDAV in different operating systems.
</para>
- <formalpara id="form-Reference_Guide-WebDAV_Considerations-Windows_7">
- <title>Windows 7</title>
- <para>
+ <formalpara id="form-Reference_Guide-WebDAV_Considerations-Windows_7">
+ <title>Windows 7</title>
+ <para>
When attempting to set up a web folder through <guilabel>Add a Network Location</guilabel> or <guilabel>Map a Network Drive</guilabel> through <guilabel>My Computer</guilabel>, an error message stating <guilabel>The folder you entered does not appear to be valid. Please choose another</guilabel> or <guilabel>Windows cannot access … Check the spelling of the name. Otherwise, there might be …</guilabel> may be encountered. These errors may appear when you are using SSL or non-SSL.
</para>
-
- </formalpara>
- <para>
+ </formalpara>
+ <para>
To fix this, do as follows:
</para>
- <procedure>
- <step>
- <para>
+ <procedure>
+ <step>
+ <para>
Go to Windows Registry Editor.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Find a key: \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\services\WebClient\Parameters\BasicAuthLevel .
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Change the value to 2.
</para>
-
- </step>
-
- </procedure>
- <formalpara id="form-Reference_Guide-WebDAV_Considerations-Microsoft_Office_2010">
- <title>Microsoft Office 2010</title>
- <para>
+ </step>
+ </procedure>
+ <formalpara id="form-Reference_Guide-WebDAV_Considerations-Microsoft_Office_2010">
+ <title>Microsoft Office 2010</title>
+ <para>
If you have:
</para>
-
- </formalpara>
- <itemizedlist>
- <listitem>
- <para>
+ </formalpara>
+ <itemizedlist>
+ <listitem>
+ <para>
Microsoft Office 2007/2010 applications installed on a client computer AND...
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The client computer is connected to a web server configured for Basic authentication VIA...
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
A connection that does not use Secure Sockets Layer (SSL) AND...
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
You try to access an Office file that is stored on the remote server...
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
You might experience the following symptoms when you try to open or to download the file:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
The Office file does not open or download.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
You do not receive a Basic authentication password prompt when you try to open or to download the file.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
You do not receive an error message when you try to open the file. The associated Office application starts. However, the selected file does not open.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
+ </listitem>
</itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
These outcomes can be circumvented by enabling Basic authentication on the client machine.
</para>
- <para>
+ <para>
To enable Basic authentication on the client computer, follow these steps:
</para>
- <procedure>
- <step>
- <para>
+ <procedure>
+ <step>
+ <para>
Click Start, type <literal>regedit</literal> in the Start Search box, and then press Enter.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Locate and then click the following registry subkey:
</para>
- <para>
+ <para>
<envar>HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Internet</envar>
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
On the <guilabel>Edit</guilabel> menu, point to <guilabel>New</guilabel>, and then click <guilabel>DWORD Value</guilabel>.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Type <literal>BasicAuthLevel</literal>, and then press <keycap>Enter</keycap>.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Right-click <literal>BasicAuthLevel</literal>, and then click <guilabel>Modify</guilabel>.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
In the Value data box, type <literal>2</literal>, and then click <guilabel>OK</guilabel>.
</para>
-
- </step>
-
- </procedure>
-
- </section>
-
-
+ </step>
+ </procedure>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/query-handler-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/query-handler-config.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/query-handler-config.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,588 +1,455 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-QueryHandler_configuration">
- <title>QueryHandler configuration</title>
- <section id="sect-Reference_Guide-QueryHandler_configuration-Indexing_in_clustered_environment">
- <title>Indexing in clustered environment</title>
- <para>
- JCR offers indexing strategies for clustered environments using the advantages of running in a single JVM or doing the best to use all resources available in cluster. JCR uses Lucene library as underlying search and indexing engine, but it has several limitations that greatly reduce possibilities and limits the usage of cluster advantages. That's why eXo JCR offers two strategies that are suitable for it's own usecases. They are clustered with shared index and clustered with local indexes. Each one has it's pros and cons.
+ <title>Configuring QueryHandler</title>
+ <section id="sect-Reference_Guide-QueryHandler_configuration-Indexing_in_clustered_environment">
+ <title>Indexing in clustered environment</title>
+ <para>
+ JCR offers indexing strategies for clustered environments using the advantages of running in a single JVM or doing the best to use all resources available in cluster. JCR uses Lucene library as underlying search and indexing engine, but it has several limitations that greatly reduce possibilities and limits the usage of cluster advantages. That's why eXo JCR offers two strategies that are suitable for it's own usecases. They are clustered with shared index and clustered with local indexes. Each one has it's pros and cons.
</para>
- <para>
- Clustered implementation with local indexes combines in-memory buffer index directory with delayed file-system flushing. This index is called "Volatile" and it is invoked in searches also. Within some conditions volatile index is flushed to the persistent storage (file system) as new index directory. This allows to achieve great results for write operations.
+ <para>
+ Clustered implementation with local indexes combines in-memory buffer index directory with delayed file-system flushing. This index is called "Volatile" and it is invoked in searches also. Within some conditions volatile index is flushed to the persistent storage (file system) as new index directory. This allows to achieve great results for write operations.
</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="images/eXoJCR/diagram-local-index.png" width="444" />
- </imageobject>
-
- </mediaobject>
- <para>
- As this implementation designed for clustered environment it has additional mechanisms for data delivery within cluster. Actual text extraction jobs done on the same node that does content operations (i.e. write operation). Prepared "documents" (Lucene term that means block of data ready for indexing) are replicated withing cluster nodes and processed by local indexes. So each cluster instance has the same index content. When new node joins the cluster it has no initial index, so it must be created. There are some supported ways of doing this operation. The simplest is to simply copy the index manually but this is not intended for use. If no initial index found JCR uses automated scenarios. They are controlled via configuration (see "index-recovery-mode" parameter) offering full re-indexing from database or copying from another cluster node.
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" align="center" fileref="images/eXoJCR/diagram-local-index.png"/>
+ </imageobject>
+ </mediaobject>
+ <para>
+ As this implementation designed for clustered environment it has additional mechanisms for data delivery within cluster. Actual text extraction jobs done on the same node that does content operations (i.e. write operation). Prepared "documents" (Lucene term that means block of data ready for indexing) are replicated withing cluster nodes and processed by local indexes. So each cluster instance has the same index content. When new node joins the cluster it has no initial index, so it must be created. There are some supported ways of doing this operation. The simplest is to simply copy the index manually but this is not intended for use. If no initial index found JCR uses automated scenarios. They are controlled via configuration (see "index-recovery-mode" parameter) offering full re-indexing from database or copying from another cluster node.
</para>
- <para>
+ <para>
For some reasons having a multiple index copies on each instance can be costly. So shared index can be used instead (see diagram below).
</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="images/eXoJCR/diagram-shared-index.png" width="444" />
- </imageobject>
-
- </mediaobject>
- <para>
- This indexing strategy combines advantages of in-memory index along with shared persistent index offering "near" real time search capabilities. This means that newly added content is accessible via search practically immediately. This strategy allows nodes to index data in their own volatile (in-memory) indexes, but persistent indexes are managed by single "coordinator" node only. Each cluster instance has a read access for shared index to perform queries combining search results found in own in-memory index also. Take in account that shared folder must be configured in your system environment (i.e. mounted NFS folder). But this strategy in some extremely rare cases can have a bit different volatile indexes within cluster instances for a while. In a few seconds they will be up2date.
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" align="center" fileref="images/eXoJCR/diagram-shared-index.png"/>
+ </imageobject>
+ </mediaobject>
+ <para>
+ This indexing strategy combines advantages of in-memory index along with shared persistent index offering "near" real time search capabilities. This means that newly added content is accessible via search practically immediately. This strategy allows nodes to index data in their own volatile (in-memory) indexes, but persistent indexes are managed by single "coordinator" node only. Each cluster instance has a read access for shared index to perform queries combining search results found in own in-memory index also. Take in account that shared folder must be configured in your system environment (i.e. mounted NFS folder). But this strategy in some extremely rare cases can have a bit different volatile indexes within cluster instances for a while. In a few seconds they will be up2date.
</para>
- <para>
- See more about <xref linkend="chap-Reference_Guide-Search_Configuration" /> .
+ <para>
+ See more about <xref linkend="chap-Reference_Guide-Search_Configuration"/> .
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-QueryHandler_configuration-Configuration">
- <title>Configuration</title>
- <section id="sect-Reference_Guide-Configuration-Query_handler_configuration_overview">
- <title>Query-handler configuration overview</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-QueryHandler_configuration-Configuration">
+ <title>Configuration</title>
+ <section id="sect-Reference_Guide-Configuration-Query_handler_configuration_overview">
+ <title>Query-handler configuration overview</title>
+ <para>
Configuration example:
</para>
-
-<programlisting language="XML" role="XML"><workspace name="ws">
- <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <programlisting language="XML" role="XML"><workspace name="ws">
+ <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
- <property name="index-dir" value="shareddir/index/db1/ws" />
- <property name="changesfilter-class"
- value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" />
- <property name="jbosscache-configuration" value="jbosscache-indexer.xml" />
- <property name="jgroups-configuration" value="udp-mux.xml" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" />
- <property name="max-volatile-time" value="60" />
- <property name="rdbms-reindexing" value="true" />
- <property name="reindexing-page-size" value="1000" />
- <property name="index-recovery-mode" value="from-coordinator" />
- <property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.DocNumberRecoveryFilter" />
+ <property name="index-dir" value="shareddir/index/db1/ws" />
+ <property name="changesfilter-class"
+ value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" />
+ <property name="jbosscache-configuration" value="jbosscache-indexer.xml" />
+ <property name="jgroups-configuration" value="udp-mux.xml" />
+ <property name="jgroups-multiplexer-stack" value="true" />
+ <property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" />
+ <property name="max-volatile-time" value="60" />
+ <property name="rdbms-reindexing" value="true" />
+ <property name="reindexing-page-size" value="1000" />
+ <property name="index-recovery-mode" value="from-coordinator" />
+ <property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.DocNumberRecoveryFilter" />
</properties>
</query-handler>
</workspace>
</programlisting>
- <table id="tabl-Reference_Guide-Query_handler_configuration_overview-Configuration_properties">
- <title>Configuration properties</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Property name
- </entry>
- <entry>
- Description
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- index-dir
- </entry>
- <entry>
- path to index
- </entry>
-
- </row>
- <row>
- <entry>
- changesfilter-class
- </entry>
- <entry>
- template of JBoss-cache configuration for all query-handlers in repository
- </entry>
-
- </row>
- <row>
- <entry>
- jbosscache-configuration
- </entry>
- <entry>
- template of JBoss-cache configuration for all query-handlers in repository
- </entry>
-
- </row>
- <row>
- <entry>
- jgroups-configuration
- </entry>
- <entry>
- jgroups-configuration is template configuration for all components (search, cache, locks) [Add link to document describing template configurations]
- </entry>
-
- </row>
- <row>
- <entry>
- jgroups-multiplexer-stack
- </entry>
- <entry>
- [TODO about jgroups-multiplexer-stack - add link to JBoss doc]
- </entry>
-
- </row>
- <row>
- <entry>
- jbosscache-cluster-name
- </entry>
- <entry>
- cluster name (must be unique)
- </entry>
-
- </row>
- <row>
- <entry>
- max-volatile-time
- </entry>
- <entry>
- max time to live for Volatile Index
- </entry>
-
- </row>
- <row>
- <entry>
- rdbms-reindexing
- </entry>
- <entry>
- indicate that need to use rdbms reindexing mechanism if possible, the default value is true
- </entry>
-
- </row>
- <row>
- <entry>
- reindexing-page-size
- </entry>
- <entry>
- maximum amount of nodes which can be retrieved from storage for re-indexing purpose, the default value is 100
- </entry>
-
- </row>
- <row>
- <entry>
- index-recovery-mode
- </entry>
- <entry>
- If the parameter has been set to <command>from-indexing</command>, so a full indexing will be automatically launched (default behavior), if the parameter has been set to <command>from-coordinator</command>, the index will be retrieved from coordinator
- </entry>
-
- </row>
- <row>
- <entry>
- index-recovery-filter
- </entry>
- <entry>
- Defines implementation class or classes of RecoveryFilters, the mechanism of index synchronization for Local Index strategy.
- </entry>
-
- </row>
- <row>
- <entry>
- async-reindexing
- </entry>
- <entry>
- Controls the process of re-indexing on JCR's startup. If this flag is set, indexing will be launched asynchronously, without blocking the JCR. Default is "<literal>false</literal>".
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <formalpara id="form-Reference_Guide-Query_handler_configuration_overview-Improving_Query_Performance_With_postgreSQL_and_rdbms_reindexing">
- <title>Improving Query Performance With <literal>postgreSQL</literal> and <parameter>rdbms-reindexing</parameter></title>
- <para>
+ <table id="tabl-Reference_Guide-Query_handler_configuration_overview-Configuration_properties">
+ <title>Configuration properties</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry> Property name </entry>
+ <entry> Description </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> index-dir </entry>
+ <entry> path to index </entry>
+ </row>
+ <row>
+ <entry> changesfilter-class </entry>
+ <entry> template of JBoss-cache configuration for all query-handlers in repository </entry>
+ </row>
+ <row>
+ <entry> jbosscache-configuration </entry>
+ <entry> template of JBoss-cache configuration for all query-handlers in repository </entry>
+ </row>
+ <row>
+ <entry> jgroups-configuration </entry>
+ <entry> jgroups-configuration is template configuration for all components (search, cache, locks) [Add link to document describing template configurations] </entry>
+ </row>
+ <row>
+ <entry> jgroups-multiplexer-stack </entry>
+ <entry> [TODO about jgroups-multiplexer-stack - add link to JBoss doc] </entry>
+ </row>
+ <row>
+ <entry> jbosscache-cluster-name </entry>
+ <entry> cluster name (must be unique) </entry>
+ </row>
+ <row>
+ <entry> max-volatile-time </entry>
+ <entry> max time to live for Volatile Index </entry>
+ </row>
+ <row>
+ <entry> rdbms-reindexing </entry>
+ <entry> indicate that need to use rdbms reindexing mechanism if possible, the default value is true </entry>
+ </row>
+ <row>
+ <entry> reindexing-page-size </entry>
+ <entry> maximum amount of nodes which can be retrieved from storage for re-indexing purpose, the default value is 100 </entry>
+ </row>
+ <row>
+ <entry> index-recovery-mode </entry>
+ <entry> If the parameter has been set to <command>from-indexing</command>, so a full indexing will be automatically launched (default behavior), if the parameter has been set to <command>from-coordinator</command>, the index will be retrieved from coordinator </entry>
+ </row>
+ <row>
+ <entry> index-recovery-filter </entry>
+ <entry> Defines implementation class or classes of RecoveryFilters, the mechanism of index synchronization for Local Index strategy. </entry>
+ </row>
+ <row>
+ <entry> async-reindexing </entry>
+ <entry> Controls the process of re-indexing on JCR's startup. If this flag is set, indexing will be launched asynchronously, without blocking the JCR. Default is "<literal>false</literal>". </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <formalpara id="form-Reference_Guide-Query_handler_configuration_overview-Improving_Query_Performance_With_postgreSQL_and_rdbms_reindexing">
+ <title>Improving Query Performance With <literal>postgreSQL</literal> and <parameter>rdbms-reindexing</parameter></title>
+ <para>
If you use <literal>postgreSQL</literal> and <parameter>rdbms-reindexing</parameter> is set to <literal>true</literal>, the performance of the queries used while indexing can be improved by:
</para>
-
- </formalpara>
- <procedure>
- <title></title>
- <step>
- <para>
- Set the parameter "<parameter>enable_seqscan</parameter>" to "<literal>off</literal>"
+ </formalpara>
+ <procedure>
+ <title/>
+ <step>
+ <para>
+ Set the parameter "<parameter>enable_seqscan</parameter>" to "<literal>off</literal>"
</para>
- <para>
+ <para>
<emphasis role="bold">OR</emphasis>
</para>
- <para>
- Set "<parameter>default_statistics_target</parameter>" to at least "<literal>50</literal>".
+ <para>
+ Set "<parameter>default_statistics_target</parameter>" to at least "<literal>50</literal>".
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Restart DB server and make analyze of the JCR_SVALUE (or JCR_MVALUE) table.
</para>
-
- </step>
-
- </procedure>
-
- <formalpara id="form-Reference_Guide-Query_handler_configuration_overview-Improving_Query_Performance_With_DB2_and_rdbms_reindexing">
- <title>Improving Query Performance With <literal>DB2</literal> and <parameter>rdbms-reindexing</parameter></title>
- <para>
+ </step>
+ </procedure>
+ <formalpara id="form-Reference_Guide-Query_handler_configuration_overview-Improving_Query_Performance_With_DB2_and_rdbms_reindexing">
+ <title>Improving Query Performance With <literal>DB2</literal> and <parameter>rdbms-reindexing</parameter></title>
+ <para>
If you use <literal>DB2</literal> and <parameter>rdbms-reindexing</parameter> is set to <literal>true</literal>, the performance of the queries used while indexing can be improved by:
</para>
-
- </formalpara>
- <procedure>
- <title></title>
- <step>
- <para>
+ </formalpara>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Make statistics on tables by running the following for <literal>JCR_SITEM</literal> (or <literal>JCR_MITEM</literal>) and <literal>JCR_SVALUE</literal> (or <literal>JCR_MVALUE</literal>) tables:
</para>
-
-<programlisting><code>RUNSTATS ON TABLE <scheme>.<table> WITH DISTRIBUTION AND INDEXES ALL</code></programlisting>
-
- </step>
-
- </procedure>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Configuration-Cluster_ready_indexing">
- <title>Cluster-ready indexing</title>
- <para>
- For both cluster-ready implementations JBoss Cache, JGroups and Changes Filter values must be defined. Shared index requires some kind of remote or shared file system to be attached in a system (i.e. NFS, SMB or etc). Indexing directory ("indexDir" value) must point to it. Setting "changesfilter-class" to "org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" will enable shared index implementation.
+ <programlisting><code>RUNSTATS ON TABLE <scheme>.<table> WITH DISTRIBUTION AND INDEXES ALL</code></programlisting>
+ </step>
+ </procedure>
+ </section>
+ <section id="sect-Reference_Guide-Configuration-Cluster_ready_indexing">
+ <title>Cluster-ready indexing</title>
+ <para>
+ For both cluster-ready implementations JBoss Cache, JGroups and Changes Filter values must be defined. Shared index requires some kind of remote or shared file system to be attached in a system (i.e. NFS, SMB or etc). Indexing directory ("indexDir" value) must point to it. Setting "changesfilter-class" to "org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" will enable shared index implementation.
</para>
-
-<programlisting language="XML" role="XML"><workspace name="ws">
- <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <programlisting language="XML" role="XML"><workspace name="ws">
+ <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
- <property name="index-dir" value="/mnt/nfs_drive/index/db1/ws" />
- <property name="changesfilter-class"
- value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" />
- <property name="jbosscache-configuration" value="jbosscache-indexer.xml" />
- <property name="jgroups-configuration" value="udp-mux.xml" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" />
- <property name="max-volatile-time" value="60" />
- <property name="rdbms-reindexing" value="true" />
- <property name="reindexing-page-size" value="1000" />
- <property name="index-recovery-mode" value="from-coordinator" />
+ <property name="index-dir" value="/mnt/nfs_drive/index/db1/ws" />
+ <property name="changesfilter-class"
+ value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" />
+ <property name="jbosscache-configuration" value="jbosscache-indexer.xml" />
+ <property name="jgroups-configuration" value="udp-mux.xml" />
+ <property name="jgroups-multiplexer-stack" value="true" />
+ <property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" />
+ <property name="max-volatile-time" value="60" />
+ <property name="rdbms-reindexing" value="true" />
+ <property name="reindexing-page-size" value="1000" />
+ <property name="index-recovery-mode" value="from-coordinator" />
</properties>
</query-handler>
</workspace></programlisting>
- <para>
- In order to use cluster-ready strategy based on local indexes, when each node has own copy of index on local file system, the following configuration must be applied. Indexing directory must point to any folder on local file system and "changesfilter-class" must be set to "org.exoplatform.services.jcr.impl.core.query.jbosscache.LocalIndexChangesFilter".
+ <para>
+ In order to use cluster-ready strategy based on local indexes, when each node has own copy of index on local file system, the following configuration must be applied. Indexing directory must point to any folder on local file system and "changesfilter-class" must be set to "org.exoplatform.services.jcr.impl.core.query.jbosscache.LocalIndexChangesFilter".
</para>
-
-<programlisting language="XML" role="XML"><workspace name="ws">
- <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <programlisting language="XML" role="XML"><workspace name="ws">
+ <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
- <property name="index-dir" value="/mnt/nfs_drive/index/db1/ws" />
- <property name="changesfilter-class"
- value="org.exoplatform.services.jcr.impl.core.query.jbosscache.LocalIndexChangesFilter" />
- <property name="jbosscache-configuration" value="jbosscache-indexer.xml" />
- <property name="jgroups-configuration" value="udp-mux.xml" />
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" />
- <property name="max-volatile-time" value="60" />
- <property name="rdbms-reindexing" value="true" />
- <property name="reindexing-page-size" value="1000" />
- <property name="index-recovery-mode" value="from-coordinator" />
+ <property name="index-dir" value="/mnt/nfs_drive/index/db1/ws" />
+ <property name="changesfilter-class"
+ value="org.exoplatform.services.jcr.impl.core.query.jbosscache.LocalIndexChangesFilter" />
+ <property name="jbosscache-configuration" value="jbosscache-indexer.xml" />
+ <property name="jgroups-configuration" value="udp-mux.xml" />
+ <property name="jgroups-multiplexer-stack" value="true" />
+ <property name="jbosscache-cluster-name" value="JCR-cluster-indexer-ws" />
+ <property name="max-volatile-time" value="60" />
+ <property name="rdbms-reindexing" value="true" />
+ <property name="reindexing-page-size" value="1000" />
+ <property name="index-recovery-mode" value="from-coordinator" />
</properties>
</query-handler>
</workspace>
</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Configuration-Local_Index_Recovery_Filters">
- <title>Local Index Recovery Filters</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Configuration-Local_Index_Recovery_Filters">
+ <title>Local Index Recovery Filters</title>
+ <para>
A common usecase for all cluster-ready applications is a hot joining and leaving of processing units. All nodes that are joining a cluster for the first time or nodes joining after some downtime, must be in a synchronized state.
</para>
- <para>
+ <para>
When using shared value storages, databases and indexes, cluster nodes are synchronized at any given time. But is not the case when a local index strategy is used.
</para>
- <para>
+ <para>
If a new node joins a cluster, without an index it is retrieved or recreated. Nodes can be also be restarted and thus the index is not empty. By default, even though the existing index is thought to be up to date, it can be outdated.
</para>
- <para>
+ <para>
The JBoss Enterprise Portal Platform JCR offers a mechanism called <literal>RecoveryFilters</literal> that will automatically retrieve index for the joining node on start up. This feature is a set of filters that can be defined via <literal>QueryHandler</literal> configuration:
</para>
-
-<programlisting language="XML"><property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.DocNumberRecoveryFilter" /></programlisting>
- <para>
+ <programlisting language="XML"><property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.DocNumberRecoveryFilter" /></programlisting>
+ <para>
Filter numbers are not limited so they can be combined:
</para>
-
-<programlisting language="XML"><property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.DocNumberRecoveryFilter" />
- <property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.SystemPropertyRecoveryFilter" />
+ <programlisting language="XML"><property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.DocNumberRecoveryFilter" />
+ <property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.SystemPropertyRecoveryFilter" />
</programlisting>
- <para>
- If any one returns fires, the index is re-synchronized. This feature uses standard index recovery mode defined by previously described parameter (can be "from-indexing" (default) or "from-coordinator")
+ <para>
+ If any one returns fires, the index is re-synchronized. This feature uses standard index recovery mode defined by previously described parameter (can be "from-indexing" (default) or "from-coordinator")
</para>
-
-<programlisting language="XML"><property name="index-recovery-mode" value="from-coordinator" />
+ <programlisting language="XML"><property name="index-recovery-mode" value="from-coordinator" />
</programlisting>
- <para>
+ <para>
There are multiple filter implementations:
</para>
- <variablelist id="vari-Reference_Guide-Local_Index_Recovery_Filters-org.exoplatform.services.jcr.impl.core.query.lucene.DummyRecoveryFilter">
- <title>org.exoplatform.services.jcr.impl.core.query.lucene.DummyRecoveryFilter</title>
- <varlistentry>
- <term></term>
- <listitem>
- <para>
+ <variablelist id="vari-Reference_Guide-Local_Index_Recovery_Filters-org.exoplatform.services.jcr.impl.core.query.lucene.DummyRecoveryFilter">
+ <title>org.exoplatform.services.jcr.impl.core.query.lucene.DummyRecoveryFilter</title>
+ <varlistentry>
+ <term/>
+ <listitem>
+ <para>
Always returns true, for cases when index must be force resynchronized (recovered) each time.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>org.exoplatform.services.jcr.impl.core.query.lucene.SystemPropertyRecoveryFilter</term>
- <listitem>
- <para>
- Returns value of system property "<literal>org.exoplatform.jcr.recoveryfilter.forcereindexing</literal>". So index recovery can be controlled from the top without changing documentation using system properties.
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>org.exoplatform.services.jcr.impl.core.query.lucene.SystemPropertyRecoveryFilter</term>
+ <listitem>
+ <para>
+ Returns value of system property "<literal>org.exoplatform.jcr.recoveryfilter.forcereindexing</literal>". So index recovery can be controlled from the top without changing documentation using system properties.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>org.exoplatform.services.jcr.impl.core.query.lucene.ConfigurationPropertyRecoveryFilter</term>
- <listitem>
- <para>
- Returns value of <literal>QueryHandler</literal> configuration property "<literal>index-recovery-filter-forcereindexing</literal>". So index recovery can be controlled from configuration separately for each workspace. For example:
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>org.exoplatform.services.jcr.impl.core.query.lucene.ConfigurationPropertyRecoveryFilter</term>
+ <listitem>
+ <para>
+ Returns value of <literal>QueryHandler</literal> configuration property "<literal>index-recovery-filter-forcereindexing</literal>". So index recovery can be controlled from configuration separately for each workspace. For example:
</para>
-
-<programlisting language="XML"><property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.ConfigurationPropertyRecoveryFilter" />
- <property name="index-recovery-filter-forcereindexing" value="true" />
+ <programlisting language="XML"><property name="index-recovery-filter" value="org.exoplatform.services.jcr.impl.core.query.lucene.ConfigurationPropertyRecoveryFilter" />
+ <property name="index-recovery-filter-forcereindexing" value="true" />
</programlisting>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>org.exoplatform.services.jcr.impl.core.query.lucene.DocNumberRecoveryFilter</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>org.exoplatform.services.jcr.impl.core.query.lucene.DocNumberRecoveryFilter</term>
+ <listitem>
+ <para>
Checks the number of documents in index on coordinator side and self-side. It returns <literal>true</literal> if the count differs.
</para>
- <para>
+ <para>
The advantage of this filter compared to others, is that it will skip reindexing for workspaces where the index was not modified.
</para>
- <para>
+ <para>
For example; if there is ten repositories with three workspaces in each and only one is heavily used in the cluster, this filter will only reindex those workspaces that have been changed, without affecting other indexes.
</para>
- <para>
+ <para>
This greatly reduces start up time.
</para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Configuration-JBoss_Cache_template_configuration">
- <title>JBoss-Cache template configuration</title>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Configuration-JBoss_Cache_template_configuration">
+ <title>JBoss-Cache template configuration</title>
+ <para>
JBoss-Cache template configuration for query handler is about the same for both clustered strategies.
</para>
- <example id="exam-Reference_Guide-JBoss_Cache_template_configuration-jbosscache_indexer.xml">
- <title>jbosscache-indexer.xml</title>
-
-<programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
-<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
- <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
- lockAcquisitionTimeout="20000" />
+ <example id="exam-Reference_Guide-JBoss_Cache_template_configuration-jbosscache_indexer.xml">
+ <title>jbosscache-indexer.xml</title>
+ <programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
+<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
+ <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
+ lockAcquisitionTimeout="20000" />
<!-- Configure the TransactionManager -->
- <transaction transactionManagerLookupClass="org.jboss.cache.transaction.JBossStandalone
- JTAManagerLookup" />
- <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
- <stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
+ <transaction transactionManagerLookupClass="org.jboss.cache.transaction.JBossStandalone
+ JTAManagerLookup" />
+ <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
+ <stateRetrieval timeout="20000" fetchInMemoryState="false" />
+ <jgroupsConfig multiplexerStack="jcr.stack" />
<sync />
</clustering>
<!-- Eviction configuration -->
- <eviction wakeUpInterval="5000">
- <default algorithmClass="org.jboss.cache.eviction.FIFOAlgorithm" eventQueueSize="1000000">
- <property name="maxNodes" value="10000" />
- <property name="minTimeToLive" value="60000" />
+ <eviction wakeUpInterval="5000">
+ <default algorithmClass="org.jboss.cache.eviction.FIFOAlgorithm" eventQueueSize="1000000">
+ <property name="maxNodes" value="10000" />
+ <property name="minTimeToLive" value="60000" />
</default>
</eviction>
</jbosscache></programlisting>
-
- </example>
- <para>
- Read more about template configurations <xref linkend="chap-Reference_Guide-JBoss_Cache_configuration" />.
+ </example>
+ <para>
+ Read more about template configurations <xref linkend="chap-Reference_Guide-JBoss_Cache_configuration"/>.
</para>
-
- </section>
-
-
</section>
-
- <section id="sect-Reference_Guide-QueryHandler_configuration-Asynchronous_Reindexing">
- <title>Asynchronous Reindexing</title>
- <para>
- Managing a large data set using a JCR in a production environment at times requires special operations with Indexes, stored on File System. One of those maintenance operations is a recreation of it. Also called "re-indexing". There are various usecases when it's important to do. They include hardware faults, hard restarts, data-corruption, migrations and JCR updates that brings new features related to index. Usually index re-creation requested on server's startup or in runtime.
+ </section>
+ <section id="sect-Reference_Guide-QueryHandler_configuration-Asynchronous_Reindexing">
+ <title>Asynchronous Re-indexing</title>
+ <para>
+ Managing a large data set using a JCR in a production environment at times requires special operations with Indexes, stored on File System. One of those maintenance operations is a recreation of it. Also called "re-indexing". There are various usecases when it's important to do. They include hardware faults, hard restarts, data-corruption, migrations and JCR updates that brings new features related to index. Usually index re-creation requested on server's startup or in runtime.
</para>
- <section id="sect-Reference_Guide-Asynchronous_Reindexing-On_startup_indexing">
- <title>On startup indexing</title>
- <para>
+ <section id="sect-Reference_Guide-Asynchronous_Reindexing-On_startup_indexing">
+ <title>On startup indexing</title>
+ <para>
A common usecase for updating and re-creating the index is to stop the server and manually remove indexes for workspaces requiring it. When the server is re-started, the missing indexes are automatically recovered by re-indexing.
</para>
- <para>
+ <para>
The eXo JCR Supports direct RDBMS re-indexing, which can be faster than ordinary and can be configured via <literal>QueryHandler</literal> parameter <parameter>rdbms-reindexing</parameter> set to <literal>true</literal>.
</para>
- <para>
+ <para>
A new feature is asynchronous indexing on startup. Usually startup is blocked until the indexing process is finished. This block can take any period of time, depending on amount of data persisted in repositories. But this can be resolved by using an asynchronous approaches of startup indexation.
</para>
- <para>
+ <para>
Essentially, all indexing operations are performed in the background without blocking the repository. This is controlled by the value of the <parameter>async-reindexing</parameter> parameter in <literal>QueryHandler</literal> configuration.
</para>
- <para>
+ <para>
With asynchronous indexation active, the JCR starts with no active indexes present. Queries on JCR still can be executed without exceptions, but no results will be returned until index creation completed.
</para>
- <para>
+ <para>
The index state check is accomplished via <literal>QueryManagerImpl</literal>:
</para>
- <para>
+ <para>
<programlisting lang="java">boolean online = ((QueryManagerImpl)Workspace.getQueryManager()).getQueryHandeler().isOnline();</programlisting>
</para>
- <para>
+ <para>
The <emphasis role="bold">OFFLINE</emphasis> state means that the index is currently re-creating. When the state is changed, a corresponding log event is printed. When the background index task starts the index is switched to <emphasis role="bold">OFFLINE</emphasis>, with following log event :
</para>
-
-<programlisting>[INFO] Setting index OFFLINE (repository/production[system]).</programlisting>
- <para>
+ <programlisting>[INFO] Setting index OFFLINE (repository/production[system]).</programlisting>
+ <para>
When the indexing process is finished, the following two events are logged :
</para>
-
-<programlisting>[INFO] Created initial index for 143018 nodes (repository/production[system]).
+ <programlisting>[INFO] Created initial index for 143018 nodes (repository/production[system]).
[INFO] Setting index ONLINE (repository/production[system]).</programlisting>
- <para>
+ <para>
Those two log lines indicates the end of process for workspace given in brackets. Calling isOnline() as mentioned above, will also return true.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Asynchronous_Reindexing-Hot_Asynchronous_Workspace_Reindexing_via_JMX">
- <title>Hot Asynchronous Workspace Reindexing via JMX</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Asynchronous_Reindexing-Hot_Asynchronous_Workspace_Reindexing_via_JMX">
+ <title>Hot Asynchronous Workspace Re-indexing using JMX</title>
+ <para>
Some hard system faults, errors during upgrades, migration issues and some other factors may corrupt the index. Current versions of JCR supports <emphasis role="bold">Hot Asynchronous Workspace Reindexing</emphasis> feature. It allows Service Administrators to launch the process in background without stopping or blocking the whole application by using any JMX-compatible console.
</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="images/eXoJCR/jmx-jconsole.png" />
- </imageobject>
-
- </mediaobject>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/eXoJCR/jmx-jconsole.png"/>
+ </imageobject>
+ </mediaobject>
+ <para>
The server can continue working as expected while the index is recreated.
</para>
- <para>
+ <para>
This depends on the flag <parameter>allow queries</parameter> being passed via JMX interface to the reindex operation invocation. If the flag is set, the application continues working.
</para>
- <para>
+ <para>
However, there is one critical limitation users must be aware of; <emphasis>the index is frozen while the background task is running</emphasis>.
</para>
- <para>
+ <para>
This means that queries are performed on a version of the index present at the moment the indexing task is started, and that data written into the repository after startup will not be available through the search until process completes.
</para>
- <para>
+ <para>
Data added during re-indexation is also indexed, but will be available only when reindexing is complete. The JCR makes a snapshot of indexes at the invocation of the asynchronous indexing task and uses that snapshot for searches.
</para>
- <para>
+ <para>
When the operation is finished, the stale index is replaced by the newly created index, which included any newly added data.
</para>
- <para>
+ <para>
If the <parameter>allow queries</parameter> flag is set to <literal>false</literal>, then all queries will throw an exception while task is running. The current state can be acquired using the following JMX operation:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
getHotReindexingState() - returns information about latest invocation: start time, if in progress or finish time if done.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Asynchronous_Reindexing-Notices">
- <title>Notices</title>
- <para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Asynchronous_Reindexing-Notices">
+ <title>Notices</title>
+ <para>
Hot re-indexing via JMX cannot be launched if the index is already in offline mode. This means that the index is currently involved in some other operations, such as re-indexing at startup, copying in cluster to another node or whatever.
</para>
- <para>
- Also; <emphasis>Hot Asynchronous Reindexing via JMX</emphasis> and <literal>on startup</literal> reindexing are different features. So you can't get the state of startup reindexing using command <code>getHotReindexingState</code> in JMX interface, but there are some common JMX operations:
+ <para>
+ Also; <emphasis>Hot Asynchronous Reindexing via JMX</emphasis> and <literal>on startup</literal> reindexing are different features. So you can't get the state of startup reindexing using command <code>getHotReindexingState</code> in JMX interface, but there are some common JMX operations:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
getIOMode - returns current index IO mode (READ_ONLY / READ_WRITE), belongs to clustered configuration states;
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
getState - returns current state: ONLINE / OFFLINE.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
-
+ </listitem>
+ </itemizedlist>
</section>
-
- <section id="sect-Reference_Guide-QueryHandler_configuration-Advanced_tuning">
- <title>Advanced tuning</title>
- <section id="sect-Reference_Guide-Advanced_tuning-Lucene_tuning">
- <title>Lucene tuning</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-QueryHandler_configuration-Advanced_tuning">
+ <title>Advanced tuning</title>
+ <section id="sect-Reference_Guide-Advanced_tuning-Lucene_tuning">
+ <title>Lucene tuning</title>
+ <para>
As mentioned, JCR Indexing is based on the Lucene indexing library as the underlying search engine. It uses Directories to store index and manages access to index by Lock Factories.
</para>
- <para>
+ <para>
By default, the JCR implementation uses optimal combination of Directory implementation and Lock Factory implementation.
</para>
- <para>
+ <para>
The <literal>SimpleFSDirectory</literal> is used in Windows environments and the <literal>NIOFSDirectory</literal> implementation is used in non-Windows systems.
</para>
- <para>
+ <para>
<literal>NativeFSLockFactory</literal> is an optimal solution for a wide variety of cases including clustered environment with NFS shared resources.
</para>
- <para>
+ <para>
But those defaults can be overridden in the system properties.
</para>
- <para>
+ <para>
Two properties: <literal>org.exoplatform.jcr.lucene.store.FSDirectoryLockFactoryClass</literal> and <literal>org.exoplatform.jcr.lucene.FSDirectory.class</literal> control (and change) the default behavior.
</para>
- <para>
+ <para>
The first defines the implementation of abstract Lucene <literal>LockFactory</literal> class and the second sets implementation class for <literal>FSDirectory</literal> instances.
</para>
- <para>
+ <para>
For more information, refer to the Lucene documentation. But be careful, for while the JCR allows users to change implementation classes of Lucene internals, it does not guarantee the stability and functionality of those changes.
</para>
-
- </section>
-
-
</section>
-
-
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-check-controller.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-check-controller.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-check-controller.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,107 +1,82 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Checking_repository_integrity_and_consistency">
- <title>Checking repository integrity and consistency</title>
- <section id="sect-Reference_Guide-Checking_repository_integrity_and_consistency-JMX_based_consistency_tool">
- <title>JMX-based consistency tool</title>
- <para>
- It is important to check the integrity and consistency of system regularly, especially if there is no, or stale, backups. The JBoss Enterprise Portal Platform JCR implementation offers an innovative JMX-based complex checking tool.
- </para>
- <para>
- During an inspection, the tool checks every major JCR component, such as persistent data layer and the index. The persistent layer includes JDBC Data Container and Value-Storages if they are configured.
- </para>
- <para>
- The database is verified using the set of complex specialized domain-specific queries. The Value Storage tool checks the existence of, and access to, each file.
- </para>
- <para>
- Access to the check tool is exposed via the JMX interface, with the following operations available:
- </para>
- <table id="tabl-Reference_Guide-JMX_based_consistency_tool-Available_methods">
- <title>Available methods</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- <code>checkRepositoryDataConsistency()</code>
- </entry>
- <entry>
- Inspect full repository data (db, value storage and search index)
- </entry>
-
- </row>
- <row>
- <entry>
- <code>checkRepositoryDataBaseConsistency()</code>
- </entry>
- <entry>
- Inspect only DB
- </entry>
-
- </row>
- <row>
- <entry>
- <code>checkRepositoryValueStorageConsistency()</code>
- </entry>
- <entry>
- Inspect only ValueStorage
- </entry>
-
- </row>
- <row>
- <entry>
- <code>checkRepositorySearchIndexConsistency()</code>
- </entry>
- <entry>
- Inspect only SearchIndex
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <para>
- All inspection activities and corrupted data details are stored in a file in the app directory and named as per the following convention: <code> report-<replaceable><repository name></replaceable>-<replaceable>dd-MMM-yy-HH-mm</replaceable>.txt </code>.
- </para>
- <para>
- The path to the file will be returned in result message also at the end of the inspection.
- </para>
- <note>
- <title></title>
- <para>
- There are three types of inconsistency (Warning, Error and Index) and two of them are critical (Errors and Index):
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Index faults are marked as "Reindex" and can be fixed by reindexing the workspace.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Errors can only be fixed manually.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Warnings can be a normal situation in some cases and usually production system will still remain fully functional.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </note>
-
- </section>
-
-
+ <title>Checking repository integrity and consistency</title>
+ <section id="sect-Reference_Guide-Checking_repository_integrity_and_consistency-JMX_based_consistency_tool">
+ <title>JMX-based consistency tool</title>
+ <para>
+ It is important to check the integrity and consistency of system regularly, especially if there is no, or stale, backups. The JBoss Enterprise Portal Platform JCR implementation offers an innovative JMX-based complex checking tool.
+ </para>
+ <para>
+ During an inspection, the tool checks every major JCR component, such as persistent data layer and the index. The persistent layer includes JDBC Data Container and Value-Storages if they are configured.
+ </para>
+ <para>
+ The database is verified using the set of complex specialized domain-specific queries. The Value Storage tool checks the existence of, and access to, each file.
+ </para>
+ <para>
+ Access to the check tool is exposed via the JMX interface, with the following operations available:
+ </para>
+ <table id="tabl-Reference_Guide-JMX_based_consistency_tool-Available_methods">
+ <title>Available methods</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ <code>checkRepositoryDataConsistency()</code>
+ </entry>
+ <entry> Inspect full repository data (db, value storage and search index) </entry>
+ </row>
+ <row>
+ <entry>
+ <code>checkRepositoryDataBaseConsistency()</code>
+ </entry>
+ <entry> Inspect only DB </entry>
+ </row>
+ <row>
+ <entry>
+ <code>checkRepositoryValueStorageConsistency()</code>
+ </entry>
+ <entry> Inspect only ValueStorage </entry>
+ </row>
+ <row>
+ <entry>
+ <code>checkRepositorySearchIndexConsistency()</code>
+ </entry>
+ <entry> Inspect only SearchIndex </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ All inspection activities and corrupted data details are stored in a file in the <filename>app</filename> directory and named as per the following convention: <code> report-<replaceable><repository name></replaceable>-<replaceable>dd-MMM-yy-HH-mm</replaceable>.txt </code>.
+ </para>
+ <para>
+ The path to the file will be returned in result message also at the end of the inspection.
+ </para>
+ <note>
+ <para>
+ There are three types of inconsistency (Warning, Error and Index) and two of them are critical (Errors and Index):
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Index faults are marked as "Reindex" and can be fixed by re-indexing the workspace.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Errors can only be fixed manually.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Warnings can be a normal situation in some cases and usually production system will still remain fully functional.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </note>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-and-settings.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-and-settings.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-and-settings.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,296 +1,179 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Fulltext_Search_And_Affecting_Settings">
- <title>Fulltext Search And Affecting Settings</title>
- <formalpara id="form-Reference_Guide-Fulltext_Search_And_Affecting_Settings-Property_content_indexing">
- <title>Property content indexing</title>
- <para>
- Each property of a node (if it is indexable) is processed with the Lucene analyzer and stored in the Lucene index. This is called indexing of a property. It allows fulltext searching of these indexed properties.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Fulltext_Search_And_Affecting_Settings-Lucene_Analyzers">
- <title>Lucene Analyzers</title>
- <para>
- The purpose of analyzers is to transform all strings stored in the index into a well-defined condition. The same analyzer(s) is/are used when searching in order to adapt the query string to the index reality.
- </para>
- <para>
- Therefore, performing the same query using different analyzers can return different results.
- </para>
- <para>
- The example below illustrates how the same string is transformed by different analyzers.
- </para>
- <table id="tabl-Reference_Guide-Lucene_Analyzers-The_quick_brown_fox_jumped_over_the_lazy_dogs">
- <title>"The quick brown fox jumped over the lazy dogs"</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Analyzer
- </entry>
- <entry>
- Parsed
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- org.apache.lucene.analysis.WhitespaceAnalyzer
- </entry>
- <entry>
- [The] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.SimpleAnalyzer
- </entry>
- <entry>
- [the] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.StopAnalyzer
- </entry>
- <entry>
- [quick] [brown] [fox] [jumped] [over] [lazy] [dogs]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.standard.StandardAnalyzer
- </entry>
- <entry>
- [quick] [brown] [fox] [jumped] [over] [lazy] [dogs]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.snowball.SnowballAnalyzer
- </entry>
- <entry>
- [quick] [brown] [fox] [jump] [over] [lazi] [dog]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.standard.StandardAnalyzer (configured without stop word - jcr default analyzer)
- </entry>
- <entry>
- [the] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs]
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <table id="tabl-Reference_Guide-Lucene_Analyzers-XYampZ_Corporation_xyzexample.com">
- <title>"XY&Z Corporation - xyz(a)example.com"</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Analyzer
- </entry>
- <entry>
- Parsed
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- org.apache.lucene.analysis.WhitespaceAnalyzer
- </entry>
- <entry>
- [XY&Z] [Corporation] [-] [xyz(a)example.com]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.SimpleAnalyzer
- </entry>
- <entry>
- [xy] [z] [corporation] [xyz] [example] [com]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.StopAnalyzer
- </entry>
- <entry>
- [xy] [z] [corporation] [xyz] [example] [com]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.standard.StandardAnalyzer
- </entry>
- <entry>
- [xy&z] [corporation] [xyz@example] [com]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.snowball.SnowballAnalyzer
- </entry>
- <entry>
- [xy&z] [corpor] [xyz@exampl] [com]
- </entry>
-
- </row>
- <row>
- <entry>
- org.apache.lucene.analysis.standard.StandardAnalyzer (configured without stop word - jcr default analyzer)
- </entry>
- <entry>
- [xy&z] [corporation] [xyz@example] [com]
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <note>
- <para>
- <literal>StandardAnalyzer</literal> is the default analyzer in the JBoss Enterprise Portal Platform JCR search engine. But it does not use stop words.
- </para>
-
- </note>
- <para>
- You can assign your analyzer as described in <xref linkend="chap-Reference_Guide-Search_Configuration" />.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Fulltext_Search_And_Affecting_Settings-Property_Indexing">
- <title>Property Indexing</title>
- <para>
- Different properties are indexed in different ways and this affects whether it can be searched via fulltext by property or not.
- </para>
- <para>
- Only two property types are indexed as fulltext searcheable: <parameter>STRING</parameter> and <parameter>BINARY</parameter>.
- </para>
- <table id="tabl-Reference_Guide-Property_Indexing-Fulltext_search_by_different_properties">
- <title>Fulltext search by different properties</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- Property Type
- </entry>
- <entry>
- Fulltext search by all properties
- </entry>
- <entry>
- Fulltext search by exact property
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- STRING
- </entry>
- <entry>
- YES
- </entry>
- <entry>
- YES
- </entry>
-
- </row>
- <row>
- <entry>
- BINARY
- </entry>
- <entry>
- YES
- </entry>
- <entry>
- NO
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <para>
- For example, the <literal>jcr:data</literal> property (which is <parameter>BINARY</parameter>) will not be found with a query structured as:
- </para>
-
-<programlisting>SELECT * FROM nt:resource WHERE CONTAINS(jcr:data, 'some string')</programlisting>
- <para>
- This is because, <parameter>BINARY</parameter> is not searchable by fulltext search by exact property.
- </para>
- <para>
- However, the following query <emphasis>will</emphasis> return some results (provided, of course they node contains the targeted data):
- </para>
-
-<programlisting>SELECT * FROM nt:resource WHERE CONTAINS( * , 'some string')</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Fulltext_Search_And_Affecting_Settings-Different_Analyzers">
- <title>Different Analyzers</title>
- <para>
- First of all, we will fill repository by nodes with mixin type 'mix:title' and different values of 'jcr:description' property.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:description = "The quick brown fox jumped over the lazy dogs"
- ├── document2 (mix:title) jcr:description = "Brown fox live in forest."
- └── document3 (mix:title) jcr:description = "Fox is a nice animal."
+ <title>Full Text Search And Affecting Settings</title>
+ <formalpara id="form-Reference_Guide-Fulltext_Search_And_Affecting_Settings-Property_content_indexing">
+ <title>Property content indexing</title>
+ <para>
+ Each property of a node (if it is indexable) is processed with the Lucene analyzer and stored in the Lucene index. This is called indexing of a property. It allows fulltext searching of these indexed properties.
+ </para>
+ </formalpara>
+ <section id="sect-Reference_Guide-Fulltext_Search_And_Affecting_Settings-Lucene_Analyzers">
+ <title>Lucene Analyzers</title>
+ <para>
+ The purpose of analyzers is to transform all strings stored in the index into a well-defined condition. The same analyzer(s) is/are used when searching in order to adapt the query string to the index reality.
+ </para>
+ <para>
+ Therefore, performing the same query using different analyzers can return different results.
+ </para>
+ <para>
+ The example below illustrates how the same string is transformed by different analyzers.
+ </para>
+ <table id="tabl-Reference_Guide-Lucene_Analyzers-The_quick_brown_fox_jumped_over_the_lazy_dogs">
+ <title>"The quick brown fox jumped over the lazy dogs"</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry> Analyzer </entry>
+ <entry> Parsed </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> org.apache.lucene.analysis.WhitespaceAnalyzer </entry>
+ <entry> [The] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.SimpleAnalyzer </entry>
+ <entry> [the] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.StopAnalyzer </entry>
+ <entry> [quick] [brown] [fox] [jumped] [over] [lazy] [dogs] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.standard.StandardAnalyzer </entry>
+ <entry> [quick] [brown] [fox] [jumped] [over] [lazy] [dogs] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.snowball.SnowballAnalyzer </entry>
+ <entry> [quick] [brown] [fox] [jump] [over] [lazi] [dog] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.standard.StandardAnalyzer (configured without stop word - jcr default analyzer) </entry>
+ <entry> [the] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs] </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table id="tabl-Reference_Guide-Lucene_Analyzers-XYampZ_Corporation_xyzexample.com">
+ <title>"XY&Z Corporation - xyz(a)example.com"</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry> Analyzer </entry>
+ <entry> Parsed </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> org.apache.lucene.analysis.WhitespaceAnalyzer </entry>
+ <entry> [XY&Z] [Corporation] [-] [xyz(a)example.com] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.SimpleAnalyzer </entry>
+ <entry> [xy] [z] [corporation] [xyz] [example] [com] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.StopAnalyzer </entry>
+ <entry> [xy] [z] [corporation] [xyz] [example] [com] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.standard.StandardAnalyzer </entry>
+ <entry> [xy&z] [corporation] [xyz@example] [com] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.snowball.SnowballAnalyzer </entry>
+ <entry> [xy&z] [corpor] [xyz@exampl] [com] </entry>
+ </row>
+ <row>
+ <entry> org.apache.lucene.analysis.standard.StandardAnalyzer (configured without stop word - jcr default analyzer) </entry>
+ <entry> [xy&z] [corporation] [xyz@example] [com] </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <note>
+ <para>
+ <literal>StandardAnalyzer</literal> is the default analyzer in the JBoss Enterprise Portal Platform JCR search engine. But it does not use stop words.
+ </para>
+ </note>
+ <para>
+ You can assign your analyzer as described in <xref linkend="chap-Reference_Guide-Search_Configuration"/>.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Fulltext_Search_And_Affecting_Settings-Property_Indexing">
+ <title>Property Indexing</title>
+ <para>
+ Different properties are indexed in different ways and this affects whether it can be searched via fulltext by property or not.
+ </para>
+ <para>
+ Only two property types are indexed as fulltext searcheable: <parameter>STRING</parameter> and <parameter>BINARY</parameter>.
+ </para>
+ <table id="tabl-Reference_Guide-Property_Indexing-Fulltext_search_by_different_properties">
+ <title>Fulltext search by different properties</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry> Property Type </entry>
+ <entry> Fulltext search by all properties </entry>
+ <entry> Fulltext search by exact property </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> STRING </entry>
+ <entry> YES </entry>
+ <entry> YES </entry>
+ </row>
+ <row>
+ <entry> BINARY </entry>
+ <entry> YES </entry>
+ <entry> NO </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ For example, the <literal>jcr:data</literal> property (which is <parameter>BINARY</parameter>) will not be found with a query structured as:
+ </para>
+ <programlisting>SELECT * FROM nt:resource WHERE CONTAINS(jcr:data, 'some string')</programlisting>
+ <para>
+ This is because, <parameter>BINARY</parameter> is not searchable by fulltext search by exact property.
+ </para>
+ <para>
+ However, the following query <emphasis>will</emphasis> return some results (provided, of course they node contains the targeted data):
+ </para>
+ <programlisting>SELECT * FROM nt:resource WHERE CONTAINS( * , 'some string')</programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Fulltext_Search_And_Affecting_Settings-Different_Analyzers">
+ <title>Different Analyzers</title>
+ <para>
+ First of all, we will fill repository by nodes with mixin type 'mix:title' and different values of 'jcr:description' property.
+ </para>
+ <programlisting>root
+ ├── document1 (mix:title) jcr:description = "The quick brown fox jumped over the lazy dogs"
+ ├── document2 (mix:title) jcr:description = "Brown fox live in forest."
+ └── document3 (mix:title) jcr:description = "Fox is a nice animal."
</programlisting>
- <para>
- The example below shows different Analyzers in action. The first instance uses base JCR settings, so the string; "<emphasis>The quick brown fox jumped over the lazy dogs</emphasis>" will be transformed to the set; <emphasis role="bold">{[the] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs] }</emphasis>.
- </para>
-
-<programlisting language="Java" role="Java">// make SQL query
+ <para>
+ The example below shows different Analyzers in action. The first instance uses base JCR settings, so the string; "<emphasis>The quick brown fox jumped over the lazy dogs</emphasis>" will be transformed to the set; <emphasis role="bold">{[the] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dogs] }</emphasis>.
+ </para>
+ <programlisting language="Java" role="Java">// make SQL query
QueryManager queryManager = workspace.getQueryManager();
-String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(jcr:description, 'the')";
+String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(jcr:description, 'the')";
// create query
Query query = queryManager.createQuery(sqlStatement, Query.SQL);
// execute query and fetch result
QueryResult result = query.execute();</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis>.
- </para>
- <para>
- However, if the default analyzer is changed to <literal>org.apache.lucene.analysis.StopAnalyzer</literal>, the repository populated again (the new Analyzer must process node properties) and the same query run, it will return nothing, because stop words like "<emphasis>the</emphasis>" will be excluded from parsed string set.
- </para>
-
- </section>
-
-
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis>.
+ </para>
+ <para>
+ However, if the default analyzer is changed to <literal>org.apache.lucene.analysis.StopAnalyzer</literal>, the repository populated again (the new Analyzer must process node properties) and the same query run, it will return nothing, because stop words like "<emphasis>the</emphasis>" will be excluded from parsed string set.
+ </para>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/jcr-query-usecases.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/jcr-query-usecases.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/jcr-query-usecases.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,62 +1,51 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JCR_Query_Usecases">
- <title>JCR Query Usecases</title>
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Introduction">
- <title>Introduction</title>
- <para>
+ <title>JCR Query Use-cases</title>
+ <section id="sect-Reference_Guide-JCR_Query_Usecases-Introduction">
+ <title>Introduction</title>
+ <para>
The 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>
- <example id="exam-Reference_Guide-Query_Lifecycle-Query_Creation_and_Execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// get QueryManager
-QueryManager queryManager = workspace.getQueryManager();
+ </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>
+ <example id="exam-Reference_Guide-Query_Lifecycle-Query_Creation_and_Execution-SQL">
+ <title>SQL</title>
+ <programlisting language="Java" role="Java">// get QueryManager
+QueryManager queryManager = workspace.getQueryManager(); 
// make SQL query
-Query query = queryManager.createQuery("SELECT * FROM nt:base ", Query.SQL);
+Query query = queryManager.createQuery("SELECT * FROM nt:base ", Query.SQL);
// execute query
QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Query_Lifecycle-Query_Creation_and_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// get QueryManager
+ </example>
+ <example id="exam-Reference_Guide-Query_Lifecycle-Query_Creation_and_Execution-XPath">
+ <title>XPath</title>
+ <programlisting language="Java" role="Java">// get QueryManager
QueryManager queryManager = workspace.getQueryManager();
// make XPath query
-Query query = queryManager.createQuery("//element(*,nt:base)", Query.XPATH);
+Query query = queryManager.createQuery("//element(*,nt:base)", Query.XPATH);
// execute query
QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Query_Lifecycle-Query_Result_Processing">
- <title>Query Result Processing</title>
-
-<programlisting language="Java" role="Java">// fetch query result
+ </example>
+ </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>
+ <para>
To fetch the nodes:
</para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();</programlisting>
- <para>
+ <programlisting language="Java" role="Java">NodeIterator it = result.getNodes();</programlisting>
+ <para>
The results can be formatted in a table:
</para>
-
-<programlisting language="Java" role="Java">// get column names
+ <programlisting language="Java" role="Java">// get column names
String[] columnNames = result.getColumnNames();
// get column rows
RowIterator rowIterator = result.getRows();
@@ -66,38 +55,27 @@
// get all values of row
Value[] values = row.getValues();
}</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Query_Lifecycle-Scoring">
- <title>Scoring</title>
- <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>
+ <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>
+ <para>
The <literal>jcr:score</literal> is calculated as; <literal>(lucene score)*1000f</literal>.
</para>
- <!--<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 in sect-Reference_Guide-Ordering_by_Score />
- </para>-->
-
- </section>
-
-
- </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>
-
-
+ </para>--> </section>
+ </section>
+ <section id="sect-Reference_Guide-JCR_Query_Usecases-Tips_and_tricks">
+ <title>Tips and tricks</title>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tip-nodename-with-number.xml"/>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/searching-repository-content.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/searching-repository-content.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/searching-repository-content.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -8,7 +8,7 @@
<section id="sect-Reference_Guide-Searching_Repository_Content-Introduction">
<title>Introduction</title>
<para>
- You can find the JCR configuration file here: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/portal/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
+ You can find the JCR configuration file here: <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/portal/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
</para>
<para>
Please refer to <xref linkend="chap-Reference_Guide-Search_Configuration"/> for more information about index configuration.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/statistics.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/statistics.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/statistics.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -1,297 +1,189 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-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>
+ <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.
</para>
- <para>
+ <para>
These statistics will then allow you to identify, without using any profiler, what is abnormally slow in this layer which could help diagnose, and fix, a problem.
</para>
- <para>
+ <para>
If 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.
</para>
- <para>
+ <para>
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>
+ <itemizedlist>
+ <listitem>
+ <para>
The minimum time spent into the method.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The maximum time spent into the method.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The average time spent into the method.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The total amount of time spent into the method.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The total amount of time the method has been called.
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- Those figures are also available globaly for all the methods which gives us the global behavior of this layer.
+ </listitem>
+ </itemizedlist>
+ <para>
+ Those figures are also available globally 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 <parameter>JDBCWorkspaceDataContainer.statistics.enabled</parameter> to <emphasis>true</emphasis>. The corresponding CSV file is <filename>StatisticsJDBCStorageConnection-${creation-timestamp}.csv</filename> for more details about how the csv files are managed, please refer to the section dedicated to the statistics manager.
+ <para>
+ If you want to enable the statistics, you just need to set the JVM parameter called <parameter>JDBCWorkspaceDataContainer.statistics.enabled</parameter> to <emphasis>true</emphasis>. The corresponding CSV file is <filename>StatisticsJDBCStorageConnection-${creation-timestamp}.csv</filename> for more details about how the CSV files are managed, please refer to the section dedicated to the statistics manager.
</para>
- <para>
+ <para>
The format of each column header is <replaceable>${method-alias}</replaceable>-<replaceable>${metric-alias}</replaceable>. The metric alias are described in the statistics manager section.
</para>
- <para>
+ <para>
The name of the category of statistics corresponding to these statistics is <literal>JDBCStorageConnection</literal>, 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- close
- </entry>
- <entry>
- This is the alias for the method <emphasis>close().</emphasis>
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </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>
+ <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> 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> 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> 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> 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> 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> 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> 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> 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> close </entry>
+ <entry> This is the alias for the method <emphasis>close().</emphasis></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </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 JCR to better fit your requirements.
</para>
- <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>
+ <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="https://repository.jboss.org/nexus/content/groups/public/org/exoplatform/...">https://repository.jboss.org/nexus/content/groups/public/org/exoplatform/...</ulink>.
+ <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="https://repository.jboss.org/nexus/content/groups/public/org/exoplatform/...">https://repository.jboss.org/nexus/content/groups/public/org/exoplatform/...</ulink>.
</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"><uri>http://repo2.maven.org/maven2/org/aspectj/aspectjrt</uri></ulink>.
+ </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">
+ <uri>http://repo2.maven.org/maven2/org/aspectj/aspectjrt</uri>
+ </ulink>.
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
You will also need to get <filename>aspectjweaver-1.6.8.jar</filename> from the main maven repository <ulink url="http://repo2.maven.org/maven2/org/aspectj/aspectjweaver">http://repo2.maven.org/maven2/org/aspectj/aspectjweaver</ulink>.
</para>
- <para>
+ <para>
At this stage, to enable the statistics on the JCR API accesses, you will need to add the JVM parameter <parameter>-javaagent:${pathto}/aspectjweaver-1.6.8.jar</parameter> to your command line, for more details please refer to <ulink url="http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html">http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html</ulink>.
</para>
- <para>
+ <para>
By default, the configuration will collect statistics on all the methods of the internal interfaces <literal>org.exoplatform.services.jcr.core.ExtendedSession</literal> and <literal>org.exoplatform.services.jcr.core.ExtendedNode</literal>, and the JCR API interface <literal>javax.jcr.Property</literal>.
</para>
- <para>
+ <para>
To add and/or remove some interfaces to monitor, you have two configuration files to change that are bundled into the jar <literal>exo.jcr.component.statistics-X.Y.Z</literal>.jar, which are <filename>conf/configuration.xml</filename> and <filename>META-INF/aop.xml</filename>.
</para>
- <para>
+ <para>
The file content below is the content of <filename>conf/configuration.xml</filename> 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 <literal>targetInterfaces</literal>.
</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">
+ <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">
<component>
<type>org.exoplatform.services.jcr.statistics.JCRAPIAspectConfig</type>
@@ -305,197 +197,123 @@
</init-params>
</component>
</configuration></programlisting>
- <para>
+ <para>
The file content below is the content of <filename>META-INF/aop.xml</filename> 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 <literal>JCRAPIPointcut</literal>.
</para>
- <para>
+ <para>
By default only JCR API calls from the <literal>exoplatform</literal> packages are taken into account. This filter can be modified to add other package names.
</para>
-
-<programlisting language="XML" role="XML"><aspectj>
+ <programlisting language="XML" role="XML"><aspectj>
<aspects>
- <concrete-aspect name="org.exoplatform.services.jcr.statistics.JCRAPIAspectImpl" extends="org.exoplatform.services.jcr.statistics.JCRAPIAspect">
- <pointcut name="JCRAPIPointcut"
- expression="(target(org.exoplatform.services.jcr.core.ExtendedSession) || target(org.exoplatform.services.jcr.core.ExtendedNode) || target(javax.jcr.Property)) && call(public * *(..))" />
+ <concrete-aspect name="org.exoplatform.services.jcr.statistics.JCRAPIAspectImpl" extends="org.exoplatform.services.jcr.statistics.JCRAPIAspect">
+ <pointcut name="JCRAPIPointcut"
+ expression="(target(org.exoplatform.services.jcr.core.ExtendedSession) || target(org.exoplatform.services.jcr.core.ExtendedNode) || target(javax.jcr.Property)) && call(public * *(..))" />
</concrete-aspect>
</aspects>
- <weaver options="-XnoInline">
- <include within="org.exoplatform..*" />
+ <weaver options="-XnoInline">
+ <include within="org.exoplatform..*" />
</weaver>
</aspectj></programlisting>
- <para>
+ <para>
The corresponding CSV files are of type <filename>Statistics<replaceable>${interface-name}</replaceable>-<replaceable>${creation-timestamp}</replaceable>.csv</filename> for more details about how the <emphasis>CSV</emphasis> files are managed, please refer to the section dedicated to the statistics manager.
</para>
- <para>
+ <para>
The format of each column header is <replaceable>${method-alias}</replaceable>-<replaceable>${metric-alias}</replaceable>. The method alias will be of type <replaceable>${method-name}(semicolon-delimited-list-of-parameter-types-to-be-compatible-with-the-CSV-format)</replaceable>.
</para>
- <para>
+ <para>
The metric alias are described in the statistics manager section.
</para>
- <para>
+ <para>
The name of the category of statistics corresponding to these statistics is the simple name of the monitored interface (e.g. <literal>ExtendedSession</literal> for <literal>org.exoplatform.services.jcr.core.ExtendedSession</literal>), this name is mostly needed to access to the statistics through JMX.
</para>
- <note>
- <title>Performance Consideration</title>
- <para>
+ <note>
+ <title>Performance Consideration</title>
+ <para>
Please note that this feature will affect the performances of eXo JCR so it must be used with caution.
</para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-eXo_JCR_statistics-Statistics_Manager">
- <title>Statistics Manager</title>
- <para>
+ </note>
+ </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>
+ <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>
+ <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>
- 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>
- Times
- </entry>
- <entry>
- The total amount of times the method has been called.
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
+ <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> 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> Times </entry>
+ <entry> The total amount of times the method has been called. </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
You can disable the persistence of the statistics by setting the JVM parameter called <parameter>JCRStatisticsManager.persistence.enabled</parameter> to <literal>false</literal>. It is set to <literal>true</literal> by default.
</para>
- <para>
+ <para>
You can also define the period of time between each record (that is, line of data into the file) by setting the JVM parameter called <parameter>JCRStatisticsManager.persistence.timeout</parameter> to your expected value expressed in milliseconds. It is set to <literal>5000</literal> by default.
</para>
- <para>
+ <para>
You can also access to the statistics via JMX. The available methods are:
</para>
- <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 (<literal>JDBCStorageConnection</literal> for example) 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 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 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 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 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>
-
- </tbody>
-
- </tgroup>
-
- </table>
+ <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 (<literal>JDBCStorageConnection</literal> for example) 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 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 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 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 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>
+ </tbody>
+ </tgroup>
+ </table>
The full name of the related MBean is <literal>xo:service=statistic, view=jcr</literal>.
</para>
-
- </section>
-
-
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-07-11 06:00:45 UTC (rev 8781)
@@ -59,7 +59,7 @@
<section id="sect-Reference_Guide-Configurations_Steps-Do_not_bind_datasources_explicitly">
<title>Do not bind datasources explicitly</title>
<para>
- Do not let the portal explicitly bind datasources. Edit the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/conf/gatein/configuration.properties</filename> and comment out the following rows in the JCR section:
+ Do not let the portal explicitly bind datasources. Edit the <filename><replaceable>EPP_DIST</replaceable>/jboss-as/server/<replaceable>PROFILE</replaceable>/conf/gatein/configuration.properties</filename> and comment out the following rows in the JCR section:
</para>
<programlisting>#gatein.jcr.datasource.driver=org.hsqldb.jdbcDriver
#gatein.jcr.datasource.url=jdbc:hsqldb:file:${gatein.db.data.dir}/data/jdbcjcr_${name}
Modified: epp/docs/branches/5.2/Reference_Guide/publican.cfg
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/publican.cfg 2012-07-10 12:17:37 UTC (rev 8780)
+++ epp/docs/branches/5.2/Reference_Guide/publican.cfg 2012-07-11 06:00:45 UTC (rev 8781)
@@ -4,4 +4,6 @@
type: Book
git_branch: docs-rhel-6
show_remarks: 1
+# web formats turns of PDF generation, because FOP is causing builds to die. Stupid FOP. Enable when Publican 3 is released
+web_formats: "epub,html,html-single"
12 years, 5 months
gatein SVN: r8780 - in epp/portal/branches/EPP_5_2_Branch/component/common/src: test/java/org/exoplatform/commons/utils and 1 other directory.
by do-not-reply@jboss.org
Author: ppalaga
Date: 2012-07-10 08:17:37 -0400 (Tue, 10 Jul 2012)
New Revision: 8780
Modified:
epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/utils/I18N.java
epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/utils/TestI18N.java
Log:
Bug 794469 - I18N locale identifier parsing code does not support all valid cases in Java 7
Modified: epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/utils/I18N.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/utils/I18N.java 2012-07-09 04:34:49 UTC (rev 8779)
+++ epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/utils/I18N.java 2012-07-10 12:17:37 UTC (rev 8780)
@@ -129,14 +129,26 @@
}
else
{
- for (int i = index + 1;i < s.length();i++)
+ final String variant;
+ if ("ja_JP_JP_#u-ca-japanese".equals(s))
{
- if (!isLetter(s.charAt(i)))
+ variant = "JP";
+ }
+ else if ("th_TH_TH_#u-nu-thai".equals(s))
+ {
+ variant = "TH";
+ }
+ else
+ {
+ for (int i = index + 1;i < s.length();i++)
{
- throw new IllegalArgumentException();
+ if (!isLetter(s.charAt(i)))
+ {
+ throw new IllegalArgumentException("Invalid Java Locale identifier: '" + s + "'");
+ }
}
+ variant = s.substring(index + 1);
}
- String variant = s.substring(index + 1);
return new Locale(lang, country, variant);
}
}
Modified: epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/utils/TestI18N.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/utils/TestI18N.java 2012-07-09 04:34:49 UTC (rev 8779)
+++ epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/utils/TestI18N.java 2012-07-10 12:17:37 UTC (rev 8780)
@@ -98,12 +98,82 @@
{
for (Locale expected : Locale.getAvailableLocales())
{
- String s = expected.toString();
- Locale parsed = I18N.parseJavaIdentifier(s);
- assertEquals(expected, parsed);
+ if (isJava6Compatible(expected))
+ {
+ String s = expected.toString();
+ Locale parsed = I18N.parseJavaIdentifier(s);
+ assertEquals(expected, parsed);
+ }
}
}
+ /**
+ * Tests if it is possible to construct the given locale using means
+ * available in Java 6 only.
+ *
+ * The given locale instance is considered Java 6 compatible if and only if
+ * no script, calendar, etc. fields are set that are there in the
+ * {@link Locale} class since Java 7 only. However, there are two hard-coded
+ * exceptions to this rule, for which this method returns {@code true}: (i)
+ * "ja_JP_JP_#u-ca-japanese" and (ii) "th_TH_TH_#u-nu-thai". These two
+ * exceptions are there due to the fact that new Locale("ja", "JP",
+ * "JP").toString() and new Locale("th", "TH", "TH").toString() return
+ * "ja_JP_JP_#u-ca-japanese" and "th_TH_TH_#u-nu-thai" respectively in Java
+ * 7; see <a
+ * href="http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html">Java
+ * 7 Locale, Compatibility Section</a>.
+ *
+ * The result is computed through comparing the expected Java 6 locale ID
+ * (e.g. "en_GB") with the result of {@link Locale#toString()}. If the output
+ * of of {@link Locale#toString()} matches the expected ID (i.e. something of
+ * the form {language}[_[{country}][_{variant}]]) or if
+ * {@link Locale#toString()} equals one of "ja_JP_JP_#u-ca-japanese" or
+ * "th_TH_TH_#u-nu-thai" then {@code true} is returned. Otherwise this method
+ * returns {@code false}.
+ *
+ * @param locale
+ * @return {@code true} or {@code false}
+ */
+ private static boolean isJava6Compatible(Locale locale)
+ {
+ StringBuilder localeIdBuilder = new StringBuilder(16);
+ localeIdBuilder.append(locale.getLanguage());
+
+ String country = locale.getCountry();
+ boolean hasCountry = country != null && country.length() > 0;
+ String variant = locale.getVariant();
+ boolean hasVariant = variant != null && variant.length() > 0;
+ if (hasCountry || hasVariant)
+ {
+ localeIdBuilder.append('_');
+ if (hasCountry)
+ {
+ localeIdBuilder.append(country);
+ }
+ if (hasVariant)
+ {
+ localeIdBuilder.append('_').append(variant);
+ }
+ }
+ String expectedJava6LocaleId = localeIdBuilder.toString();
+ String foundLocaleId = locale.toString();
+ if ("ja_JP_JP".equals(expectedJava6LocaleId)
+ && "ja_JP_JP_#u-ca-japanese".equals(foundLocaleId))
+ {
+ return true;
+ }
+ else if ("th_TH_TH".equals(expectedJava6LocaleId)
+ && "th_TH_TH_#u-nu-thai".equals(foundLocaleId))
+ {
+ return true;
+ }
+ else
+ {
+ return expectedJava6LocaleId.equals(foundLocaleId);
+ }
+
+ }
+
private void assertNotJavaIdentifier(String s)
{
try
12 years, 5 months
gatein SVN: r8779 - in epp/docs/branches/5.2/Reference_Guide/en-US: extras/Advanced_Development_JCR_Configuration and 11 other directories.
by do-not-reply@jboss.org
Author: jaredmorgs
Date: 2012-07-09 00:34:49 -0400 (Mon, 09 Jul 2012)
New Revision: 8779
Added:
epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml
Removed:
epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml_code
Modified:
epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/JSPHelloUserPortlet.java
epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/default249.java
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Advanced_Concepts.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationTokenConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PasswordEncryption.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalPermissionConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/RTLFramework.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/cluster-config.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/search-configuration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/searching-repository-content.xml
Log:
BZ#812412 - Normalized the JBOSS_HOME references to EPP_HOME, and rolled in cumulative feedback from the devs as per the ticket comments.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -5,7 +5,7 @@
]>
<bookinfo id="book-Reference_Guide-Reference_Guide">
<title>Reference Guide</title>
- <subtitle>An in-depth guide to Enterprise Portal Platform 5.2, and its patch releases.f</subtitle>
+ <subtitle>An in-depth guide to Enterprise Portal Platform 5.2, and its patch releases.</subtitle>
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.2</edition>
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml (from rev 8778, epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml_code)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -0,0 +1,83 @@
+ <component>
+ <key>org.exoplatform.services.jcr.RepositoryService</key>
+ <type>org.exoplatform.services.jcr.impl.RepositoryServiceImpl</type>
+ <component-plugins>
+ <component-plugin>
+ <name>add.namespaces</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.jcr.impl.AddNamespacesPlugin</type>
+ <init-params>
+ <properties-param>
+ <name>namespaces</name>
+ <property name="test" value="http://www.apache.org/jackrabbit/test"/>
+ <property name="exojcrtest" value="http://www.exoplatform.org/jcr/test/1.0"/>
+ <property name="rma" value="http://www.rma.com/jcr/"/>
+ <property name="metadata" value="http://www.exoplatform.com/jcr/metadata/1.1/"/>
+ <property name="dc" value="http://purl.org/dc/elements/1.1/"/>
+ <property name="publication" value="http://www.exoplatform.com/jcr/publication/1.1/"/>
+ </properties-param>
+ </init-params>
+ </component-plugin>
+ <component-plugin>
+ <name>add.nodeType</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.jcr.impl.AddNodeTypePlugin</type>
+ <init-params>
+ <values-param>
+ <name>autoCreatedInNewRepository</name>
+ <description>Node types configuration file</description>
+ <value>jar:/conf/test/nodetypes-tck.xml</value>
+ <value>jar:/conf/test/nodetypes-impl.xml</value>
+ <value>jar:/conf/test/nodetypes-usecase.xml</value>
+ <value>jar:/conf/test/nodetypes-config.xml</value>
+ <value>jar:/conf/test/nodetypes-config-extended.xml</value>
+ <value>jar:/conf/test/wcm-nodetypes.xml</value>
+ <value>jar:/conf/test/nodetypes-publication-config.xml</value>
+ <value>jar:/conf/test/publication-plugins-nodetypes-config.xml</value>
+ </values-param>
+
+ <values-param>
+ <name>testInitNodeTypesRepository</name>
+ <description>
+ Node types configuration file for repository with name testInitNodeTypesRepository
+ </description>
+ <value>jar:/conf/test/nodetypes-test.xml</value>
+ </values-param>
+
+ <values-param>
+ <name>testInitNodeTypesRepositoryTest2</name>
+ <description>
+ Node types configuration file for repository with name testInitNodeTypesRepositoryTest2
+ </description>
+ <value>jar:/conf/test/nodetypes-test2.xml</value>
+ </values-param>
+
+ <!--values-param>
+ <name>testInitNodeTypesRepositoryTest3</name>
+ <description>Node types from ext. Needed bacause core starup earlie than ext</description>
+ <value>jar:/conf/test/nodetypes-test3_ext.xml</value>
+ </values-param-->
+
+ </init-params>
+ </component-plugin>
+ </component-plugins>
+ </component>
+
+ <component>
+ <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
+ <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
+ <init-params>
+ <value-param>
+ <name>conf-path</name>
+ <description>JCR configuration file</description>
+ <value>jar:/conf/standalone/test-jcr-config-jbc.xml</value>
+ </value-param>
+ <properties-param>
+ <name>working-conf</name>
+ <description>working-conf</description>
+ <property name="dialect" value="auto" />
+ <property name="source-name" value="jdbcjcr"/>
+ <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister"/>
+ </properties-param>
+ </init-params>
+ </component>
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml_code
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml_code 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml_code 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,83 +0,0 @@
- <component>
- <key>org.exoplatform.services.jcr.RepositoryService</key>
- <type>org.exoplatform.services.jcr.impl.RepositoryServiceImpl</type>
- <component-plugins>
- <component-plugin>
- <name>add.namespaces</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.jcr.impl.AddNamespacesPlugin</type>
- <init-params>
- <properties-param>
- <name>namespaces</name>
- <property name="test" value="http://www.apache.org/jackrabbit/test"/>
- <property name="exojcrtest" value="http://www.exoplatform.org/jcr/test/1.0"/>
- <property name="rma" value="http://www.rma.com/jcr/"/>
- <property name="metadata" value="http://www.exoplatform.com/jcr/metadata/1.1/"/>
- <property name="dc" value="http://purl.org/dc/elements/1.1/"/>
- <property name="publication" value="http://www.exoplatform.com/jcr/publication/1.1/"/>
- </properties-param>
- </init-params>
- </component-plugin>
- <component-plugin>
- <name>add.nodeType</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.jcr.impl.AddNodeTypePlugin</type>
- <init-params>
- <values-param>
- <name>autoCreatedInNewRepository</name>
- <description>Node types configuration file</description>
- <value>jar:/conf/test/nodetypes-tck.xml</value>
- <value>jar:/conf/test/nodetypes-impl.xml</value>
- <value>jar:/conf/test/nodetypes-usecase.xml</value>
- <value>jar:/conf/test/nodetypes-config.xml</value>
- <value>jar:/conf/test/nodetypes-config-extended.xml</value>
- <value>jar:/conf/test/wcm-nodetypes.xml</value>
- <value>jar:/conf/test/nodetypes-publication-config.xml</value>
- <value>jar:/conf/test/publication-plugins-nodetypes-config.xml</value>
- </values-param>
-
- <values-param>
- <name>testInitNodeTypesRepository</name>
- <description>
- Node types configuration file for repository with name testInitNodeTypesRepository
- </description>
- <value>jar:/conf/test/nodetypes-test.xml</value>
- </values-param>
-
- <values-param>
- <name>testInitNodeTypesRepositoryTest2</name>
- <description>
- Node types configuration file for repository with name testInitNodeTypesRepositoryTest2
- </description>
- <value>jar:/conf/test/nodetypes-test2.xml</value>
- </values-param>
-
- <!--values-param>
- <name>testInitNodeTypesRepositoryTest3</name>
- <description>Node types from ext. Needed bacause core starup earlie than ext</description>
- <value>jar:/conf/test/nodetypes-test3_ext.xml</value>
- </values-param-->
-
- </init-params>
- </component-plugin>
- </component-plugins>
- </component>
-
- <component>
- <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
- <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
- <init-params>
- <value-param>
- <name>conf-path</name>
- <description>JCR configuration file</description>
- <value>jar:/conf/standalone/test-jcr-config-jbc.xml</value>
- </value-param>
- <properties-param>
- <name>working-conf</name>
- <description>working-conf</description>
- <property name="dialect" value="auto" />
- <property name="source-name" value="jdbcjcr"/>
- <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister"/>
- </properties-param>
- </init-params>
- </component>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/JSPHelloUserPortlet.java
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/JSPHelloUserPortlet.java 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/JSPHelloUserPortlet.java 2012-07-09 04:34:49 UTC (rev 8779)
@@ -13,21 +13,26 @@
public class JSPHelloUserPortlet extends GenericPortlet
{
-
+// Comment #1
public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException
{
+// Comment #2
String sYourName = (String) request.getParameter("yourname");
if (sYourName != null)
{
request.setAttribute("yourname", sYourName);
+// Comment #3
PortletRequestDispatcher prd =
getPortletContext().getRequestDispatcher("/jsp/hello.jsp");
+// Comment #4
prd.include(request, response);
}
else
{
- PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher("/jsp/welcome.jsp");
+//Code split between lines. Direct copy will result in parse errors.
+ PortletRequestDispatcher prd = getPortletContext().
+ getRequestDispatcher("/jsp/welcome.jsp");
prd.include(request, response);
}
}
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/default249.java
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/default249.java 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/default249.java 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,7 +1,10 @@
...
+// Comment #1
public void processAction(ActionRequest aRequest, ActionResponse aResponse) throws PortletException, IOException, UnavailableException
{
+// Comment #2
String sYourname = (String) aRequest.getParameter("yourname");
+// Comment #3
aResponse.setRenderParameter("yourname", sYourname);
}
...
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Advanced_Concepts.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Advanced_Concepts.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Advanced_Concepts.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -165,7 +165,7 @@
</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>
+ <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>
</tbody>
</tgroup>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -14,12 +14,12 @@
<procedure>
<step>
<para>
- Services default <envar>RootContainer</envar> configurations from JAR files <filename><replaceable><JBOSS_HOME></replaceable>/conf/gatein/configuration.xml</filename>.
+ Services default <envar>RootContainer</envar> configurations from JAR files <filename><replaceable>EPP_HOME</replaceable>/conf/gatein/configuration.xml</filename>.
</para>
</step>
<step>
<para>
- External <envar>RootContainer</envar> configuration can be found at <filename><replaceable><JBOSS_HOME></replaceable>/conf/gatein/configuration.xml</filename>.
+ External <envar>RootContainer</envar> configuration can be found at <filename><replaceable>EPP_HOME</replaceable>/conf/gatein/configuration.xml</filename>.
</para>
</step>
<step>
@@ -34,7 +34,7 @@
</step>
<step>
<para>
- External configuration for services of named portal can be found at <filename><replaceable><JBOSS_HOME></replaceable>/conf/gatein/configuration.xml</filename>.
+ External configuration for services of named portal can be found at <filename><replaceable>EPP_HOME</replaceable>/conf/gatein/configuration.xml</filename>.
</para>
</step>
</procedure>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -21,7 +21,7 @@
All <filename>configuration.xml</filename> files located at <filename>conf/portal/configuration.xml</filename> in the classpath will have their services configured at the <literal>PortalContainer</literal> scope.
</para>
<para>
- Additionally, <emphasis role="bold">portal extensions</emphasis> can use configuration information stored in <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/configuration.xml</filename>, and will also have their services configured in the <literal>PortalContainer</literal> scope.
+ Additionally, <emphasis role="bold">portal extensions</emphasis> can use configuration information stored in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/configuration.xml</filename>, and will also have their services configured in the <literal>PortalContainer</literal> scope.
</para>
<para>
When eXo kernel reads a configuration, it loads the file from the kernel jar using the classloader and does not use an internet connection to resolve the file.
@@ -51,8 +51,7 @@
<para>
The configuration found inside the jar file is considered as the default configuration. If you want to override this default configuration you can do it in different places outside the jar. When the container finds several configurations for the same service, the configuration which is found later replaces completely the one found previously. Let's call this the <emphasis>configuration override mechanism</emphasis>.
</para>
- <para>
- After deploying you find the configuration.xml file in webapps/portal/WEB-INF/conf Use component registration tags. Let's look at the key tag that defines the interface and the type tag that defines the implementation. Note that the key tag is not mandatory, but it improves performance.
+ <para>All custom configuration is made in the <filename>webapps/portal/WEB-INF/conf/configuration.xml</filename> file. Use <component> elements to contain the configuration information. The <key> element defines the interface, and the <type> tag defines the implementation. While the <key> tag is not mandatory, it can lead to a small performance improvement.
</para>
<programlisting language="XML" role="XML"><!-- Portlet container hooks -->
<component>
@@ -151,7 +150,7 @@
</para>
</note>
<para>
- <emphasis role="bold">HashTable</emphasis> The <classname>RootContainer</classname> creates a java <classname>HashTable</classname> which contains key-value pairs for the services. The qualified interface name of each service is used as key for the hashtable. Hopefully you still remember that the <parameter><key></parameter> tag of the configuration file contains the interface name? The value of each hashtable pair is an object that contains the service configuration (yes, this means the whole structure between the <parameter><component></parameter> tags of your <filename>configuration.xml</filename> file).
+ The <classname>RootContainer</classname> creates a java <classname>HashTable</classname> which contains key-value pairs for the services. The qualified interface name of each service is used as key for the hashtable. Hopefully you still remember that the <parameter><key></parameter> tag of the configuration file contains the interface name? The value of each hashtable pair is an object that contains the service configuration (yes, this means the whole structure between the <parameter><component></parameter> tags of your <filename>configuration.xml</filename> file).
</para>
<para>
The <classname>RootContainer</classname> runs over all jar files you find in <emphasis>exo-tomcat/lib</emphasis> and looks if there is a configuration file at <emphasis>/conf/configuration.xml</emphasis>, the services configured in this file are added to the hashtable. That way - at the end of this process - the default configurations for all services are stored in the hashtable.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -44,7 +44,7 @@
Authentication workflow consists of HTTP requests and redirects which include handshakes. Source code related to authentication is partially included in the WCI module, as the authentication process differs on <ulink url="http://www.jcp.org/en/jsr/detail?id=154" type="http">Servlet 2.5</ulink> containers and <ulink url="http://www.jcp.org/en/jsr/detail?id=315" type="http">Servlet 3.0</ulink> containers.
</para>
<para>
- First you can see in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> that authentication is triggered by accessing a secured URL:
+ First you can see in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> that authentication is triggered by accessing a secured URL:
</para>
<programlisting language="XML" role="XML">
<![CDATA[
@@ -87,7 +87,7 @@
]]>
</programlisting>
<para>
- <literal>InitiateLoginServlet</literal> simply redirects user to login page placed in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename>.
+ <literal>InitiateLoginServlet</literal> simply redirects user to login page placed in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename>.
<mediaobject>
<imageobject role="html">
<imagedata align="center" fileref="images/AuthenticationAndIdentity/Overview/loginScreen.png" format="PNG"/>
@@ -98,7 +98,7 @@
</mediaobject>
</para>
<para>
- Changes to the appearance of this login page can be made in this JSP file. You can also change image or CSS placed in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/login/skin</filename> .
+ Changes to the appearance of this login page can be made in this JSP file. You can also change image or CSS placed in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/login/skin</filename> .
</para>
<para>
After a user submits the login form, they are redirected to the login URL; <ulink url="http://localhost:8080/portal/login?username=root&password=gtn&ini..." type="http">http://localhost:8080/portal/login?username=root&password=gtn&ini...</ulink>.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationTokenConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationTokenConfiguration.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationTokenConfiguration.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,124 +1,101 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Authentication_Token_Configuration">
- <title>Authentication Token Configuration</title>
- <section id="sect-Reference_Guide-Authentication_Token_Configuration-The_Token_Service">
- <title>The Token Service</title>
- <para>
+ <title>Authentication Token Configuration</title>
+ <section id="sect-Reference_Guide-Authentication_Token_Configuration-The_Token_Service">
+ <title>The Token Service</title>
+ <para>
The <emphasis>Token Service</emphasis> is used in authentication.
</para>
- <para>
+ <para>
The token system prevents user account information being sent in clear text mode within inbound requests. This increases authentication security.
</para>
- <para>
+ <para>
The token service allows administrators to create, delete, retrieve and clean tokens as required. The service also defines a validity period of any given token. The token becomes invalid once this period expires.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Authentication_Token_Configuration-Implementing_the_Token_Service_API">
- <title>Implementing the Token Service API</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Authentication_Token_Configuration-Implementing_the_Token_Service_API">
+ <title>Implementing the Token Service API</title>
+ <para>
All token services used in JBoss Enterprise Portal Platform authentication must be implemented by subclassing an <emphasis role="bold">AbstractTokenService</emphasis> abstract class.
</para>
- <para>
+ <para>
The following <emphasis role="bold">AbstractTokenService</emphasis> methods represent the contract between authentication runtime, and a token service implementation.
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/Authentication_Identity_AuthenticationTokenConfiguration/default94.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_AuthenticationTokenConfiguration/default94.java" parse="text"/></programlisting>
+ <para>
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services">
- <title>Configuring Token Services</title>
- <para>
- Token services configuration includes specifying the token validity period. The token service is configured as a portal component using the <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/common/autologin-configuration.xml</filename> file.
+ </section>
+ <section id="sect-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services">
+ <title>Configuring Token Services</title>
+ <para>
+ Token services configuration includes specifying the token validity period. The token service is configured as a portal component using the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/common/autologin-configuration.xml</filename> file.
</para>
- <para>
+ <para>
In the XML example below, <emphasis>CookieTokenService</emphasis> is a subclass of <emphasis role="bold">AbstractTokenService</emphasis> so it has a property which specifies the validity period of the token.
</para>
- <para>
+ <para>
The token service will initialize this validity property by looking for an <parameter>init-param</parameter> named <emphasis role="bold">service.configuration</emphasis>.
</para>
- <para>
+ <para>
This property must have three values.
</para>
- <programlistingco>
- <areaspec>
- <area coords="7 50" id="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-name" />
- <area coords="8 50" id="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-time" />
- <area coords="9 50" id="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-unit" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity_AuthenticationTokenConfiguration/default95.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-name">
- <para>
+ <programlistingco>
+ <areaspec>
+ <area coords="7 50" id="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-name"/>
+ <area coords="8 50" id="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-time"/>
+ <area coords="9 50" id="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-unit"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_AuthenticationTokenConfiguration/default95.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-name">
+ <para>
Service name
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-time">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-time">
+ <para>
Amount of time
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-unit">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Authentication_Token_Configuration-Configuring_Token_Services-unit">
+ <para>
Unit of time
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <para>
In this case, the service name is <emphasis role="bold">jcr-token</emphasis> and the token expiration time is one week.
</para>
- <para>
+ <para>
JBoss Enterprise Portal Platform supports <emphasis>four</emphasis> time units:
</para>
- <orderedlist numeration="arabic">
- <listitem>
- <para>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
<parameter>SECOND</parameter>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>MINUTE</parameter>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>HOUR</parameter>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>DAY</parameter>
</para>
-
- </listitem>
-
- </orderedlist>
-
- </section>
-
-
+ </listitem>
+ </orderedlist>
+ </section>
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -8,7 +8,7 @@
<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.
+ For ease of readability the following section uses the notational device <replaceable>ID_HOME</replaceable> to represent the file path <filename><replaceable>EPP_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>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PasswordEncryption.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PasswordEncryption.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PasswordEncryption.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,77 +1,62 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Book_Name.ent">
%BOOK_ENTITIES;
]>
-
- <section id="sect-Reference_Guide-Authentication_and_Identity-Password_Encryption">
- <title>Password Encryption</title>
- <!-- The warning and first listitem below were relocated from sect-Reference_Guide-Authentication_Token_Configuration as security and plain-text password issues were being expanded on (from JBEPP-610) --> <warning>
- <title>Username and passwords stored in clear text</title>
- <para>
+<section id="sect-Reference_Guide-Authentication_and_Identity-Password_Encryption">
+ <title>Password Encryption</title>
+<!-- The warning and first listitem below were relocated from sect-Reference_Guide-Authentication_Token_Configuration as security and plain-text password issues were being expanded on (from JBEPP-610) --> <warning>
+ <title>Username and passwords stored in clear text</title>
+ <para>
The <emphasis>Remember Me</emphasis> feature of JBoss Enterprise Portal Platform uses a token mechanism to be able to authenticate returning users without requiring an explicit login. However, to be able to authenticate these users, the token needs to store the username and password in clear text in the JCR.
</para>
-
- </warning>
- <para>
+ </warning>
+ <para>
Administrators have two options available to ameliorate this risk:
</para>
- <orderedlist>
- <listitem>
- <para>
- The <emphasis>Remember Me</emphasis> feature can be disabled by removing the corresponding checkbox in: <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename> and <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/groovy/portal/webui/UILoginForm.gtmpl</filename>.
+ <orderedlist>
+ <listitem>
+ <para>
+ The <emphasis>Remember Me</emphasis> feature can be disabled by removing the corresponding checkbox in: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename> and <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/groovy/portal/webui/UILoginForm.gtmpl</filename>.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Passwords can be encoded prior to being saved to the JCR. This option requires administrators to provide a custom subclass of <parameter>org.exoplatform.web.security.security.AbstractCodec</parameter> and set up a codec implementation with <parameter>CookieTokenService</parameter>:
</para>
- <procedure id="proc-Reference_Guide-Password_Encryption-Encrypt_Password_in_JCR">
- <title>Encrypt Password in JCR</title>
- <step>
- <para>
+ <procedure id="proc-Reference_Guide-Password_Encryption-Encrypt_Password_in_JCR">
+ <title>Encrypt Password in JCR</title>
+ <step>
+ <para>
Create a javaclass similar to:
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/Authentication_Identity/ExampleCodec.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </step>
- <step>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity/ExampleCodec.java" parse="text"/></programlisting>
+ </step>
+ <step>
+ <para>
Compile the class and package it into a jar file. For this example we will call the jar file <filename>codec-example.jar</filename>.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Create a <filename>conf/portal/configuration.xml</filename> file within the <filename>codec-example.jar</filename> similar to the example below. This allows the portal kernel to find and use the new codec implementation.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity/configuration.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </step>
- <step>
- <para>
- Deploy the <filename>codec-example.jar</filename> into your <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/lib/</filename> directory.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity/configuration.xml" parse="text"/></programlisting>
+ </step>
+ <step>
+ <para>
+ Deploy the <filename>codec-example.jar</filename> into your <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib/</filename> directory.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start (or restart) your JBoss Enterprise Portal Platform.
</para>
- <para>
+ <para>
Any passwords written to the JCR will now be encoded and not plain text.
</para>
-
- </step>
-
- </procedure>
-
-
- </listitem>
-
- </orderedlist>
-
-</section>
\ No newline at end of file
+ </step>
+ </procedure>
+ </listitem>
+ </orderedlist>
+</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -8,7 +8,7 @@
<section id="sect-Reference_Guide-Predefined_User_Configuration-Overview">
<title>Overview</title>
<para>
- The initial Organization configuration should be specified by editing the content of <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</filename>. This file uses the portal XML configuration schema. It lists several configuration plug-ins.
+ The initial Organization configuration should be specified by editing the content of <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</filename>. This file uses the portal XML configuration schema. It lists several configuration plug-ins.
</para>
</section>
<section id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_adding_users_groups_and_membership_types">
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -104,7 +104,7 @@
<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:
+ Open the <filename><replaceable>EPP_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>
@@ -167,7 +167,7 @@
</step>
<step>
<para>
- Open the <filename><replaceable><JBOSS_HOME></replaceable>/server/all/<replaceable><PROFILE></replaceable>/jbossweb.sar/server.xml</filename> file.
+ Open the <filename><replaceable>EPP_HOME</replaceable>/server/all/<replaceable>PROFILE</replaceable>/jbossweb.sar/server.xml</filename> file.
</para>
</step>
<step>
@@ -236,7 +236,7 @@
<title/>
<step>
<para>
- Open the <filename><replaceable><JBOSS_HOME></replaceable>/server/node1/deploy/jmx-console.war/WEB-INF/web.xml</filename> file and edit it as follows:
+ Open the <filename><replaceable>EPP_HOME</replaceable>/server/node1/deploy/jmx-console.war/WEB-INF/web.xml</filename> file and edit it as follows:
</para>
<substeps>
<step>
@@ -302,7 +302,7 @@
<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:
+ Open the <filename><replaceable>EPP_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>
@@ -314,7 +314,7 @@
</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:
+ Open the <filename><replaceable>EPP_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>
@@ -452,7 +452,7 @@
<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.
+ Copy all the libraries from the <filename><replaceable>PORTAL_SSO</replaceable>/cas/gatein.ear/lib</filename> directory into the <filename>EPP_HOME/server/default/deploy/gatein.ear/lib</filename>) directory.
</para>
</step>
<step>
@@ -501,13 +501,13 @@
<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:
+ Modify the '<emphasis role="bold">Sign In</emphasis>' link in the <filename><replaceable>EPP_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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default106.xml" parse="text"/></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:
+ Modify the '<emphasis role="bold">Sign In</emphasis>' link in the <filename><replaceable>EPP_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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default107.xml" parse="text"/></programlisting>
</step>
@@ -631,7 +631,7 @@
</step>
<step>
<para>
- In Tomcat, edit <filename>JBOSS_HOME/conf/jaas.conf</filename> and uncomment this section:
+ In Tomcat, edit <filename>EPP_HOME/conf/jaas.conf</filename> and uncomment this section:
</para>
<programlisting>org.gatein.sso.agent.login.SSOLoginModule required;
org.exoplatform.services.security.j2ee.TomcatLoginModule requiredtm
@@ -667,7 +667,7 @@
<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:
+ In the <filename><replaceable>EPP_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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default112.xml" parse="text"/></programlisting>
</step>
@@ -914,15 +914,15 @@
<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.
+ Copy all libraries from the <filename><replaceable>PORTAL_SSO</replaceable>/opensso/gatein.ear/lib</filename> directory into the <filename>EPP_HOME/server/default/deploy/gatein.ear/lib</filename> directory.
</para>
<para>
- Alternatively, in a Tomcat environment, copy the libraries into the <filename>JBOSS_HOME/lib</filename> directory.
+ Alternatively, in a Tomcat environment, copy the libraries into the <filename>EPP_HOMEibib</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:
+ 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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default118.xml" parse="text"/></programlisting>
</step>
@@ -968,7 +968,7 @@
<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:
+ Modify the '<emphasis role="bold">Sign In</emphasis>' link in the <filename><replaceable>EPP_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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default119.xml" parse="text"/></programlisting>
</step>
@@ -1312,10 +1312,10 @@
</step>
<step>
<para>
- Add the SSO module binaries by copying <emphasis role="bold">PORTAL_SSO/spnego/gatein.ear/lib/sso-agent.jar</emphasis> to the <emphasis role="bold">JBOSS_HOME/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/lib/</emphasis> directory.
+ Add the SSO module binaries by copying <filename>PORTAL_SSO/spnego/gatein.ear/lib/sso-agent.jar</filename> to the <filename>EPP_HOME/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib/</filename> directory.
</para>
<para>
- Copy the <emphasis role="bold">PORTAL_SSO/spnego/gatein.ear/lib/sso-spnego.jar</emphasis> file to the <emphasis role="bold">JBOSS_HOME/server/<replaceable><PROFILE></replaceable>/lib</emphasis> directory.
+ Copy the <filename>PORTAL_SSO/spnego/gatein.ear/lib/sso-spnego.jar</filename> file to the <filename>EPP_HOME/server/<replaceable>PROFILE</replaceable>/lib</filename> directory.
</para>
</step>
<!-- This step not required as EPP already has the correct version of Negotiation 2.0.4.GA
@@ -1328,7 +1328,7 @@
</step>
--> <step>
<para>
- Modify the <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename> file to match the following:
+ Modify the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename> file to match the following:
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default126.xml" parse="text"/></programlisting>
<para>
@@ -1337,7 +1337,7 @@
</step>
<step>
<para>
- Modify <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> to match:
+ Modify <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> to match:
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default127.xml" parse="text"/></programlisting>
<para>
@@ -1371,13 +1371,13 @@
</step>
<step>
<para>
- Integrate the request pre-processing needed for SPNEGO via filters by adding the following filters to the <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> at the top of the Filter chain.
+ Integrate the request pre-processing needed for SPNEGO via filters by adding the following filters to the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> at the top of the Filter chain.
</para>
<programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default128.xml" parse="text"/></programlisting>
</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:
+ Edit the '<emphasis role="bold">Sign In</emphasis>' link in <filename><replaceable>EPP_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 xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_SSO/default129.java" parse="text"/></programlisting>
</step>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -27,30 +27,32 @@
<title>Devices</title>
<varlistentry>
<term>
- <replaceable><JBOSS_HOME></replaceable>
+ <replaceable>EPP_HOME</replaceable>
</term>
<listitem>
<para>
- This device will refer to the <application>JBoss Application Server</application> (<filename>jboss-as</filename>) directory deployed in JBoss Enterprise Portal Platform by default.
+ This device refers to the JBoss Enterprise Application Platform <application>
+ <filename>jboss-as</filename>
+ </application> directory deployed in JBoss Enterprise Portal Platform by default.
</para>
<para>
- Therefore, if your JBoss Enterprise Portal Platform instance is deployed into a directory called <filename>jboss-epp-&VY;/</filename>, your <replaceable><JBOSS_HOME></replaceable> directory would be <filename>jboss-epp-&VY;/jboss-as/</filename>.
+ Therefore, if your JBoss Enterprise Portal Platform instance is deployed into a directory called <filename>/opt/jboss/jboss-epp-&VY;/</filename>, your <replaceable>EPP_HOME</replaceable> directory is <filename>/opt/jboss/jboss-epp-&VY;/jboss-as/</filename>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <replaceable><PROFILE></replaceable>
+ <replaceable>PROFILE</replaceable>
</term>
<listitem>
<para>
- This device will usually follow an instance of <replaceable><JBOSS_HOME></replaceable> in a file path and refers to the directory that contains the server profile your JBoss Enterprise Portal Platform instance is configured to use.
+ This device will usually follow an instance of <replaceable>EPP_HOME</replaceable> in a file path and refers to the directory that contains the server profile your JBoss Enterprise Portal Platform instance is configured to use.
</para>
<para>
- JBoss Enterprise Portal Platform comes with six profiles by default; <emphasis role="bold">all</emphasis>, <emphasis role="bold">default</emphasis>, <emphasis role="bold">minimal</emphasis>, <emphasis role="bold">production</emphasis>, <emphasis role="bold">standard</emphasis> and <emphasis role="bold">web</emphasis>. These profiles are found in the <filename><replaceable><JBOSS_HOME></replaceable>/server/</filename> directory.
+ JBoss Enterprise Portal Platform comes with six profiles by default; <emphasis role="bold">all</emphasis>, <emphasis role="bold">default</emphasis>, <emphasis role="bold">minimal</emphasis>, <emphasis role="bold">production</emphasis>, <emphasis role="bold">standard</emphasis> and <emphasis role="bold">web</emphasis>. These profiles are found in the <filename><replaceable>EPP_HOME</replaceable>/server/</filename> directory.
</para>
<para>
- Therefore, if you are using the <emphasis>default</emphasis> profile, your <replaceable><PROFILE></replaceable> directory would be <filename><replaceable><JBOSS_HOME></replaceable>/server/default/</filename>
+ Therefore, if you are using the <emphasis>default</emphasis> profile, your <replaceable>PROFILE</replaceable> directory would be <filename><replaceable>EPP_HOME</replaceable>/server/default/</filename>
</para>
</listitem>
</varlistentry>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalPermissionConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalPermissionConfiguration.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalPermissionConfiguration.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,116 +1,91 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Portal_Default_Permission_Configuration">
- <title>Portal Default Permission Configuration</title>
- <section id="sect-Reference_Guide-Portal_Default_Permission_Configuration-Overview">
- <title>Overview</title>
- <para>
- The default permission configuration for the portal is defined through the <literal>org.exoplatform.portal.config.UserACL</literal> component configuration in the <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war:/WEB-INF/conf/portal/portal-configuration.xml</filename> file.
- </para>
- <para>
- It defines eight permissions types:
- </para>
- <variablelist>
- <varlistentry>
- <term>super.user</term>
- <listitem>
- <para>
- The super user has all the rights on the platform, this user is referred to as <emphasis>root</emphasis>.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>portal.administrator.groups</term>
- <listitem>
- <para>
- Any member of those groups are considered administrators. Default value is <literal>/platform/administrators</literal>.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>portal.administrator.mstype</term>
- <listitem>
- <para>
- Any user with that membership type would be considered administrator or the associated group. Default value is <literal>manager</literal>.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>portal.creator.groups</term>
- <listitem>
- <para>
- This list defines all groups that will be able to manage the different portals. Members of this group also have the permission to create new portals. The format is <literal>membership:/group/subgroup</literal>.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>navigation.creator.membership.type</term>
- <listitem>
- <para>
- Defines the membership type of group managers. The group managers have the permission to create and edit group pages and they can modify the group navigation.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>guests.group</term>
- <listitem>
- <para>
- Any anonymous user automatically becomes a member of this group when they enter the public pages.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>mandatory.groups</term>
- <listitem>
- <para>
- Groups that can't be deleted.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>mandatory.mstypes</term>
- <listitem>
- <para>
- Membership types that can't be deleted.
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalPermissionConfiguration/default145.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_Default_Permission_Configuration-Overwrite_Portal_Default_Permissions">
- <title>Overwrite Portal Default Permissions</title>
- <para>
- When creating custom portals and portal extensions it is possible to override the default configuration by using <literal>org.exoplatform.portal.config.PortalACLPlugin</literal>, configuring it as an external-plugin of <literal>org.exoplatform.portal.config.UserACL</literal> service:
- </para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalPermissionConfiguration/default146.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
+ <title>Portal Default Permission Configuration</title>
+ <section id="sect-Reference_Guide-Portal_Default_Permission_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ The default permission configuration for the portal is defined through the <literal>org.exoplatform.portal.config.UserACL</literal> component configuration in the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war:/WEB-INF/conf/portal/portal-configuration.xml</filename> file.
+ </para>
+ <para>
+ It defines eight permissions types:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>super.user</term>
+ <listitem>
+ <para>
+ The super user has all the rights on the platform, this user is referred to as <emphasis>root</emphasis>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>portal.administrator.groups</term>
+ <listitem>
+ <para>
+ Any member of those groups are considered administrators. Default value is <literal>/platform/administrators</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>portal.administrator.mstype</term>
+ <listitem>
+ <para>
+ Any user with that membership type would be considered administrator or the associated group. Default value is <literal>manager</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>portal.creator.groups</term>
+ <listitem>
+ <para>
+ This list defines all groups that will be able to manage the different portals. Members of this group also have the permission to create new portals. The format is <literal>membership:/group/subgroup</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>navigation.creator.membership.type</term>
+ <listitem>
+ <para>
+ Defines the membership type of group managers. The group managers have the permission to create and edit group pages and they can modify the group navigation.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>guests.group</term>
+ <listitem>
+ <para>
+ Any anonymous user automatically becomes a member of this group when they enter the public pages.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>mandatory.groups</term>
+ <listitem>
+ <para>
+ Groups that can't be deleted.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>mandatory.mstypes</term>
+ <listitem>
+ <para>
+ Membership types that can't be deleted.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_DefaultPortalPermissionConfiguration/default145.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Portal_Default_Permission_Configuration-Overwrite_Portal_Default_Permissions">
+ <title>Overwrite Portal Default Permissions</title>
+ <para>
+ When creating custom portals and portal extensions it is possible to override the default configuration by using <literal>org.exoplatform.portal.config.PortalACLPlugin</literal>, configuring it as an external-plugin of <literal>org.exoplatform.portal.config.UserACL</literal> service:
+ </para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_DefaultPortalPermissionConfiguration/default146.xml" parse="text"/></programlisting>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -57,7 +57,7 @@
The returned <literal>Locale</literal> has to be one of the locales supported by portal, otherwise it will fall back to the portal default <literal>Locale</literal>.
</para>
<para>
- The supported locales are listed in <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/common/locales-config.xml</filename> file as described in <xref linkend="sect-Reference_Guide-Internationalization_Configuration-Locales_Configuration"/> .
+ The supported locales are listed in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/common/locales-config.xml</filename> file as described in <xref linkend="sect-Reference_Guide-Internationalization_Configuration-Locales_Configuration"/> .
</para>
<para>
The <literal>determineLocale()</literal> method takes a parameter of type <literal>LocaleContextInfo</literal>, which represents a compilation of preferred locales from different sources; user’s profile, portal default, browser language settings, current session, browser cookie.
@@ -204,7 +204,7 @@
<section id="sect-Reference_Guide-Pluggable_Locale_Policy-LocalePolicy_Configuration">
<title>LocalePolicy Configuration</title>
<para>
- The <literal>LocalePolicy</literal> framework is enabled for portlets by configuring <literal>LocalizationLifecycle</literal> class in portal's webui configuration file: <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/webui-configuration.xml</filename>:
+ The <literal>LocalePolicy</literal> framework is enabled for portlets by configuring <literal>LocalizationLifecycle</literal> class in portal's webui configuration file: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/webui-configuration.xml</filename>:
</para>
<programlisting language="XML" role="XML"><application-life-cycle-listeners>
...
@@ -212,7 +212,7 @@
</application-life-cycle-listeners>
</programlisting>
<para>
- The default <literal>LocalePolicy</literal> implementation is installed as an eXo Kernel portal service via <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/portal/web-configuration.xml</filename>.
+ The default <literal>LocalePolicy</literal> implementation is installed as an eXo Kernel portal service via <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/portal/web-configuration.xml</filename>.
</para>
<para>
The following excerpt is responsible for installing the service:
@@ -244,7 +244,7 @@
That way even localization of servlets, and .jsps accessed in a non-bridged manner can stay in sync with portlet localization.
</para>
<para>
- <literal>LocalizationFilter</literal> is installed through the portal's web.xml file: <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename>.
+ <literal>LocalizationFilter</literal> is installed through the portal's web.xml file: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename>.
</para>
<programlisting language="XML" role="XML"><filter>
<filter-name>LocalizationFilter</filter-name>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/RTLFramework.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/RTLFramework.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/RTLFramework.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,206 +1,167 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Right_To_Left_RTL_Framework">
- <title>Right To Left (RTL) Framework</title>
- <para>
- The text orientation depends on the current locale setting. The orientation is a Java 5 enum that provides a set of functionalities:
- </para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_RTLFramework/default172.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <!-- DOC NOTE: Commented based on feedback from Marek Posolda that section seemed to have been included without previous explanatory context.
+ <title>Right To Left (RTL) Framework</title>
+ <para>
+ The text orientation depends on the current locale setting. The orientation is a Java 5 enum that provides a set of functionalities:
+ </para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_RTLFramework/default172.java" parse="text"/></programlisting>
+<!-- DOC NOTE: Commented based on feedback from Marek Posolda that section seemed to have been included without previous explanatory context.
<para>
- The object defining the orientation for the current request is the <literal>UIPortalApplication</literal>. However it should be accessed at runtime using the <literal>RequestContext</literal> that delegates to the <literal>UIPortalApplication</literal>.
- </para>
- <para>
- In the case of a <literal>PortalRequestContext</literal> it is a direct delegate as the <literal>PortalRequestContext</literal> has a reference to the current <literal>UIPortalApplication</literal>.
- </para>
- <para>
- In the case of a different context, it delegates to the parent context given the fact that the root <literal>RequestContext</literal> is always a <literal>PortalRequestContext</literal>.
- </para> --> <section id="sect-Reference_Guide-Right_To_Left_RTL_Framework-Groovy_templates">
- <title>Groovy templates</title>
- <para>
- Orientation is defined by implicit variables passed into the groovy binding context:
- </para>
- <variablelist>
- <varlistentry>
- <term>Orientation</term>
- <listitem>
- <para>
- The current orientation as an Orientation.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>isLT</term>
- <listitem>
- <para>
- The value of <literal>orientation.isLT()</literal>.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>isRT</term>
- <listitem>
- <para>
- The value of <literal>orientation.isRT()</literal>.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>dir</term>
- <listitem>
- <para>
- The string '<emphasis role="bold">ltr</emphasis>' if the orientation is LT or the string '<emphasis role="bold">rtl</emphasis>' if the orientation is RT.
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Right_To_Left_RTL_Framework-Stylesheet">
- <title>Stylesheet</title>
- <para>
- The skin service handles stylesheet rewriting to accommodate the orientation.
- </para>
- <para>
- It works by appending -lt or -rt to the stylesheet name.
- </para>
- <para>
- For instance: <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet-rt.css</filename> will return the same stylesheet as <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/web.war/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css</filename> but processed for the RT orientation. The <parameter>-lt</parameter> suffix is optional.
- </para>
- <para>
- Stylesheet authors can annotate their stylesheet to create content that depends on the orientation.
- </para>
- <para>
- In the example below we need to use the orientation to modify the float attribute that will make the horizontal tabs either float on left or on right:
- </para>
- <example id="exam-Reference_Guide-Stylesheet-Example_1">
- <title>Example 1</title>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_RTLFramework/default173.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </example>
- <para>
- The LT produced output will be:
- </para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_RTLFramework/default174.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- The RT produced output will be:
- </para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_RTLFramework/default175.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- In this example we need to modify the padding according to the orientation:
- </para>
- <example id="exam-Reference_Guide-Stylesheet-Example_2">
- <title>Example 2</title>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_RTLFramework/default176.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </example>
- <para>
- The LT produced output will be:
- </para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_RTLFramework/default177.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- The RT produced output will be:
- </para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_RTLFramework/default178.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Right_To_Left_RTL_Framework-Images">
- <title>Images</title>
- <para>
- Sometimes it is necessary to create an RT version of an image that will be used from a template or from a stylesheet. However symmetric images can be automatically generated, avoiding the necessity to create a mirrored version of an image and further maintenance costs.
- </para>
- <para>
- The web resource filter uses the same naming pattern as the skin service. When an image ends with the -rt suffix the portal will attempt to locate the original image and create a mirror of it.
- </para>
- <para>
- For instance: requesting the image <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/01eXoResources.war/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle-rt.gif</filename> returns a mirror of the image <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/01eXoResources.war/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle.gif</filename>.
- </para>
- <note>
- <para>
- It is important to consider whether the image to be mirrored is symmetrical as this will impact it's final appearance.
- </para>
-
- </note>
- <para>
- Here is an example combining stylesheet and images:
- </para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortalDevelopment_RTLFramework/default179.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Right_To_Left_RTL_Framework-Client_Side_JavaScript">
- <title>Client Side JavaScript</title>
- <para>
- The <literal>eXo.core.I18n</literal> object provides the following parameters for orientation:
- </para>
- <variablelist>
- <varlistentry>
- <term>getOrientation()</term>
- <listitem>
- <para>
- Returns either the string lt or rt
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>getDir()</term>
- <listitem>
- <para>
- Returns either the string ltr or rtl
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>isLT()</term>
- <listitem>
- <para>
- Returns true for LT
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>isRT()</term>
- <listitem>
- <para>
- Returns true of RT
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
-
+ The object defining the orientation for the current request is the <literal>UIPortalApplication</literal>. However it should be accessed at runtime using the <literal>RequestContext</literal> that delegates to the <literal>UIPortalApplication</literal>.
+ </para>
+ <para>
+ In the case of a <literal>PortalRequestContext</literal> it is a direct delegate as the <literal>PortalRequestContext</literal> has a reference to the current <literal>UIPortalApplication</literal>.
+ </para>
+ <para>
+ In the case of a different context, it delegates to the parent context given the fact that the root <literal>RequestContext</literal> is always a <literal>PortalRequestContext</literal>.
+ </para> --> <section id="sect-Reference_Guide-Right_To_Left_RTL_Framework-Groovy_templates">
+ <title>Groovy templates</title>
+ <para>
+ Orientation is defined by implicit variables passed into the groovy binding context:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Orientation</term>
+ <listitem>
+ <para>
+ The current orientation as an Orientation.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>isLT</term>
+ <listitem>
+ <para>
+ The value of <literal>orientation.isLT()</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>isRT</term>
+ <listitem>
+ <para>
+ The value of <literal>orientation.isRT()</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dir</term>
+ <listitem>
+ <para>
+ The string '<emphasis role="bold">ltr</emphasis>' if the orientation is LT or the string '<emphasis role="bold">rtl</emphasis>' if the orientation is RT.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Right_To_Left_RTL_Framework-Stylesheet">
+ <title>Stylesheet</title>
+ <para>
+ The skin service handles stylesheet rewriting to accommodate the orientation.
+ </para>
+ <para>
+ It works by appending -lt or -rt to the stylesheet name.
+ </para>
+ <para>
+ For instance: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet-rt.css</filename> will return the same stylesheet as <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/web.war/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css</filename> but processed for the RT orientation. The <parameter>-lt</parameter> suffix is optional.
+ </para>
+ <para>
+ Stylesheet authors can annotate their stylesheet to create content that depends on the orientation.
+ </para>
+ <para>
+ In the example below we need to use the orientation to modify the float attribute that will make the horizontal tabs either float on left or on right:
+ </para>
+ <example id="exam-Reference_Guide-Stylesheet-Example_1">
+ <title>Example 1</title>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_RTLFramework/default173.java" parse="text"/></programlisting>
+ </example>
+ <para>
+ The LT produced output will be:
+ </para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_RTLFramework/default174.java" parse="text"/></programlisting>
+ <para>
+ The RT produced output will be:
+ </para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_RTLFramework/default175.java" parse="text"/></programlisting>
+ <para>
+ In this example we need to modify the padding according to the orientation:
+ </para>
+ <example id="exam-Reference_Guide-Stylesheet-Example_2">
+ <title>Example 2</title>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_RTLFramework/default176.java" parse="text"/></programlisting>
+ </example>
+ <para>
+ The LT produced output will be:
+ </para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_RTLFramework/default177.java" parse="text"/></programlisting>
+ <para>
+ The RT produced output will be:
+ </para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_RTLFramework/default178.java" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Right_To_Left_RTL_Framework-Images">
+ <title>Images</title>
+ <para>
+ Sometimes it is necessary to create an RT version of an image that will be used from a template or from a stylesheet. However symmetric images can be automatically generated, avoiding the necessity to create a mirrored version of an image and further maintenance costs.
+ </para>
+ <para>
+ The web resource filter uses the same naming pattern as the skin service. When an image ends with the -rt suffix the portal will attempt to locate the original image and create a mirror of it.
+ </para>
+ <para>
+ For instance: requesting the image <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/01eXoResources.war/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle-rt.gif</filename> returns a mirror of the image <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/01eXoResources.war/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle.gif</filename>.
+ </para>
+ <note>
+ <para>
+ It is important to consider whether the image to be mirrored is symmetrical as this will impact it's final appearance.
+ </para>
+ </note>
+ <para>
+ Here is an example combining stylesheet and images:
+ </para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_RTLFramework/default179.java" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Right_To_Left_RTL_Framework-Client_Side_JavaScript">
+ <title>Client Side JavaScript</title>
+ <para>
+ The <literal>eXo.core.I18n</literal> object provides the following parameters for orientation:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>getOrientation()</term>
+ <listitem>
+ <para>
+ Returns either the string lt or rt
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>getDir()</term>
+ <listitem>
+ <para>
+ Returns either the string ltr or rtl
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>isLT()</term>
+ <listitem>
+ <para>
+ Returns true for LT
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>isRT()</term>
+ <listitem>
+ <para>
+ Returns true of RT
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,94 +1,82 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Shared_portlet.xml">
- <title>Shared <filename>portlet.xml</filename></title>
- <para>
+ <title>Shared portlet.xml</title>
+ <para>
The Java Portlet Specification introduces <literal>PortletFilter</literal> as a standard approach to extend the behaviors of portlet objects. For example, a filter can transform the content of portlet requests and portlet responses.
</para>
- <para>
+ <para>
According to the Portlet Specification, there are normally three steps in setting up a portlet filter:
</para>
- <procedure>
- <step>
- <para>
+ <procedure>
+ <step>
+ <para>
Implement a <literal>PortletFilter</literal> object.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Define the filter in portlet application deployment descriptor.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Define the filter mapping in portlet definitions.
</para>
-
- </step>
-
- </procedure>
-
- <para>
+ </step>
+ </procedure>
+ <para>
While the first two steps are quite straightforward, the third requires developers or administrators to replicate the filter mapping in many portlet definitions. This can be tedious and opens the potential for input errors. The global portlet feature is designed to mitigate these concerns.
</para>
- <para>
+ <para>
Global portlet metadata is declared in the <filename>portlet.xml</filename> file and conforms with the Portlet 2.0 XSD.
</para>
-
-<programlisting language="XML" role="XML"><portlet-app version="1.0" xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
+ <programlisting language="XML" role="XML"><portlet-app version="1.0" xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2... http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
</portlet-app>
</programlisting>
- <para>
- The path to the global <filename>portlet.xml</filename> is the value of <literal>gatein.portlet.config</literal> in the <filename>configuration.properties.xml</filename> file. By default The file path is <filename>/<replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/conf/gatein/portlet.xml</filename>
+ <para>
+ The path to the global <filename>portlet.xml</filename> is the value of <literal>gatein.portlet.config</literal> in the <filename>configuration.properties.xml</filename> file. By default The file path is <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/conf/gatein/portlet.xml</filename>
</para>
- <para>
- <emphasis role="bold">For JBoss</emphasis>: The file path is <filename><replaceable><JBOSS_HOME></replaceable>/server/default/conf/gatein/portlet.xml</filename>.
+ <para>
+ <emphasis role="bold">For JBoss</emphasis>: The file path is <filename><replaceable>EPP_HOME</replaceable>/server/default/conf/gatein/portlet.xml</filename>.
</para>
- <section id="sect-Reference_Guide-Shared_portlet.xml-Global_Metadata_Elements">
- <title>Global Metadata Elements</title>
- <para>
+ <section id="sect-Reference_Guide-Shared_portlet.xml-Global_Metadata_Elements">
+ <title>Global Metadata Elements</title>
+ <para>
The global <filename>portlet.xml</filename> file conforms, with some restrictions, to the portlet deployment descriptor schema defined in the Portlet Specification. In this file, the following elements are supported:
</para>
- <orderedlist>
- <listitem>
- <para>
- <xref linkend="form-Reference_Guide-Global_Metadata_Elements-Portlet_Filter" />
+ <orderedlist>
+ <listitem>
+ <para>
+ <xref linkend="form-Reference_Guide-Global_Metadata_Elements-Portlet_Filter"/>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Portlet Mode
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Window State
</para>
-
- </listitem>
-
- </orderedlist>
- <formalpara id="form-Reference_Guide-Global_Metadata_Elements-Portlet_Filter">
- <title>Portlet Filter</title>
- <para>
+ </listitem>
+ </orderedlist>
+ <formalpara id="form-Reference_Guide-Global_Metadata_Elements-Portlet_Filter">
+ <title>Portlet Filter</title>
+ <para>
Portlet filter mappings declared in the global <filename>portlet.xml</filename> file are applied across portlet applications.
</para>
-
- </formalpara>
- <para>
+ </formalpara>
+ <para>
With the XML configuration below, the filter <literal>ApplicationMonitoringFilter</literal> is involved in request handling on any deployed portlet.
</para>
-
-<programlisting language="XML" role="XML"><filter>
+ <programlisting language="XML" role="XML"><filter>
<filter-name>org.exoplatform.portal.application.ApplicationMonitoringFilter</filter-name>
<filter-class>org.exoplatform.portal.application.ApplicationMonitoringFilter</filter-class>
<life-cycle>ACTION_PHASE</life-cycle>
@@ -97,42 +85,33 @@
<life-cycle>RESOURCE_PHASE</life-cycle>
</filter>
</programlisting>
- <para>
+ <para>
<emphasis role="bold">Application Monitoring Filter</emphasis> supports four life-cycle phases in the order below:
</para>
- <orderedlist>
- <listitem>
- <para>
+ <orderedlist>
+ <listitem>
+ <para>
ACTION_PHASE
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
EVENT_PHASE
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
RENDER_PHASE
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
RESOURCE_PHASE
</para>
-
- </listitem>
-
- </orderedlist>
- <para>
+ </listitem>
+ </orderedlist>
+ <para>
The Application Monitoring Filter records statistic information about deployed portlets. The filter alternates the actual monitoring mechanism in WebUI Framework.
</para>
-
- </section>
-
-
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,113 +1,88 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Bridge_Configuration">
- <title>Bridge Configuration</title>
- <para>
- The 329 specification is aimed at making the developer's life as easy as possible with JSF+Portlet development. You will see below that there are minimal settings to getting any JSF web application up and running in the Portal environment.
+ <title>Bridge Configuration</title>
+ <para>
+ The 329 specification is aimed at making the developer's life as easy as possible with JSF+Portlet development. You will see below that there are minimal settings to getting any JSF web application up and running in the Portal environment.
</para>
- <!-- Commented as Maven Archetypes section removed from gettingstarted.xml
+<!-- Commented as Maven Archetypes section removed from gettingstarted.xml
<para>
If you are new to these concepts, we highly recommend you refer to <xref linkend="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Maven_Archetypes" />.
- </para> --> <section id="sect-Reference_Guide-Bridge_Configuration-Core_Setup_and_Configuration">
- <title>Core Setup and Configuration</title>
- <section id="sect-Reference_Guide-Core_Setup_and_Configuration-portlet.xml">
- <title>portlet.xml</title>
- <para>
+ </para> --> <section id="sect-Reference_Guide-Bridge_Configuration-Core_Setup_and_Configuration">
+ <title>Core Setup and Configuration</title>
+ <section id="sect-Reference_Guide-Core_Setup_and_Configuration-portlet.xml">
+ <title>portlet.xml</title>
+ <para>
The basic JSR-329 portlet configuration.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default197.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- When <parameter>preserveActionParams</parameter> is set to <parameter>TRUE</parameter>, the bridge must maintain any request parameters assigned during the portlet's action request.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default197.xml" parse="text"/></programlisting>
+ <para>
+ When <parameter>preserveActionParams</parameter> is set to <parameter>TRUE</parameter>, the bridge must maintain any request parameters assigned during the portlet's action request.
</para>
- <para>
- The request parameters are maintained in the <emphasis>"bridge request scope"</emphasis>. When this attribute is not present or is <parameter>FALSE</parameter> the action's request parameters are only maintained for the duration of the <emphasis>portlet request scope</emphasis>.
+ <para>
+ The request parameters are maintained in the <emphasis>"bridge request scope"</emphasis>. When this attribute is not present or is <parameter>FALSE</parameter> the action's request parameters are only maintained for the duration of the <emphasis>portlet request scope</emphasis>.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default198.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Core_Setup_and_Configuration-faces_config.xml">
- <title>faces-config.xml</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default198.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Core_Setup_and_Configuration-faces_config.xml">
+ <title>faces-config.xml</title>
+ <para>
The <parameter>PortletViewHandler</parameter> ensures that each JSF portlet instance is properly namespaced.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default199.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Core_Setup_and_Configuration-Facelets_Configuration">
- <title>Facelets Configuration</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default199.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Core_Setup_and_Configuration-Facelets_Configuration">
+ <title>Facelets Configuration</title>
+ <para>
The following <filename>web.xml</filename> setting is only for <literal>Facelets</literal> based applications
</para>
- <section id="sect-Reference_Guide-Facelets_Configuration-web.xml">
- <title>web.xml</title>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default200.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default201.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <variablelist id="vari-Reference_Guide-web.xml-RenderPolicy_Options">
- <title>RenderPolicy Options</title>
- <varlistentry>
- <term>ALWAYS_DELEGATE</term>
- <listitem>
- <para>
+ <section id="sect-Reference_Guide-Facelets_Configuration-web.xml">
+ <title>web.xml</title>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default200.xml" parse="text"/></programlisting>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default201.xml" parse="text"/></programlisting>
+ <variablelist id="vari-Reference_Guide-web.xml-RenderPolicy_Options">
+ <title>RenderPolicy Options</title>
+ <varlistentry>
+ <term>ALWAYS_DELEGATE</term>
+ <listitem>
+ <para>
Indicates the bridge should not render the view itself but rather always delegate the rendering.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>NEVER_DELEGATE</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NEVER_DELEGATE</term>
+ <listitem>
+ <para>
Indicates the bridge should always render the view itself and never delegate.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>DEFAULT</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>DEFAULT</term>
+ <listitem>
+ <para>
Directs the bridge to first delegate the render only if an Exception is thrown then render the view based on its own logic. If the configuration parameter is not present or has an invalid value the bridge renders using default behavior as it would if DEFAULT was set.
</para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Core_Setup_and_Configuration-JSP_Only_Configuration">
- <title>JSP Only Configuration</title>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Core_Setup_and_Configuration-JSP_Only_Configuration">
+ <title>JSP Only Configuration</title>
+ <para>
The following <filename>web.xml</filename> setting is only for JSP based applications. Download the demonstration application <ulink url="http://anonsvn.jboss.org/repos/portletbridge/trunk/examples/jsf-ri/1.2-ba...">here</ulink>.
</para>
- <section id="sect-Reference_Guide-JSP_Only_Configuration-web.xml">
- <title>web.xml</title>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default202.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
- </section>
-
- <!-- Section removed as per feedback from Prabhat Jha
+ <section id="sect-Reference_Guide-JSP_Only_Configuration-web.xml">
+ <title>web.xml</title>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default202.xml" parse="text"/></programlisting>
+ </section>
+ </section>
+<!-- Section removed as per feedback from Prabhat Jha
<section id="sect-Reference_Guide-Core_Setup_and_Configuration-JSR_329">
<title>JSR-329</title>
<para>
@@ -116,50 +91,41 @@
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default203.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section> -->
- </section>
-
- <!-- End 301 core setup --> <section id="sect-Reference_Guide-Bridge_Configuration-RichFaces_Setup_and_Configuration_Options">
- <title>RichFaces Setup and Configuration Options</title>
- <section id="sect-Reference_Guide-RichFaces_Setup_and_Configuration_Options-web.xml">
- <title>web.xml</title>
- <para>
+ </section> --> </section>
+<!-- End 301 core setup --> <section id="sect-Reference_Guide-Bridge_Configuration-RichFaces_Setup_and_Configuration_Options">
+ <title>RichFaces Setup and Configuration Options</title>
+ <section id="sect-Reference_Guide-RichFaces_Setup_and_Configuration_Options-web.xml">
+ <title>web.xml</title>
+ <para>
The following configuration is designated for portlets using the <application>RichFaces</application> library. These settings will vary based on your individual needs.
</para>
- <para>
+ <para>
See <ulink url="http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/..."> this section</ulink> of the <application>RichFaces</application> documentation for more details.
</para>
- <para>
- Sometimes it is better to use the "<parameter>ALL</parameter>" load strategy in portlets so you do not need to worry about loading the "framework.pack.js" and "ui.pack.js" files manually in your portlet header.
+ <para>
+ Sometimes it is better to use the "<parameter>ALL</parameter>" load strategy in portlets so you do not need to worry about loading the "framework.pack.js" and "ui.pack.js" files manually in your portlet header.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default204.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <note>
- <para>
- If you use the "<parameter>NONE</parameter>" strategy, you must include the following scripts in your portlet or portal page header. If you are using <application>JBoss Portal</application>, you can add this to the <filename>jboss-portlet.xml</filename> file.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default204.xml" parse="text"/></programlisting>
+ <note>
+ <para>
+ If you use the "<parameter>NONE</parameter>" strategy, you must include the following scripts in your portlet or portal page header. If you are using <application>JBoss Portal</application>, you can add this to the <filename>jboss-portlet.xml</filename> file.
</para>
-
- </note>
- <para>
- The <literal>org.ajax4jsf.RESOURCE_URI_PREFIX</literal> configuration cross-references the path to your scripts below. These settings are required for <application>RichFaces</application> using the "<parameter>NONE</parameter>" strategy.
+ </note>
+ <para>
+ The <literal>org.ajax4jsf.RESOURCE_URI_PREFIX</literal> configuration cross-references the path to your scripts below. These settings are required for <application>RichFaces</application> using the "<parameter>NONE</parameter>" strategy.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default205.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default205.xml" parse="text"/></programlisting>
+ <para>
<application>Seam</application> automatically configures your Ajax4JSF Filter, so if you are running a <application>Seam</application> portlet, you do not need the following Filter configuration (however, you do need the <literal>RESOURCE_URI_PREFIX</literal> no matter what).
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default206.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-RichFaces_Setup_and_Configuration_Options-Configuration_needed_for_Richfaces_to_work_with_WSRP_and_PortletBridge">
- <!-- Content added from JBEPP-708 and JBQA-3999 --> <title>Configuration needed for Richfaces to work with WSRP and PortletBridge</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default206.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-RichFaces_Setup_and_Configuration_Options-Configuration_needed_for_Richfaces_to_work_with_WSRP_and_PortletBridge">
+<!-- Content added from JBEPP-708 and JBQA-3999 --> <title>Configuration needed for Richfaces to work with WSRP and PortletBridge</title>
+ <para>
Use the following settings in <filename>web.xml</filename> when running WSRP portlets:
</para>
-
-<programlisting language="XML" role="XML"><context-param>
+ <programlisting language="XML" role="XML"><context-param>
<param-name>org.jboss.portletbridge.WRAP_SCRIPTS</param-name>
<param-value>false</param-value>
</context-param>
@@ -173,709 +139,420 @@
<param-value>DEFAULT</param-value>
</context-param>
</programlisting>
- <para>
- The styles below must also be manually added to the facelets template header in the <filename><replaceable>JBOSS_HOME</replaceable>/portletbridge/examples/richFacesPortlet-<replaceable><VERSION></replaceable>.war:richFacesPortlet.war/templates/main.xhtml</filename> file.
+ <para>
+ The styles below must also be manually added to the facelets template header in the <filename><replaceable>EPP_HOME</replaceable>/portletbridge/examples/richFacesPortlet-<replaceable><VERSION></replaceable>.war:richFacesPortlet.war/templates/main.xhtml</filename> file.
</para>
-
-<programlisting language="XML" role="XML"><link rel="stylesheet" type="text/css"
- href="/richFacesPortlet/faces/rfResorg/richfaces/renderkit/html/css/basic_both.xcss"/>
- <link rel="stylesheet" type="text/css"
- href="/richFacesPortlet/faces/rfResorg/richfaces/renderkit/html/css/extended_both.xcss"/>
- <link rel="stylesheet" type="text/css"
- href="/richFacesPortlet/faces/rfRes/org/richfaces/skin.xcss"/>
+ <programlisting language="XML" role="XML"><link rel="stylesheet" type="text/css"
+ href="/richFacesPortlet/faces/rfResorg/richfaces/renderkit/html/css/basic_both.xcss"/>
+ <link rel="stylesheet" type="text/css"
+ href="/richFacesPortlet/faces/rfResorg/richfaces/renderkit/html/css/extended_both.xcss"/>
+ <link rel="stylesheet" type="text/css"
+ href="/richFacesPortlet/faces/rfRes/org/richfaces/skin.xcss"/>
</programlisting>
- <para>
+ <para>
The table below outlines the current status of RichFaces features when used in both local and remote portlets.
</para>
- <table id="tabl-Reference_Guide-Configuration_needed_for_Richfaces_to_work_with_WSRP_and_PortletBridge-RichFaces_Feature_Status">
- <title>RichFaces Feature Status</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- Richfaces Component
- </entry>
- <entry>
- Supported as Local Portlet
- </entry>
- <entry>
- Supported as Remote Portlet using WSRP
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- <literal>a4j:commandButton</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:commandLink</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:jsFunction</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:push</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:poll</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:queue</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:status</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:keepAlive</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:include</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:loadStyle</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:loadScript</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:ajaxValidator</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:beanValidator</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:graphValidator</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:mediaOutput</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:outputPanel</literal>
- </entry>
- <entry>
- Yes (except Firefox 3.5)
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:log</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:dataTable</literal>
- </entry>
- <entry>
- Yes (except Firefox 3.6 and IE8)
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>a4j:dataFilterSlider</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:dataGrid</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:dataList</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:datascroller</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:extendedDataTable</literal>
- </entry>
- <entry>
- Yes (except IE7)
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:repeat</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:scrollableDataTable</literal>
- </entry>
- <entry>
- Yes (except Firefox 3.6)
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>drag-drop support</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:contextMenu</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:dropDownMenu</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:tree</literal>
- </entry>
- <entry>
- Yes (except Firefox 3.5)
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:modalPanel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:paint2d</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:panel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:panelBar</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:panelMenu</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:progressBar</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:separator</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:simpleTogglePanel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:spacer</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:tabPanel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes (except tab deletion)
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:togglePanel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:toolBar</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:toolTip</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:calendar</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:colorPicker</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:comboBox</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:editor</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:fileUpload</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:inplaceSelect</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:inplaceInput</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:inputNumberSpinner</literal>
- </entry>
- <entry>
- Yes (except IE7)
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:inputNumberSlider</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:suggestionBox</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:listShuttle</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:orderingList</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>rich:pickList</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
- <!-- DO NOT UNCOMMENT <section>
+ <table id="tabl-Reference_Guide-Configuration_needed_for_Richfaces_to_work_with_WSRP_and_PortletBridge-RichFaces_Feature_Status">
+ <title>RichFaces Feature Status</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry> Richfaces Component </entry>
+ <entry> Supported as Local Portlet </entry>
+ <entry> Supported as Remote Portlet using WSRP </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>a4j:commandButton</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:commandLink</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:jsFunction</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:push</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:poll</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:queue</literal>
+ </entry>
+ <entry> No </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:status</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:keepAlive</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:include</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:loadStyle</literal>
+ </entry>
+ <entry> No </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:loadScript</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:ajaxValidator</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:beanValidator</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:graphValidator</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:mediaOutput</literal>
+ </entry>
+ <entry> No </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:outputPanel</literal>
+ </entry>
+ <entry> Yes (except Firefox 3.5) </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:log</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:dataTable</literal>
+ </entry>
+ <entry> Yes (except Firefox 3.6 and IE8) </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:dataFilterSlider</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:dataGrid</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:dataList</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:datascroller</literal>
+ </entry>
+ <entry> No </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:extendedDataTable</literal>
+ </entry>
+ <entry> Yes (except IE7) </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:repeat</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:scrollableDataTable</literal>
+ </entry>
+ <entry> Yes (except Firefox 3.6) </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>drag-drop support</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:contextMenu</literal>
+ </entry>
+ <entry> No </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:dropDownMenu</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:tree</literal>
+ </entry>
+ <entry> Yes (except Firefox 3.5) </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:modalPanel</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:paint2d</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:panel</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:panelBar</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:panelMenu</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:progressBar</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:separator</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:simpleTogglePanel</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:spacer</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:tabPanel</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes (except tab deletion) </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:togglePanel</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:toolBar</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:toolTip</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:calendar</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:colorPicker</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:comboBox</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:editor</literal>
+ </entry>
+ <entry> No </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:fileUpload</literal>
+ </entry>
+ <entry> No </entry>
+ <entry> No </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:inplaceSelect</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:inplaceInput</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:inputNumberSpinner</literal>
+ </entry>
+ <entry> Yes (except IE7) </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:inputNumberSlider</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:suggestionBox</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:listShuttle</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:orderingList</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:pickList</literal>
+ </entry>
+ <entry> Yes </entry>
+ <entry> Yes </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>
+<!-- DO NOT UNCOMMENT <section>
<title>jboss-portlet.xml</title>
<para>
To avoid scripts loading more than once from different portlet windows you can define additional scripts in
@@ -890,140 +567,105 @@
</header-content>
</portlet>
]]></programlisting>
-</section> -->
- </section>
-
- <section id="sect-Reference_Guide-Bridge_Configuration-Seam_Setup_and_Configuration_Options">
- <title>Seam Setup and Configuration Options</title>
- <section id="sect-Reference_Guide-Seam_Setup_and_Configuration_Options-Configuration">
- <title>Configuration</title>
- <para>
+</section> --> </section>
+ <section id="sect-Reference_Guide-Bridge_Configuration-Seam_Setup_and_Configuration_Options">
+ <title>Seam Setup and Configuration Options</title>
+ <section id="sect-Reference_Guide-Seam_Setup_and_Configuration_Options-Configuration">
+ <title>Configuration</title>
+ <para>
The <literal>ExceptionHandler</literal> is used to clean <application>Seam</application> contexts and transactions after errors.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default207.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <!-- Section removed as per feedback from Prabhat Jha
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default207.xml" parse="text"/></programlisting>
+<!-- Section removed as per feedback from Prabhat Jha
<para>
If you are using this bridge version from <literal>2.0.0.BETA</literal> through <literal>2.0.0.CR1</literal>, you must define the following <filename>web.xml</filename> parameter to use the JBoss Portlet Bridge provided Seam Phase Listener. This is done by the bridge automatically (if needed) in <literal>2.0.0.FINAL</literal>.
</para>
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default208.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting> -->
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Bridge_Configuration-Portlet_2.0_Coordination">
- <title>Portlet 2.0 Coordination</title>
- <note>
- <title>Schema and XSD Definitions</title>
- <para>
+<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default208.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting> --> </section>
+ </section>
+ <section id="sect-Reference_Guide-Bridge_Configuration-Portlet_2.0_Coordination">
+ <title>Portlet 2.0 Coordination</title>
+ <note>
+ <title>Schema and XSD Definitions</title>
+ <para>
It is important to ensure, before using either of the following mechanisms, that the proper 2.0 schema and xsd are defined at the top of your <filename>portlet.xml</filename>.
</para>
-
- </note>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default209.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events">
- <title>Sending and Receiving Events</title>
- <section id="sect-Reference_Guide-Sending_and_Receiving_Events-Configuration">
- <title>Configuration</title>
- <para>
+ </note>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default209.xml" parse="text"/></programlisting>
+ <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events">
+ <title>Sending and Receiving Events</title>
+ <section id="sect-Reference_Guide-Sending_and_Receiving_Events-Configuration">
+ <title>Configuration</title>
+ <para>
Just like with any portlet 2.0 event consumer and receiver, you must define them in the <filename>portlet.xml</filename>.
</para>
- <!-- Unsure if community reference is appropriate enterprise doc. As per QE concern (anross
+<!-- Unsure if community reference is appropriate enterprise doc. As per QE concern (anross
<para>
To see a working example, checkout the Seam Booking Demo portlet. <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.0.0.FINAL/examples/se..." />
-</para> --> <para>
+</para> --> <para>
You must also define the following <emphasis>init params</emphasis> in your <filename>portlet.xml</filename>.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default210.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default210.xml" parse="text"/></programlisting>
+ <para>
While future versions of the 2.0 bridge will automate the dispatching and consuming of events, at the moment you must dispatch the event in the JSF or Seam backing bean.
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/default211.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default211.java" parse="text"/></programlisting>
+ <para>
You must also create the event handler class by implementing the <literal>BridgeEventHandler</literal> interface to process the event payload.
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/BookingEventHandler.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters">
- <title>Public Render Parameters</title>
- <section id="sect-Reference_Guide-Public_Render_Parameters-Configuration">
- <title>Configuration</title>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/BookingEventHandler.java" parse="text"/></programlisting>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters">
+ <title>Public Render Parameters</title>
+ <section id="sect-Reference_Guide-Public_Render_Parameters-Configuration">
+ <title>Configuration</title>
+ <para>
Public Render Parameters (or PRPs) are one of the most powerful and simple Portlet 2.0 features. Several portlets (JSF or otherwise) can share the same render parameters. This feature can be used to present a cohesive UI to the user across all portlets on the page. An example would be using an employee ID to display relative data.
</para>
- <para>
+ <para>
The bridge maps a render parameter to a backing bean using settings in your <filename>faces-config.xml</filename> and <filename>portlet.xml</filename>.
</para>
- <para>
- A clear and working example can be found in the Seam Booking Demo portlet. <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.2.0.GA.EPP520/example..." />
+ <para>
+ A clear and working example can be found in the Seam Booking Demo portlet. <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.2.0.GA.EPP520/example..."/>
</para>
- <para>
+ <para>
You must define the following <emphasis>init params</emphasis> in your <filename>portlet.xml</filename>.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default212.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default212.xml" parse="text"/></programlisting>
+ <para>
Create a managed bean and <literal>public-parameter-mappings</literal> in your <filename>faces-config.xml</filename>. This should be a basic bean that you can bind the passed parameter to a string with <emphasis>getter</emphasis> and <emphasis>setter</emphasis>.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default213.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default213.xml" parse="text"/></programlisting>
+ <para>
You must set the parameter in the JSF or Seam backing bean, if you are providing one from your portlet.
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/default214.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default214.java" parse="text"/></programlisting>
+ <para>
Then you must also implement the <literal>BridgePublicRenderParameterHandler</literal> interface to process any updates from the received parameter.
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/default215.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Serving_Your_JSF_Resources_in_a_Portlet">
- <title>Serving Your JSF Resources in a Portlet</title>
- <section id="sect-Reference_Guide-Serving_Your_JSF_Resources_in_a_Portlet-Configuration">
- <title>Configuration</title>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default215.java" parse="text"/></programlisting>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Serving_Your_JSF_Resources_in_a_Portlet">
+ <title>Serving Your JSF Resources in a Portlet</title>
+ <section id="sect-Reference_Guide-Serving_Your_JSF_Resources_in_a_Portlet-Configuration">
+ <title>Configuration</title>
+ <para>
We have setup a few examples to show you how to use <literal>EL</literal> and a simple bean that will allow you to use the portlet resource serving mechanism within a JSF portlet.
</para>
- <para>
+ <para>
In <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.0.0.CR1/examples/rich...">ResourceBean.java</ulink>, you can see a very simple implementation of a Map object that uses the bridge to get and encode a resource url served from the portlets web application.
</para>
- <para>
- So, when you have the normal "<filename>/images</filename>", "<filename>/styles</filename>" and other resource folders in your web application, you can use the following <literal>EL</literal> expression to serve them in your JSF application.
+ <para>
+ So, when you have the normal "<filename>/images</filename>", "<filename>/styles</filename>" and other resource folders in your web application, you can use the following <literal>EL</literal> expression to serve them in your JSF application.
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/default216.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default216.java" parse="text"/></programlisting>
+ <para>
Just copy the <literal>ResourceBean.java</literal> code above, and add an entry to your <filename>faces-config.xml</filename> for the bean:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default217.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
- </section>
-
-
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/PortletBridge_Configuration/default217.xml" parse="text"/></programlisting>
+ </section>
</section>
-
-
+ </section>
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -142,7 +142,7 @@
</step>
<step>
<para>
- Copy the package file into <literal>JBOSS_HOME/server/default/deploy</literal>.
+ Copy the package file into <literal>EPP_HOME/server/default/deploy</literal>.
</para>
</step>
<step>
@@ -404,19 +404,22 @@
<para>
The code below is from the <filename> jsphellouser/src/main/java/org/jboss/portal/portlet/samples/JSPHelloUserPortlet.java</filename> Java source. It is split in different pieces.
</para>
- <programlisting language="Java" linenumbering="numbered"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/JSPHelloUserPortlet.java" parse="text"/></programlisting>
- <para>
+ <example>
+ <title>JSPHelloUserPortlet Explanation</title>
+ <programlisting language="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/JSPHelloUserPortlet.java" parse="text"/></programlisting>
+ <para>Comment #1:
Override the <emphasis>doView</emphasis> method (as in the first tutorial).
</para>
- <para>
+ <para>Comment #2:
This entry attempts to obtain the value of the render parameter named <literal>yourname</literal>. If defined it should redirect to the <filename>hello.jsp</filename> JSP page, otherwise to the <filename>welcome.jsp</filename> JSP page.
</para>
- <para>
+ <para>Comment #3:
Get a request dispatcher on a file located within the web archive.
</para>
- <para>
+ <para>Comment #4:
Perform the inclusion of the markup obtained from the JSP.
</para>
+ </example>
<para>
As well as the <literal>VIEW</literal> portlet mode, the specification defines two other modes; <literal>EDIT</literal> and <literal>HELP</literal>.
</para>
@@ -436,31 +439,18 @@
<para>
The code to be executed during an action has to be implemented in the <emphasis>processAction</emphasis> method of the portlet.
</para>
- <programlistingco>
- <areaspec>
- <area coords="2 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-processAction"/>
- <area coords="5 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-getActionParameter"/>
- <area coords="6 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-setRenderParameter"/>
- </areaspec>
+ <example>
+ <title>processAction Explanation</title>
<programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default249.java" parse="text"/></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-processAction">
- <para>
+ <para>Comment #1:
<literal>processAction</literal> is the method from <literal>GenericPortlet</literal> to override for the <emphasis>action</emphasis> phase.
</para>
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-getActionParameter">
- <para>
- Here the parameter is retrieved through an <emphasis>action URL</emphasis>.
+ <para>Comment #2: Here the parameter is retrieved through an <emphasis>action URL</emphasis>.
</para>
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-setRenderParameter">
- <para>
+ <para>Comment #3:
The value of <literal>yourname</literal> is kept to make it available in the rendering phase. The previous line simply copies an action parameter to a render parameter for this example.
</para>
- </callout>
- </calloutlist>
- </programlistingco>
+ </example>
</section>
<section id="sect-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library">
<title>JSP files and the Portlet Tag Library</title>
@@ -533,7 +523,7 @@
In order to write a portlet using JSF a 'bridge' is needed. This software allows developers to write a portlet application as if it was a JSF application. The bridge then negotiates the interactions between the two layers.
</para>
<para>
- An example using the JBoss Portlet Bridge is available in the <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package or the <filename>/jboss-epp-<VERSION>-docs/epp-doc/examples/portlets</filename> directory of the documentation package. The configuration is slightly different from a JSP application. This example can be used as a base to configure instead of creating a new application.
+ An example using the JBoss Portlet Bridge is available in the <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package. The configuration is slightly different from a JSP application. This example can be used as a base to configure instead of creating a new application.
</para>
<para>
As in any JSF application, the file <literal>faces-config.xml</literal> is required. It must contain the following information:
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/cluster-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/cluster-config.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/cluster-config.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,55 +1,49 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Cluster_Configuration">
- <title>Cluster Configuration</title>
- <section id="sect-Reference_Guide-Cluster_Configuration-Launching_Cluster">
- <title>Launching Cluster</title>
- <section id="sect-Reference_Guide-Launching_Cluster-Deploying_eXo_JCR_to_JBoss_Application_Server">
- <title>Deploying eXo JCR to JBoss Application Server</title>
- <para>
+ <title>Cluster Configuration</title>
+ <section id="sect-Reference_Guide-Cluster_Configuration-Launching_Cluster">
+ <title>Launching Cluster</title>
+ <section id="sect-Reference_Guide-Launching_Cluster-Deploying_eXo_JCR_to_JBoss_Application_Server">
+ <title>Deploying eXo JCR to JBoss Application Server</title>
+ <para>
To deploy eXo JCR to the JBoss AS, do the following:
</para>
- <procedure>
- <title></title>
- <step>
- <para>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Download the latest version of eXo JCR <filename>.ear</filename> file distribution.
</para>
-
- </step>
- <step>
- <para>
- Copy the file into <filename><%jboss_home%/server/<replaceable><PROFILE></replaceable>/deploy></filename> directory.
+ </step>
+ <step>
+ <para>
+ Copy the file into <filename>EPP_HOME/server/<replaceable>PROFILE</replaceable>/deploy</filename> directory.
</para>
-
- </step>
- <step>
- <para>
- Drop <filename>exo-configuration.xml</filename> into your root <replaceable><JBOSS_HOME></replaceable> directory.
+ </step>
+ <step>
+ <para>
+ Drop <filename>exo-configuration.xml</filename> into your root <replaceable>EPP_HOME</replaceable> directory.
</para>
-
- </step>
- <step>
- <para>
- Configure JAAS by inserting the XML fragment shown below into <filename><JBOSS_HOME>/server/<replaceable><PROFILE></replaceable>/conf/login-config.xml</filename>
+ </step>
+ <step>
+ <para>
+ Configure JAAS by inserting the XML fragment shown below into <filename>EPP_HOME/server/<replaceable>PROFILE</replaceable>/conf/login-config.xml</filename>
</para>
-
-<programlisting language="XML" role="XML"><application-policy name="exo-domain">
+ <programlisting language="XML" role="XML"><application-policy name="exo-domain">
<authentication>
- <login-module code="org.exoplatform.services.security.j2ee.JbossLoginModule" flag="required"></login-module>
+ <login-module code="org.exoplatform.services.security.j2ee.JbossLoginModule" flag="required"></login-module>
</authentication>
</application-policy></programlisting>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
To ensure that <emphasis>JBossTS</emphasis> and <emphasis>JBossCache</emphasis> are used, your <filename>configuration.xml</filename> file must contain:
</para>
-
-<programlisting language="XML" role="XML"><component>
+ <programlisting language="XML" role="XML"><component>
<key>org.jboss.cache.transaction.TransactionManagerLookup</key>
<type>org.jboss.cache.GenericTransactionManagerLookup</type>^
</component>
@@ -64,139 +58,119 @@
</value-param>
</init-params>
</component></programlisting>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start server:
</para>
- <para>
+ <para>
In Linux systems:
</para>
-
-<programlisting><command>sh bin/run.sh</command></programlisting>
- <para>
+ <programlisting><command>sh bin/run.sh</command></programlisting>
+ <para>
In Windows systems:
</para>
-
-<programlisting><command>bin/run.bat</command></programlisting>
-
- </step>
- <step>
- <para>
- Navigate to <ulink type="http" url="http://localhostu:8080/browser" /> ans use the credentials <emphasis role="bold">root</emphasis>/<emphasis role="bold">exo</emphasis> (login/password).
+ <programlisting><command>bin/run.bat</command></programlisting>
+ </step>
+ <step>
+ <para>
+ Navigate to <ulink url="http://localhostu:8080/browser" type="http"/> ans use the credentials <emphasis role="bold">root</emphasis>/<emphasis role="bold">exo</emphasis> (login/password).
</para>
-
- </step>
-
- </procedure>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration">
- <title>Configuring JCR to use external configuration</title>
- <itemizedlist>
- <listitem>
- <para>
- To manually configure a repository, create a new configuration file (<filename>exo-jcr-configuration.xml</filename> for example). For details, see <xref linkend="chap-Reference_Guide-JCR_configuration" />.
+ </step>
+ </procedure>
+ </section>
+ <section id="sect-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration">
+ <title>Configuring JCR to use external configuration</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ To manually configure a repository, create a new configuration file (<filename>exo-jcr-configuration.xml</filename> for example). For details, see <xref linkend="chap-Reference_Guide-JCR_configuration"/>.
</para>
- <para>
+ <para>
The configuration file must be formatted as follows:
</para>
- <programlistingco>
- <areaspec>
- <area coords="20 80" id="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-value_storages" />
- <area coords="26 80" id="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_cache" />
- <area coords="31 80" id="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_indexer" />
- <area coords="34 80" id="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_lock_manager" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><repository-service default-repository="repository1">
+ <programlistingco>
+ <areaspec>
+ <area coords="20 80" id="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-value_storages"/>
+ <area coords="26 80" id="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_cache"/>
+ <area coords="31 80" id="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_indexer"/>
+ <area coords="34 80" id="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_lock_manager"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><repository-service default-repository="repository1">
<repositories>
- <repository name="repository1" system-workspace="ws1" default-workspace="ws1">
+ <repository name="repository1" system-workspace="ws1" default-workspace="ws1">
<security-domain>exo-domain</security-domain>
<access-control>optional</access-control>
<authentication-policy>org.exoplatform.services.jcr.impl.core.access.JAASAuthenticator</authentication-policy>
<workspaces>
- <workspace name="ws1">
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
+ <workspace name="ws1">
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
<properties>
- <property name="source-name" value="jdbcjcr" />
- <property name="dialect" value="oracle" />
- <property name="multi-db" value="false" />
- <property name="update-storage" value="false" />
- <property name="max-buffer-size" value="200k" />
- <property name="swap-directory" value="../temp/swap/production" />
+ <property name="source-name" value="jdbcjcr" />
+ <property name="dialect" value="oracle" />
+ <property name="multi-db" value="false" />
+ <property name="update-storage" value="false" />
+ <property name="max-buffer-size" value="200k" />
+ <property name="swap-directory" value="../temp/swap/production" />
</properties>
<value-storages>
</value-storages>
</container>
- <initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
+ <initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
<properties>
- <property name="root-nodetype" value="nt:unstructured" />
+ <property name="root-nodetype" value="nt:unstructured" />
</properties>
</initializer>
- <cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache">
+ <cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache">
</cache>
- <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
</query-handler>
- <lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
+ <lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
</lock-manager>
</workspace>
- <workspace name="ws2">
+ <workspace name="ws2">
...
</workspace>
- <workspace name="wsN">
+ <workspace name="wsN">
...
</workspace>
</workspaces>
</repository>
</repositories>
</repository-service></programlisting>
- <calloutlist>
- <!-- # --> <callout arearefs="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-value_storages">
- <para>
- Refer to <xref linkend="exam-Reference_Guide-Configuration_requirements-Value_Storage_configuration" />.
+ <calloutlist>
+<!-- # --> <callout arearefs="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-value_storages">
+ <para>
+ Refer to <xref linkend="exam-Reference_Guide-Configuration_requirements-Value_Storage_configuration"/>.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_cache">
- <para>
- Refer to <xref linkend="exam-Reference_Guide-Configuration_requirements-Cache_configuration" />.
+ </callout>
+ <callout arearefs="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_cache">
+ <para>
+ Refer to <xref linkend="exam-Reference_Guide-Configuration_requirements-Cache_configuration"/>.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_indexer">
- <para>
- Refer to <xref linkend="exam-Reference_Guide-Configuration_requirements-Indexer_configuration" />.
+ </callout>
+ <callout arearefs="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_indexer">
+ <para>
+ Refer to <xref linkend="exam-Reference_Guide-Configuration_requirements-Indexer_configuration"/>.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_lock_manager">
- <para>
- Refer to <xref linkend="exam-Reference_Guide-Configuration_requirements-Lock_Manager_configuration" />.
+ </callout>
+ <callout arearefs="area-Reference_Guide-Launching_Cluster-Configuring_JCR_to_use_external_configuration-conf_lock_manager">
+ <para>
+ Refer to <xref linkend="exam-Reference_Guide-Configuration_requirements-Lock_Manager_configuration"/>.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
- </listitem>
- <listitem>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </listitem>
+ <listitem>
+ <para>
Then, update <parameter>RepositoryServiceConfiguration</parameter> configuration in the <filename>exo-configuration.xml</filename> to reference your file:
</para>
-
-<programlisting language="XML" role="XML"><component>
+ <programlisting language="XML" role="XML"><component>
<key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
<type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
<init-params>
@@ -207,128 +181,101 @@
</value-param>
</init-params>
</component></programlisting>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
-
+ </listitem>
+ </itemizedlist>
</section>
-
- <section id="sect-Reference_Guide-Cluster_Configuration-Requirements">
- <title>Requirements</title>
- <section id="sect-Reference_Guide-Requirements-Environment_requirements">
- <title>Environment requirements</title>
- <itemizedlist>
- <listitem>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Cluster_Configuration-Requirements">
+ <title>Requirements</title>
+ <section id="sect-Reference_Guide-Requirements-Environment_requirements">
+ <title>Environment requirements</title>
+ <itemizedlist>
+ <listitem>
+ <para>
Every node of the cluster <emphasis role="bold">must</emphasis> have the same mounted Network File System (<abbrev>NFS</abbrev>) with the read and write permissions on it.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Every node of cluster <emphasis role="bold">must</emphasis> use the same database.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The same Clusters on different nodes <emphasis role="bold">must</emphasis> have the same names.
</para>
- <example id="exam-Reference_Guide-Environment_requirements-Example">
- <title>Example</title>
- <para>
+ <example id="exam-Reference_Guide-Environment_requirements-Example">
+ <title>Example</title>
+ <para>
If the <emphasis>Indexer</emphasis> cluster in the <emphasis>production</emphasis> workspace on the first node is named <literal>production_indexer_cluster</literal>, then <emphasis>indexer</emphasis> clusters in the <emphasis>production</emphasis> workspace on all other nodes <emphasis role="bold">must</emphasis> also be named <literal>production_indexer_cluster</literal>.
</para>
-
- </example>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Requirements-Configuration_requirements">
- <title>Configuration requirements</title>
- <para>
+ </example>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Requirements-Configuration_requirements">
+ <title>Configuration requirements</title>
+ <para>
The configuration of every workspace in the repository must contain the following elements:
</para>
- <example id="exam-Reference_Guide-Configuration_requirements-Value_Storage_configuration">
- <title>Value Storage configuration</title>
-
-<programlisting language="XML" role="XML"><value-storages>
- <value-storage id="system" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
+ <example id="exam-Reference_Guide-Configuration_requirements-Value_Storage_configuration">
+ <title>Value Storage configuration</title>
+ <programlisting language="XML" role="XML"><value-storages>
+ <value-storage id="system" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
<properties>
- <property name="path" value="/mnt/tornado/temp/values/production" /> <!--path within NFS where ValueStorage will hold it's data-->
+ <property name="path" value="/mnt/tornado/temp/values/production" /> <!--path within NFS where ValueStorage will hold it's data-->
</properties>
<filters>
- <filter property-type="Binary" />
+ <filter property-type="Binary" />
</filters>
</value-storage>
</value-storages></programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Configuration_requirements-Cache_configuration">
- <title>Cache configuration</title>
-
-<programlisting language="XML" role="XML"><cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache">
+ </example>
+ <example id="exam-Reference_Guide-Configuration_requirements-Cache_configuration">
+ <title>Cache configuration</title>
+ <programlisting language="XML" role="XML"><cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache">
<properties>
- <property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-data.xml" /> <!-- path to JBoss Cache configuration for data storage -->
- <property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /> <!-- path to JGroups configuration -->
- <property name="jbosscache-cluster-name" value="JCR_Cluster_cache_production" /> <!-- JBoss Cache data storage cluster name -->
- <property name="jgroups-multiplexer-stack" value="true" />
+ <property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-data.xml" /> <!-- path to JBoss Cache configuration for data storage -->
+ <property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /> <!-- path to JGroups configuration -->
+ <property name="jbosscache-cluster-name" value="JCR_Cluster_cache_production" /> <!-- JBoss Cache data storage cluster name -->
+ <property name="jgroups-multiplexer-stack" value="true" />
</properties>
</cache></programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Configuration_requirements-Indexer_configuration">
- <title>Indexer configuration</title>
-
-<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ </example>
+ <example id="exam-Reference_Guide-Configuration_requirements-Indexer_configuration">
+ <title>Indexer configuration</title>
+ <programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
- <property name="changesfilter-class" value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" />
- <property name="index-dir" value="/mnt/tornado/temp/jcrlucenedb/production" /> <!-- path within NFS where ValueStorage will hold it's data -->
- <property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-indexer.xml" /> <!-- path to JBoss Cache configuration for indexer -->
- <property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /> <!-- path to JGroups configuration -->
- <property name="jbosscache-cluster-name" value="JCR_Cluster_indexer_production" /> <!-- JBoss Cache indexer cluster name -->
- <property name="jgroups-multiplexer-stack" value="true" />
+ <property name="changesfilter-class" value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter" />
+ <property name="index-dir" value="/mnt/tornado/temp/jcrlucenedb/production" /> <!-- path within NFS where ValueStorage will hold it's data -->
+ <property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-indexer.xml" /> <!-- path to JBoss Cache configuration for indexer -->
+ <property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /> <!-- path to JGroups configuration -->
+ <property name="jbosscache-cluster-name" value="JCR_Cluster_indexer_production" /> <!-- JBoss Cache indexer cluster name -->
+ <property name="jgroups-multiplexer-stack" value="true" />
</properties>
</query-handler></programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Configuration_requirements-Lock_Manager_configuration">
- <title>Lock Manager configuration</title>
-
-<programlisting language="XML" role="XML"><lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
+ </example>
+ <example id="exam-Reference_Guide-Configuration_requirements-Lock_Manager_configuration">
+ <title>Lock Manager configuration</title>
+ <programlisting language="XML" role="XML"><lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
<properties>
- <property name="time-out" value="15m" />
- <property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-lock.xml" /> <!-- path to JBoss Cache configuration for lock manager -->
- <property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /> <!-- path to JGroups configuration -->
- <property name="jgroups-multiplexer-stack" value="true" />
- <property name="jbosscache-cluster-name" value="JCR_Cluster_lock_production" /> <!-- JBoss Cache locks cluster name -->
+ <property name="time-out" value="15m" />
+ <property name="jbosscache-configuration" value="jar:/conf/portal/test-jbosscache-lock.xml" /> <!-- path to JBoss Cache configuration for lock manager -->
+ <property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" /> <!-- path to JGroups configuration -->
+ <property name="jgroups-multiplexer-stack" value="true" />
+ <property name="jbosscache-cluster-name" value="JCR_Cluster_lock_production" /> <!-- JBoss Cache locks cluster name -->
- <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks_production"/> <!-- the name of the DB table where lock's data will be stored -->
- <property name="jbosscache-cl-cache.jdbc.table.create" value="true"/>
- <property name="jbosscache-cl-cache.jdbc.table.drop" value="false"/>
- <property name="jbosscache-cl-cache.jdbc.table.primarykey" value="jcrlocks_production_pk"/>
- <property name="jbosscache-cl-cache.jdbc.fqn.column" value="fqn"/>
- <property name="jbosscache-cl-cache.jdbc.node.column" value="node"/>
- <property name="jbosscache-cl-cache.jdbc.parent.column" value="parent"/>
- <property name="jbosscache-cl-cache.jdbc.datasource" value="jdbcjcr"/>
+ <property name="jbosscache-cl-cache.jdbc.table.name" value="jcrlocks_production"/> <!-- the name of the DB table where lock's data will be stored -->
+ <property name="jbosscache-cl-cache.jdbc.table.create" value="true"/>
+ <property name="jbosscache-cl-cache.jdbc.table.drop" value="false"/>
+ <property name="jbosscache-cl-cache.jdbc.table.primarykey" value="jcrlocks_production_pk"/>
+ <property name="jbosscache-cl-cache.jdbc.fqn.column" value="fqn"/>
+ <property name="jbosscache-cl-cache.jdbc.node.column" value="node"/>
+ <property name="jbosscache-cl-cache.jdbc.parent.column" value="parent"/>
+ <property name="jbosscache-cl-cache.jdbc.datasource" value="jdbcjcr"/>
</properties>
</lock-manager></programlisting>
-
- </example>
-
- </section>
-
-
+ </example>
</section>
-
-
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -54,7 +54,7 @@
JCR services are registered in the Portal container.
</para>
<para>
- Below is an example configuration from the <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jcr-configuration.xml</filename> file.
+ Below is an example configuration from the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jcr-configuration.xml</filename> file.
</para>
<programlisting linenumbering="numbered" language="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml" parse="text"/></programlisting>
<section id="sect-Reference_Guide-Portal_configuration-JCR_Configuration">
@@ -63,7 +63,7 @@
The JCR Service can use multiple <emphasis>Repositories</emphasis> and each repository can have multiple <emphasis>Workspaces</emphasis>.
</para>
<para>
- Configure the workspaces by locating the workspace you need to modify in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
+ Configure the workspaces by locating the workspace you need to modify in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
</para>
<para>
The repository configuration supports human-readable values. They are not case-sensitive.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,704 +1,552 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JDBC_Data_Container_Config">
- <title>JDBC Data Container Config</title>
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Introduction">
- <title>Introduction</title>
- <para>
+ <title>JDBC Data Container Config</title>
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Introduction">
+ <title>Introduction</title>
+ <para>
eXo JCR persistent data container can work in two configuration modes:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<phrase>Multi-database</phrase>: One database for each workspace (used in standalone eXo JCR service mode)
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<phrase>Single-database</phrase>: All workspaces persisted in one database (used in embedded eXo JCR service mode, e.g. in eXo portal)
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
The data container uses the JDBC driver to communicate with the actual database software, i.e. any JDBC-enabled data storage can be used with eXo JCR implementation.
</para>
- <para>
+ <para>
Currently the data container is tested with the following RDBMS:
</para>
- <!-- Source Metadata
+<!-- Source Metadata
URL: NA (email from Nicholas Filetto to jbossexoD(a)googlegroups.com on 10/18/2011
Author [w/email]: Nicholas Filetto: nicolas.filotto(a)exoplatform.com
License: NA
- --> <itemizedlist>
- <listitem>
- <para>
+ --> <itemizedlist>
+ <listitem>
+ <para>
MySQL 5.0.81 Driver: MySQL Connector/J 5.0.8
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
MySQL 5.1.36 Driver: MYSQL Connector/J 5.1.14
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Oracle DB 10g R2 (10.2.0.4) Driver: Oracle 10g R2 (10.2.0.4)
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Oracle DB 11g R1 (11.1.0.6.0) Driver: Oracle 11g R1 (11.2.0.1.0)
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Oracle DB 11g R2 (11.2.0.1.0) Driver: Oracle JDBC Driver v11.2.0.1.0
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
MS SQL Server 2005 SP1 Driver: JDBC Driver 3.0
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
MS SQL Server 2008 Driver: JDBC Driver 3.0
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
PostgresSQL 8.2.4 Driver: JDBC3 Driver, Version 8.2-507
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
PostgresSQL 8.3.7 Driver: JDBC3 Driver, Version 8.3-606
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
IBM DB2 9.7.4 Driver: IBM Data Server Driver for JDBC and SQLJ V9.7
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Sybase 15.0.3 ASE Driver: Sybase jConnect JDBC driver v6.05
</para>
-
- </listitem>
-
- </itemizedlist>
- <note>
- <title>Isolation Levels</title>
- <para>
+ </listitem>
+ </itemizedlist>
+ <note>
+ <title>Isolation Levels</title>
+ <para>
The JCR requires at least the <parameter>READ_COMMITED</parameter> isolation level and other RDBMS configurations can cause some side-effects and issues. So, please, make sure proper isolation level is configured on database server side.
</para>
-
- </note>
- <note>
- <para>
- One more mandatory JCR requirement for underlying databases is a case sensitive collation. Microsoft SQL Server both 2005 and 2008 customers must configure their server with collation corresponding to personal needs and requirements, but obligatorily case sensitive. For more information please refer to Microsoft SQL Server documentation page "Selecting a SQL Server Collation" <ulink url="http://msdn.microsoft.com/en-us/library/ms144250.aspx">here.</ulink>
+ </note>
+ <note>
+ <para>
+ One more mandatory JCR requirement for underlying databases is a case sensitive collation. Microsoft SQL Server both 2005 and 2008 customers must configure their server with collation corresponding to personal needs and requirements, but obligatorily case sensitive. For more information please refer to Microsoft SQL Server documentation page "Selecting a SQL Server Collation" <ulink url="http://msdn.microsoft.com/en-us/library/ms144250.aspx">here.</ulink>
</para>
-
- </note>
- <note>
- <para>
+ </note>
+ <note>
+ <para>
Be aware that JCR does not support MyISAM storage engine for the MySQL relational database management system.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
Each database software supports ANSI SQL standards but also has its own specifics. Therefore each database has its own configuration setting in the eXo JCR as a database dialect parameter. More detailed configuration of the database can be set by editing the metadata SQL-script files.
</para>
- <para>
- You can find SQL-scripts in <filename>conf/storage/</filename> directory of the <filename><replaceable><JBOSS_HOME></replaceable>jboss-as/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/lib/exo.jcr.component.core-XXX.XXX.jar</filename> file .
+ <para>
+ You can find SQL-scripts in <filename>conf/storage/</filename> directory of the <filename><replaceable>EPP_HOME</replaceable>jboss-as/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/lib/exo.jcr.component.core-XXX.XXX.jar</filename> file .
</para>
- <para>
+ <para>
The following tables show the correspondence between the scripts and databases:
</para>
- <table id="tabl-Reference_Guide-Introduction-Single_database">
- <title>Single-database</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Database
- </entry>
- <entry>
- Script
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- MySQL DB
- </entry>
- <entry>
- <filename>jcr-sjdbc.mysql.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- MySQL DB with utf-8
- </entry>
- <entry>
- <filename>jcr-sjdbc.mysql-utf8.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- PostgresSQL
- </entry>
- <entry>
- <filename>jcr-sjdbc.pqsql.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- Oracle DB
- </entry>
- <entry>
- <filename>jcr-sjdbc.ora.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- DB2 9.7
- </entry>
- <entry>
- <filename>jcr-sjdbc.db2.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- MS SQL Server
- </entry>
- <entry>
- <filename>jcr-sjdbc.mssql.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- Sybase
- </entry>
- <entry>
- <filename>jcr-sjdbc.sybase.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- HSQLDB
- </entry>
- <entry>
- <filename>jcr-sjdbc.sql</filename>
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <table id="tabl-Reference_Guide-Introduction-Multi_database">
- <title>Multi-database</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Database
- </entry>
- <entry>
- Script
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- MySQL DB
- </entry>
- <entry>
- <filename>jcr-mjdbc.mysql.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- MySQL DB with utf-8
- </entry>
- <entry>
- <filename>jcr-mjdbc.mysql-utf8.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- PostgresSQL
- </entry>
- <entry>
- <filename>jcr-mjdbc.pqsql.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- Oracle DB
- </entry>
- <entry>
- <filename>jcr-mjdbc.ora.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- DB2 9.7
- </entry>
- <entry>
- <filename>jcr-mjdbc.db2.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- MS SQL Server
- </entry>
- <entry>
- <filename>jcr-mjdbc.mssql.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- Sybase
- </entry>
- <entry>
- <filename>jcr-mjdbc.sybase.sql</filename>
- </entry>
-
- </row>
- <row>
- <entry>
- HSQLDB
- </entry>
- <entry>
- <filename>jcr-mjdbc.sql</filename>
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <para>
+ <table id="tabl-Reference_Guide-Introduction-Single_database">
+ <title>Single-database</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry> Database </entry>
+ <entry> Script </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> MySQL DB </entry>
+ <entry>
+ <filename>jcr-sjdbc.mysql.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> MySQL DB with utf-8 </entry>
+ <entry>
+ <filename>jcr-sjdbc.mysql-utf8.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> PostgresSQL </entry>
+ <entry>
+ <filename>jcr-sjdbc.pqsql.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> Oracle DB </entry>
+ <entry>
+ <filename>jcr-sjdbc.ora.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> DB2 9.7 </entry>
+ <entry>
+ <filename>jcr-sjdbc.db2.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> MS SQL Server </entry>
+ <entry>
+ <filename>jcr-sjdbc.mssql.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> Sybase </entry>
+ <entry>
+ <filename>jcr-sjdbc.sybase.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> HSQLDB </entry>
+ <entry>
+ <filename>jcr-sjdbc.sql</filename>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table id="tabl-Reference_Guide-Introduction-Multi_database">
+ <title>Multi-database</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry> Database </entry>
+ <entry> Script </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> MySQL DB </entry>
+ <entry>
+ <filename>jcr-mjdbc.mysql.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> MySQL DB with utf-8 </entry>
+ <entry>
+ <filename>jcr-mjdbc.mysql-utf8.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> PostgresSQL </entry>
+ <entry>
+ <filename>jcr-mjdbc.pqsql.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> Oracle DB </entry>
+ <entry>
+ <filename>jcr-mjdbc.ora.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> DB2 9.7 </entry>
+ <entry>
+ <filename>jcr-mjdbc.db2.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> MS SQL Server </entry>
+ <entry>
+ <filename>jcr-mjdbc.mssql.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> Sybase </entry>
+ <entry>
+ <filename>jcr-mjdbc.sybase.sql</filename>
+ </entry>
+ </row>
+ <row>
+ <entry> HSQLDB </entry>
+ <entry>
+ <filename>jcr-mjdbc.sql</filename>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
If a non-ANSI node name is used, you must use a database with MultiLanguage support. Some JDBC drivers need additional parameters for establishing a Unicode friendly connection. For example under mysql it is necessary to add an additional parameter for the JDBC driver at the end of JDBC URL:
</para>
- <para>
+ <para>
There are preconfigured configuration files for HSQLDB. Look for these files in /conf/portal and /conf/standalone folders of the jar-file <package>exo.jcr.component.core-XXX.XXX.jar</package> or source-distribution of eXo JCR implementation.
</para>
- <example id="exam-Reference_Guide-Introduction-Example_Parameter">
- <title>Example Parameter</title>
-
-<programlisting><code>jdbc:mysql://exoua.dnsalias.net/portal?characterEncoding=utf8</code></programlisting>
-
- </example>
- <para>
+ <example id="exam-Reference_Guide-Introduction-Example_Parameter">
+ <title>Example Parameter</title>
+ <programlisting><code>jdbc:mysql://exoua.dnsalias.net/portal?characterEncoding=utf8</code></programlisting>
+ </example>
+ <para>
The configuration files are located in service jars <filename>/conf/portal/configuration.xml</filename> (eXo services including JCR Repository Service) and <filename>exo-jcr-config.xml</filename> (repositories configuration) by default. In JBoss Enterprise Portal Platform, the JCR is configured in portal web application <filename>portal/WEB-INF/conf/jcr/jcr-configuration.xml</filename> (JCR Repository Service and related services) and <filename>repository-configuration.xml</filename> (repositories configuration).
</para>
- <para>
- Read more about <xref linkend="chap-Reference_Guide-JCR_configuration" />.
+ <para>
+ Read more about <xref linkend="chap-Reference_Guide-JCR_configuration"/>.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Multi_database_Configuration">
- <title>Multi-database Configuration</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Multi_database_Configuration">
+ <title>Multi-database Configuration</title>
+ <para>
You need to configure each workspace in a repository as part of multi-database configuration. Databases may reside on remote servers as required.
</para>
- <procedure>
- <title></title>
- <step>
- <para>
- Configure the data containers in the <literal>org.exoplatform.services.naming.InitialContextInitializer</literal> service. It's the JNDI context initializer which registers (binds) naming resources (DataSources) for data containers.
+ <procedure>
+ <title/>
+ <step>
+ <para>
+ Configure the data containers in the <literal>org.exoplatform.services.naming.InitialContextInitializer</literal> service. It's the JNDI context initializer which registers (binds) naming resources (DataSources) for data containers.
</para>
- <para>
+ <para>
For example (two data containers <parameter>jdbcjcr</parameter> - local HSQLDB, <parameter>jdbcjcr1</parameter> - remote MySQL):
</para>
-
-<programlisting language="XML" role="XML">
-<xi:include href="../../../../extras/Advanced_Development_JCR_Configuration/example-1.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <substeps>
- <step>
- <para>
+ <programlisting language="XML" role="XML">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_Configuration/example-1.xml" parse="text"/></programlisting>
+ <substeps>
+ <step>
+ <para>
Configure the database connection parameters:
</para>
- <itemizedlist>
- <listitem>
- <para>
- <parameter>driverClassName</parameter>, e.g. "org.hsqldb.jdbcDriver", "com.mysql.jdbc.Driver", "org.postgresql.Driver"
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>driverClassName</parameter>, e.g. "org.hsqldb.jdbcDriver", "com.mysql.jdbc.Driver", "org.postgresql.Driver"
</para>
-
- </listitem>
- <listitem>
- <para>
- <parameter>url</parameter>, e.g. "jdbc:hsqldb:file:target/temp/data/portal", "jdbc:mysql://exoua.dnsalias.net/jcr"
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>url</parameter>, e.g. "jdbc:hsqldb:file:target/temp/data/portal", "jdbc:mysql://exoua.dnsalias.net/jcr"
</para>
-
- </listitem>
- <listitem>
- <para>
- <parameter>username</parameter>, e.g. "sa", "exoadmin"
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>username</parameter>, e.g. "sa", "exoadmin"
</para>
-
- </listitem>
- <listitem>
- <para>
- <parameter>password</parameter>, e.g. "", "exo12321"
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>password</parameter>, e.g. "", "exo12321"
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </step>
-
- </substeps>
- <para>
+ </listitem>
+ </itemizedlist>
+ </step>
+ </substeps>
+ <para>
There can be connection pool configuration parameters (org.apache.commons.dbcp.BasicDataSourceFactory):
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<parameter>maxActive</parameter>, e.g. 50
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>maxIdle</parameter>, e.g. 5
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>initialSize</parameter>, e.g. 5
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
and other according to <ulink url="http://jakarta.apache.org/commons/dbcp/configuration.html">Apache DBCP configuration</ulink>
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </step>
- <step>
- <para>
+ </listitem>
+ </itemizedlist>
+ </step>
+ <step>
+ <para>
Configure the repository service. Each workspace will be configured for its own data container.
</para>
- <para>
+ <para>
For example (two workspaces <parameter>ws</parameter> - jdbcjcr, <parameter>ws1</parameter> - jdbcjcr1):
</para>
-
-<programlisting language="XML" role="XML">
-<xi:include href="../../../../extras/Advanced_Development_JCR_Configuration/example-2.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <itemizedlist>
- <listitem>
- <para>
+ <programlisting language="XML" role="XML">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_Configuration/example-2.xml" parse="text"/></programlisting>
+ <itemizedlist>
+ <listitem>
+ <para>
<parameter>source-name</parameter>: A javax.sql.DataSource name configured in InitialContextInitializer component (was <parameter>sourceName</parameter> prior JCR 1.9);
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>dialect</parameter>: A database dialect, one of <literal>hsqldb</literal>, <literal>mysql</literal>, <literal>mysql-utf8</literal>, <literal>pgsql</literal>, <literal>oracle</literal>, <literal>oracle-oci</literal>, <literal>mssql</literal>, <literal>sybase</literal>, <literal>derby</literal>, <literal>db2</literal>, <literal>db2v8</literal> or <literal>auto</literal> for dialect autodetection;
</para>
-
- </listitem>
- <listitem>
- <para>
- <parameter>multi-db</parameter>: Enable multi-database container with this parameter (set value "true");
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>multi-db</parameter>: Enable multi-database container with this parameter (set value "true");
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>max-buffer-size: A</parameter> a threshold (in bytes) after which a <literal>javax.jcr.Value</literal> content will be swapped to a file in a temporary storage. A swap for pending changes, for example.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>swap-directory</parameter>: A path in the file system used to swap the pending changes.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </step>
-
- </procedure>
-
- <para>
+ </listitem>
+ </itemizedlist>
+ </step>
+ </procedure>
+ <para>
This procedure configures two workspace which will be persistent in two different databases (<emphasis>ws</emphasis> in HSQLDB and <emphasis>ws1</emphasis> in MySQL).
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Single_database_Configuration">
- <title>Single-database Configuration</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Single_database_Configuration">
+ <title>Single-database Configuration</title>
+ <para>
Configuring a single-database data container is easier than configuring a multi-database data container as only one naming resource must be configured.
</para>
- <example id="exam-Reference_Guide-Single_database_Configuration-jdbcjcr_Data_Container">
- <title><parameter>jdbcjcr</parameter> Data Container</title>
-
-<programlisting language="XML" role="XML">
-<xi:include href="../../../../extras/Advanced_Development_JCR_Configuration/example-3.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </example>
- <para>
+ <example id="exam-Reference_Guide-Single_database_Configuration-jdbcjcr_Data_Container">
+ <title><parameter>jdbcjcr</parameter> Data Container</title>
+ <programlisting language="XML" role="XML">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_Configuration/example-3.xml" parse="text"/></programlisting>
+ </example>
+ <para>
Configure repository workspaces with this one database. The <parameter>multi-db</parameter> parameter must be set as <literal>false</literal>.
</para>
- <para>
+ <para>
For example (two workspaces <parameter>ws</parameter> - <literal>jdbcjcr</literal>, <parameter>ws1</parameter> - <literal>jdbcjcr</literal>):
</para>
- <example id="exam-Reference_Guide-Single_database_Configuration-Example">
- <title>Example</title>
-
-<programlisting language="XML" role="XML">
-<xi:include href="../../../../extras/Advanced_Development_JCR_Configuration/example-4.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </example>
- <para>
+ <example id="exam-Reference_Guide-Single_database_Configuration-Example">
+ <title>Example</title>
+ <programlisting language="XML" role="XML">
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_Configuration/example-4.xml" parse="text"/></programlisting>
+ </example>
+ <para>
This configures two persistent workspaces in one database (PostgreSQL).
</para>
- <section id="sect-Reference_Guide-Single_database_Configuration-Configuration_without_DataSource">
- <title>Configuration without DataSource</title>
- <para>
+ <section id="sect-Reference_Guide-Single_database_Configuration-Configuration_without_DataSource">
+ <title>Configuration without DataSource</title>
+ <para>
It is possible to configure the repository without binding <literal>javax.sql.DataSource</literal> in the JNDI service if you have a dedicated JDBC driver implementation with special features like XA transactions, statements/connections pooling etc:
</para>
- <procedure>
- <title></title>
- <step>
- <para>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Remove the configuration in <literal>InitialContextInitializer</literal> for your database and configure a new one directly in the workspace container.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Remove parameter <parameter>source-name</parameter> and add next lines instead. Describe your values for a JDBC driver, database URL and username.
</para>
-
- </step>
-
- </procedure>
-
- <warning>
- <title>Connection Pooling</title>
- <para>
+ </step>
+ </procedure>
+ <warning>
+ <title>Connection Pooling</title>
+ <para>
Ensure the JDBC driver provides connection pooling. Connection pooling is strongly recommended for use with the JCR to prevent a database overload.
</para>
-
- </warning>
-
-<programlisting language="XML" role="XML"><workspace name="ws" auto-init-root-nodetype="nt:unstructured">
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ </warning>
+ <programlisting language="XML" role="XML"><workspace name="ws" auto-init-root-nodetype="nt:unstructured">
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
- <property name="dialect" value="hsqldb"/>
- <property name="driverliteral" value="org.hsqldb.jdbcDriver"/>
- <property name="url" value="jdbc:hsqldb:file:target/temp/data/portal"/>
- <property name="username" value="su"/>
- <property name="password" value=""/>
+ <property name="dialect" value="hsqldb"/>
+ <property name="driverliteral" value="org.hsqldb.jdbcDriver"/>
+ <property name="url" value="jdbc:hsqldb:file:target/temp/data/portal"/>
+ <property name="username" value="su"/>
+ <property name="password" value=""/>
......</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Single_database_Configuration-Dynamic_Workspace_Creation">
- <title>Dynamic Workspace Creation</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Single_database_Configuration-Dynamic_Workspace_Creation">
+ <title>Dynamic Workspace Creation</title>
+ <para>
Workspaces can be added dynamically during runtime.
</para>
- <para>
+ <para>
This can be performed in two steps:
</para>
- <procedure>
- <title></title>
- <step>
- <para>
+ <procedure>
+ <title/>
+ <step>
+ <para>
<literal>ManageableRepository.configWorkspace(WorkspaceEntry wsConfig)</literal>: Register a new configuration in RepositoryContainer and create a WorkspaceContainer.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
<literal>ManageableRepository.createWorkspace(String workspaceName)</literal>: Creation a new workspace.
</para>
-
- </step>
-
- </procedure>
-
-
- </section>
-
-
+ </step>
+ </procedure>
</section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Simple_and_Complex_queries">
- <title>Simple and Complex queries</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Simple_and_Complex_queries">
+ <title>Simple and Complex queries</title>
+ <para>
eXo JCR provides two ways to interact with the database;
</para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term><literal>JDBCStorageConnection</literal></term>
- <listitem>
- <para>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>
+ <literal>JDBCStorageConnection</literal>
+ </term>
+ <listitem>
+ <para>
Which uses simple queries. Simple queries do not use sub queries, left or right joins. They are implemented in such a way as to support as many database dialects as possible.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term><literal>CQJDBCStorageConection</literal></term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <literal>CQJDBCStorageConection</literal>
+ </term>
+ <listitem>
+ <para>
Which uses complex queries. Complex queries are optimized to reduce the number of database calls.
</para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
Simple queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer</literal>:
</para>
-
-<programlisting language="XML" role="XML"><workspaces>
- <workspace name="ws" auto-init-root-nodetype="nt:unstructured">
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <programlisting language="XML" role="XML"><workspaces>
+ <workspace name="ws" auto-init-root-nodetype="nt:unstructured">
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
...
</workspace>
</worksapces>
</programlisting>
- <para>
+ <para>
Complex queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer</literal>:
</para>
-
-<programlisting language="XML" role="XML"><workspaces>
- <workspace name="ws" auto-init-root-nodetype="nt:unstructured">
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
+ <programlisting language="XML" role="XML"><workspaces>
+ <workspace name="ws" auto-init-root-nodetype="nt:unstructured">
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
...
</workspace>
</worksapces></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Force_Query_Hints">
- <title>Force Query Hints</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Force_Query_Hints">
+ <title>Force Query Hints</title>
+ <para>
Some databases, such as Oracle and MySQL, support hints to increase query performance. The eXo JCR has separate Complex Query implementations for the Orcale database dialect, which uses query hints to increase performance for few important queries.
</para>
- <para>
+ <para>
To enable this option, use the following configuration property:
</para>
-
-<programlisting language="XML" role="XML"><workspace name="ws" auto-init-root-nodetype="nt:unstructured">
- <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <programlisting language="XML" role="XML"><workspace name="ws" auto-init-root-nodetype="nt:unstructured">
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
- <property name="dialect" value="oracle"/>
- <property name="force.query.hints" value="true" />
+ <property name="dialect" value="oracle"/>
+ <property name="force.query.hints" value="true" />
......</programlisting>
- <para>
+ <para>
Query hints are only used for Complex Queries with the Oracle dialect. For all other dialects this parameter is ignored.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Notes_for_Microsoft_Windows_users">
- <title>Notes for Microsoft Windows users</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Notes_for_Microsoft_Windows_users">
+ <title>Notes for Microsoft Windows users</title>
+ <para>
The current configuration of eXo JCR uses <ulink url="http://commons.apache.org/dbcp/">Apache DBCP</ulink> connection pool (<literal>org.apache.commons.dbcp.BasicDataSourceFactory</literal>).
</para>
- <para>
- It is possible to set a high value for the <parameter>maxActive</parameter> parameter in the <filename>configuration.xml</filename> file. This creates a high use of TCP/IP ports from a client machine inside the pool (the JDBC driver, for example). As a result, the data container can throw exceptions like "<emphasis>Address already in use</emphasis>".
+ <para>
+ It is possible to set a high value for the <parameter>maxActive</parameter> parameter in the <filename>configuration.xml</filename> file. This creates a high use of TCP/IP ports from a client machine inside the pool (the JDBC driver, for example). As a result, the data container can throw exceptions like "<emphasis>Address already in use</emphasis>".
</para>
- <para>
- To solve this problem, you must configure the client's machine networking software to use shorter timeouts for open TCP/IP ports.
+ <para>
+ To solve this problem, you must configure the client's machine networking software to use shorter timeouts for open TCP/IP ports.
</para>
- <para>
+ <para>
This is done by editing two registry keys within the <parameter>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters</parameter> node. Both of these keys are unset by default. To set the keys as required:
</para>
- <procedure>
- <title></title>
- <step>
- <para>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Set the <parameter>MaxUserPort</parameter> registry key to <parameter>=dword:00001b58</parameter>. This sets the maximum of open ports to 7000 or higher (the default is 5000).
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Set <parameter>TcpTimedWaitDelay</parameter> to <parameter>=dword:0000001e</parameter>. This sets <parameter>TIME_WAIT</parameter> parameter to 30 seconds (the default is 240).
</para>
+ </step>
+ </procedure>
+ <example id="exam-Reference_Guide-Notes_for_Microsoft_Windows_users-Sample_Registry_File">
+ <title>Sample Registry File</title>
+ <programlisting>Windows Registry Editor Version 5.00
- </step>
-
- </procedure>
-
- <example id="exam-Reference_Guide-Notes_for_Microsoft_Windows_users-Sample_Registry_File">
- <title>Sample Registry File</title>
-
-<programlisting>Windows Registry Editor Version 5.00
-
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
-"MaxUserPort"=dword:00001b58
-"TcpTimedWaitDelay"=dword:0000001e</programlisting>
-
- </example>
-
- </section>
-
-
+"MaxUserPort"=dword:00001b58
+"TcpTimedWaitDelay"=dword:0000001e</programlisting>
+ </example>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,74 +1,64 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Multi_language_Support_the_JCR_RDB">
- <title>Multi-language Support</title>
- <para>
+ <title>Multi-language Support</title>
+ <para>
Whenever a relational database is used to store multilingual text data in the eXo Java Content Repository the configuration must be adapted to support UTF-8 encoding. Dialect is automatically detected for certified database. You can still enforce it in case of failure, see below.
</para>
- <para>
+ <para>
The following sections describe enabling UTF-8 support with various databases.
</para>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-Oracle" />
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-Oracle"/>
</para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-DB2" />
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-DB2"/>
</para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-MySQL" />
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-MySQL"/>
</para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-PostgreSQL" />
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-PostgreSQL"/>
</para>
-
- </listitem>
-
- </itemizedlist>
- <note>
- <itemizedlist>
- <listitem>
- <para>
- The configuration file to be modified for these changes is <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
+ </listitem>
+ </itemizedlist>
+ <note>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The configuration file to be modified for these changes is <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The datasource <parameter>jdbcjcr</parameter> used in the following examples can be configured via the <literal>InitialContextInitializer</literal> component.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </note>
- <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-Oracle">
- <title>Oracle</title>
- <para>
+ </listitem>
+ </itemizedlist>
+ </note>
+ <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-Oracle">
+ <title>Oracle</title>
+ <para>
In order to run multilanguage JCR on an Oracle backend Unicode encoding for characters set should be applied to the database. Other Oracle globalization parameters do not have any effect. The property to modify is <literal>NLS_CHARACTERSET</literal>.
</para>
- <para>
+ <para>
The <literal>NLS_CHARACTERSET = AL32UTF8</literal> entry has been successfully tested with many European and Asian languages.
</para>
- <para>
+ <para>
Example of database configuration:
</para>
-
-<programlisting>NLS_LANGUAGE AMERICAN
+ <programlisting>NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
@@ -87,100 +77,81 @@
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16</programlisting>
- <!-- <warning>
+<!-- <warning>
<para>
JCR 1.12.x doesn't use NVARCHAR columns, so that the value of the parameter NLS_NCHAR_CHARACTERSET does not matter for JCR.
</para>
- </warning> --> <para>
+ </warning> --> <para>
Create database with Unicode encoding and use Oracle dialect for the Workspace Container:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default54.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-DB2">
- <title>DB2</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default54.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-DB2">
+ <title>DB2</title>
+ <para>
DB2 Universal Database (DB2 UDB) supports <ulink url="http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.i...">UTF-8 and UTF-16/UCS-2</ulink>. When a Unicode database is created, <parameter>CHAR</parameter>, <parameter>VARCHAR</parameter> and <parameter>LONG VARCHAR</parameter> data are stored in UTF-8 form.
</para>
- <para>
+ <para>
This enables JCR multi-lingual support.
</para>
- <para>
+ <para>
Below is an example of creating a UTF-8 database using the <parameter>db2</parameter> dialect for a workspace container with DB2 version 9 and higher:
</para>
-
-<programlisting>DB2 CREATE DATABASE dbname USING CODESET UTF-8 TERRITORY US
+ <programlisting>DB2 CREATE DATABASE dbname USING CODESET UTF-8 TERRITORY US
</programlisting>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default56.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <note>
- <para>
- For DB2 version 8.<replaceable>x</replaceable> support change the property "dialect" to db2v8.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default56.xml" parse="text"/></programlisting>
+ <note>
+ <para>
+ For DB2 version 8.<replaceable>x</replaceable> support change the property "dialect" to db2v8.
</para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-MySQL">
- <title>MySQL</title>
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-MySQL">
+ <title>MySQL</title>
+ <para>
Using JCR with a MySQL-back end requires a special dialect <ulink url="http://jira.exoplatform.org/browse/JCR-375">MySQL-UTF8</ulink> to be used for internationalization support.
</para>
- <para>
+ <para>
The database default charset should be <parameter>latin1</parameter> so as to use limited index space effectively (1000 bytes for an <literal>MyISAM</literal> engine and 767 for <literal>InnoDB</literal>).
</para>
- <para>
+ <para>
If the database default charset is multibyte, a JCR database initialization error is encountered concerning index creation failure.
</para>
- <para>
+ <para>
JCR can work on any single byte default charset of database, with UTF8 supported by MySQL server. However it has only been tested using the <parameter>latin1</parameter> charset.
</para>
- <para>
+ <para>
An example entry:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default57.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-PostgreSQL">
- <title>PostgreSQL</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default57.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-PostgreSQL">
+ <title>PostgreSQL</title>
+ <para>
Multilingual support can be enabled with a PostgreSQL-back end in <ulink url="http://www.postgresql.org/docs/8.3/interactive/charset.html">different ways</ulink>:
</para>
- <orderedlist>
- <listitem>
- <para>
+ <orderedlist>
+ <listitem>
+ <para>
Using the locale features of the operating system to provide locale-specific collation order, number formatting, translated messages, and other aspects.
</para>
- <para>
+ <para>
UTF-8 is widely used on Linux distributions by default, so it can be useful in such cases.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Providing a number of different character sets defined in the PostgreSQL server, including multiple-byte character sets, to support storing text any language, and providing character set translation between client and server.
</para>
- <para>
+ <para>
Using UTF-8 database charset is recommended as it will allow any-to-any conversations and make this issue transparent for the JCR.
</para>
-
- </listitem>
-
- </orderedlist>
- <para>
+ </listitem>
+ </orderedlist>
+ <para>
Example of a database with UTF-8 encoding using PgSQL dialect for the Workspace Container:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default58.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default58.xml" parse="text"/></programlisting>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/search-configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/search-configuration.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/search-configuration.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,720 +1,550 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Search_Configuration">
- <title>Search Configuration</title>
- <para>
+ <title>Search Configuration</title>
+ <para>
The search function in JCR can be configured to perform in specific ways. This section will discuss configuring the search function to improve search performance and results.
</para>
- <para>
- Below is an example of the configuration file that governs search behaviors. Refer to <xref linkend="sect-Reference_Guide-Search_Configuration-Global_Search_Index" /> for how searching operates in JCR and information about customized searches.
+ <para>
+ Below is an example of the configuration file that governs search behaviors. Refer to <xref linkend="sect-Reference_Guide-Search_Configuration-Global_Search_Index"/> for how searching operates in JCR and information about customized searches.
</para>
- <para>
- The JCR index configuration file is located at <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
+ <para>
+ The JCR index configuration file is located at <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
</para>
- <para>
+ <para>
A code example is included below with a list of the configuration parameters shown below that.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default61.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default61.xml" parse="text"/></programlisting>
+ <para>
The table below outlines <emphasis role="bold">some</emphasis> of the Configuration Parameters available, their default setting, which version of eXo JCR they were implemented in and other useful information (further parameters are explained in <xref linkend="sect-Reference_Guide-JBoss_Cache_configuration-Indexer_lock_manager_and_data_container_configuration"/>):
</para>
- <table id="tabl-Reference_Guide-Search_Configuration-Configuration_parameters">
- <!-- align="left" pgwide="1" --> <title>Configuration parameters</title>
- <tgroup cols="4">
- <colspec colname="1" colwidth="90pt"></colspec>
- <colspec colname="2" colwidth="90pt"></colspec>
- <colspec colname="3" colwidth="150pt"></colspec>
- <colspec colname="4" colwidth="50pt"></colspec>
- <thead>
- <row>
- <entry>
- <para>
+ <table id="tabl-Reference_Guide-Search_Configuration-Configuration_parameters">
+<!-- align="left" pgwide="1" --> <title>Configuration parameters</title>
+ <tgroup cols="4">
+ <colspec colname="1" colwidth="90pt"/>
+ <colspec colname="2" colwidth="90pt"/>
+ <colspec colname="3" colwidth="150pt"/>
+ <colspec colname="4" colwidth="50pt"/>
+ <thead>
+ <row>
+ <entry>
+ <para>
Parameter
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Default
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Description
</para>
-
- </entry>
- <entry>
- Implemented in Version
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> Implemented in Version </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <para>
index-dir
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
none
</para>
-
- </entry>
- <entry>
- <para>
- The location of the index directory. This parameter is mandatory. It is called "<literal>indexDir</literal>" in versions prior to eXo JCR version 1.9.
+ </entry>
+ <entry>
+ <para>
+ The location of the index directory. This parameter is mandatory. It is called "<literal>indexDir</literal>" in versions prior to eXo JCR version 1.9.
</para>
-
- </entry>
- <entry>
- 1.0
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.0 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
use-compoundfile
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
true
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Advises lucene to use compound files for the index files.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
min-merge-docs
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
100
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The minimum number of nodes in an index until segments are merged.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
volatile-idle-time
</para>
-
- </entry>
- <entry>
- 3
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry> 3 </entry>
+ <entry>
+ <para>
Idle time in seconds until the volatile index part is moved to a persistent index even though <literal>minMergeDocs</literal> is not reached.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
max-merge-docs
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Integer.MAX_VALUE
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The maximum number of nodes in segments that will be merged. The default value changed to <literal>Integer.MAX_VALUE</literal> in eXo JCR version 1.9.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
merge-factor
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
10
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Determines how often segment indices are merged.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
max-field-length
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
10000
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The number of words that are full-text indexed at most per property.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
cache-size
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
1000
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Size of the document number cache. This cache maps UUID to lucene document numbers
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
force-consistencycheck
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
false
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Runs a consistency check on every start up. If false, a consistency check is only performed when the search index detects a prior forced shutdown.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
auto-repair
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
true
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Errors detected by a consistency check are automatically repaired. If false, errors are only written to the log.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- query-class
- </entry>
- <entry>
- QueryImpl
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry> query-class </entry>
+ <entry> QueryImpl </entry>
+ <entry>
+ <para>
Classname that implements the javax.jcr.query.Query interface.
</para>
- <para>
+ <para>
This class must also extend from the class: <literal>org.exoplatform.services.jcr.impl.core. query.AbstractQueryImpl</literal>.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
document-order
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
true
</para>
-
- </entry>
- <entry>
- <para>
- If true and the query does not contain an 'order by' clause, result nodes will be in document order. For better performance set to 'false' when queries return many nodes.
+ </entry>
+ <entry>
+ <para>
+ If true and the query does not contain an 'order by' clause, result nodes will be in document order. For better performance set to 'false' when queries return many nodes.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
result-fetch-size
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Integer.MAX_VALUE
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The number of results when a query is executed. Default value: <literal>Integer.MAX_VALUE</literal>.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
excerptprovider-class
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
DefaultXMLExcerpt
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The name of the class that implements <literal>org.exoplatform.services.jcr.impl.core. query.lucene.ExcerptProvider</literal>.
</para>
- <para>
+ <para>
This should be used for the <literal>rep:excerpt()</literal> function in a query.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
support-highlighting
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
false
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
If set to true additional information is stored in the index to support highlighting using the <literal>rep:excerpt()</literal> function.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
synonymprovider-class
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
none
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The name of a class that implements <literal>org.exoplatform.services.jcr.impl.core. query.lucene.SynonymProvider</literal>.
</para>
- <para>
+ <para>
The default value is null.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
synonymprovider-config-path
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
none
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The path to the synonym provider configuration file. This path is interpreted relative to the path parameter. If there is a path element inside the <literal>SearchIndex</literal> element, then this path is interpreted relative to the root path of the path. Whether this parameter is mandatory depends on the synonym provider implementation. The default value is null.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
indexing-configuration-path
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
none
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The path to the indexing configuration file.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
indexing-configuration-class
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
IndexingConfigurationImpl
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The name of the class that implements <literal>org.exoplatform.services.jcr.impl.core. query.lucene.IndexingConfiguration</literal>.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
force-consistencycheck
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
false
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
If set to true a consistency check is performed depending on the parameter <literal>forceConsistencyCheck</literal>. If set to false no consistency check is performed on start up, even if a redo log had been applied.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
spellchecker-class
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
none
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The name of a class that implements <literal>org.exoplatform.services.jcr.impl.core. query.lucene.SpellChecker</literal>.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
errorlog-size
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
50(KB)
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
The default size of error log file in KB.
</para>
-
- </entry>
- <entry>
- 1.9
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.9 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
upgrade-index
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
false
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Allows JCR to convert an existing index into the new format. It is also possible to set this property via system property.
</para>
- <para>
+ <para>
Indexes prior to eXo JCR 1.12 will not run with eXo JCR 1.12. You must run an automatic migration.
</para>
- <para>
+ <para>
Start eXo JCR with:
</para>
-
-<programlisting><command> -Dupgrade-index=true</command></programlisting>
- <para>
+ <programlisting><command> -Dupgrade-index=true</command></programlisting>
+ <para>
The old index format is then converted in the new index format. After the conversion the new format is used.
</para>
- <para>
+ <para>
On subsequent starts this option is no longer needed. The old index is replaced and a back conversion is not possible
</para>
- <para>
+ <para>
It is recommended that a backup of the index be made before conversion. (Only for migrations from JCR 1.9 and later.)
</para>
-
- </entry>
- <entry>
- 1.12
- </entry>
-
- </row>
- <row>
- <entry>
- <para>
+ </entry>
+ <entry> 1.12 </entry>
+ </row>
+ <row>
+ <entry>
+ <para>
analyzer
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
org.apache.lucene.analysis. standard.StandardAnalyzer
</para>
-
- </entry>
- <entry>
- <para>
+ </entry>
+ <entry>
+ <para>
Class name of a lucene analyzer to use for full-text indexing of text.
</para>
-
- </entry>
- <entry>
- 1.12
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <section id="sect-Reference_Guide-Search_Configuration-Global_Search_Index">
- <title>Global Search Index</title>
- <para>
+ </entry>
+ <entry> 1.12 </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <section id="sect-Reference_Guide-Search_Configuration-Global_Search_Index">
+ <title>Global Search Index</title>
+ <para>
By default eXo JCR uses the Lucene standard Analyzer to index contents. This analyzer uses some standard filters in the method that analyzes the content:
</para>
- <programlistingco>
- <areaspec>
- <area coords="4" id="area-Reference_Guide-Search_Configuration-Global_Search_Index-StandardFilter" />
- <area coords="5" id="area-Reference_Guide-Search_Configuration-Global_Search_Index-LowerCaseFilter" />
- <area coords="6" id="area-Reference_Guide-Search_Configuration-Global_Search_Index-StopFilter" />
-
- </areaspec>
-
-<programlisting language="Java" role="Java"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default62.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Search_Configuration-Global_Search_Index-StandardFilter">
- <para>
- The first filter (StandardFilter) removes possessive apostrophes (<emphasis role="bold">'s</emphasis>) from the end of words and removes periods (<emphasis role="bold">.</emphasis>) from acronyms.
+ <programlistingco>
+ <areaspec>
+ <area coords="4" id="area-Reference_Guide-Search_Configuration-Global_Search_Index-StandardFilter"/>
+ <area coords="5" id="area-Reference_Guide-Search_Configuration-Global_Search_Index-LowerCaseFilter"/>
+ <area coords="6" id="area-Reference_Guide-Search_Configuration-Global_Search_Index-StopFilter"/>
+ </areaspec>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default62.java" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Search_Configuration-Global_Search_Index-StandardFilter">
+ <para>
+ The first filter (StandardFilter) removes possessive apostrophes (<emphasis role="bold">'s</emphasis>) from the end of words and removes periods (<emphasis role="bold">.</emphasis>) from acronyms.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Search_Configuration-Global_Search_Index-LowerCaseFilter">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Search_Configuration-Global_Search_Index-LowerCaseFilter">
+ <para>
The second filter (LowerCaseFilter) normalizes token text to lower case.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Search_Configuration-Global_Search_Index-StopFilter">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Search_Configuration-Global_Search_Index-StopFilter">
+ <para>
The last filter (StopFilter) removes stop words from a token stream. The stop set is defined in the analyzer.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <para>
- The global search index is configured in the <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><VERSION></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename> configuration file within the "query-handler" tag.
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <para>
+ The global search index is configured in the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable><VERSION></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename> configuration file within the "query-handler" tag.
</para>
-
-<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
</programlisting>
- <para>
+ <para>
The same analyzer should always be used for indexing and for querying in lucene otherwise results may be unpredictable. eXo JCR does this automatically. The StandardAnalyzer (configured by default) can, however, be replaced with another.
</para>
- <para>
+ <para>
A customized QueryHandler can also be easily created.
</para>
- <formalpara id="form-Reference_Guide-Global_Search_Index-Customized_Search_Indexes_and_Analyzers">
- <title>Customized Search Indexes and Analyzers</title>
- <para>
+ <formalpara id="form-Reference_Guide-Global_Search_Index-Customized_Search_Indexes_and_Analyzers">
+ <title>Customized Search Indexes and Analyzers</title>
+ <para>
By default Exo JCR uses the Lucene standard Analyzer to index contents. This analyzer uses some standard filters in the method that analyzes the content:
</para>
-
- </formalpara>
-
-<programlisting language="Java" role="Java">public TokenStream tokenStream(String fieldName, Reader reader) {
+ </formalpara>
+ <programlisting language="Java" role="Java">public TokenStream tokenStream(String fieldName, Reader reader) {
StandardTokenizer tokenStream = new StandardTokenizer(reader, replaceInvalidAcronym);
tokenStream.setMaxTokenLength(maxTokenLength);
TokenStream result = new StandardFilter(tokenStream);
@@ -722,356 +552,299 @@
result = new StopFilter(result, stopSet);
return result;
}</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- The first one (StandardFilter) removes 's (as 's in "Peter's") from the end of words and removes dots from acronyms.
+ <itemizedlist>
+ <listitem>
+ <para>
+ The first one (StandardFilter) removes 's (as 's in "Peter's") from the end of words and removes dots from acronyms.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The second one (LowerCaseFilter) normalizes token text to lower case.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The last one (StopFilter) removes stop words from a token stream. The stop set is defined in the analyzer.
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
Additional filters can be used in specific cases. The <phrase>ISOLatin1AccentFilter</phrase> filter, for example, which replaces accented characters in the ISO Latin 1 character set (ISO-8859-1) by their unaccented equivalents.
</para>
- <para>
+ <para>
The <phrase>ISOLatin1AccentFilter</phrase> is not present in the current lucene version used by eXo.
</para>
- <para>
+ <para>
In order to use a different filter, a new analyzer must be created, as well as new search index to use the analyzer. These are packaged into a jar file, which is then deployed with the application.
</para>
- <procedure id="proc-Reference_Guide-Global_Search_Index-Create_a_new_filter_analyzer_and_search_index">
- <title>Create a new filter, analyzer and search index</title>
- <step>
- <para>
+ <procedure id="proc-Reference_Guide-Global_Search_Index-Create_a_new_filter_analyzer_and_search_index">
+ <title>Create a new filter, analyzer and search index</title>
+ <step>
+ <para>
Create a new filter with the method:
</para>
-
-<programlisting language="Java" role="JAVA">public final Token next(final Token reusableToken) throws java.io.IOException
+ <programlisting language="Java" role="JAVA">public final Token next(final Token reusableToken) throws java.io.IOException
</programlisting>
- <para>
+ <para>
This defines how characters are read and used by the filter.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Create the analyzer.
</para>
- <para>
+ <para>
The analyzer must extend <literal>org.apache.lucene.analysis.standard.StandardAnalyzer</literal> and overload the method.
</para>
- <para>
+ <para>
Use the following to use new filters.
</para>
-
-<programlisting language="Java" role="JAVA">public TokenStream tokenStream(String fieldName, Reader reader)
+ <programlisting language="Java" role="JAVA">public TokenStream tokenStream(String fieldName, Reader reader)
</programlisting>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
To create the new search index, extend <literal>org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex</literal> and write the constructor to set the correct analyzer.
</para>
- <para>
+ <para>
Use the method below to return your analyzer:
</para>
-
-<programlisting language="Java" role="JAVA">public Analyzer getAnalyzer() {
+ <programlisting language="Java" role="JAVA">public Analyzer getAnalyzer() {
return MyAnalyzer;
}
</programlisting>
-
- </step>
-
- </procedure>
-
- <note>
- <para>
+ </step>
+ </procedure>
+ <note>
+ <para>
In eXo JCR version 1.12 (and later) the analyzer can be directly set in the configuration. For users with this version the creation of a new SearchIndex for new analyzers is redundant.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
To configure an application to use a new <literal>SearchIndex</literal>, replace the following code:
</para>
-
-<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
</programlisting>
- <para>
- in <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><VERSION></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename> with the new class:
+ <para>
+ in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable><VERSION></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename> with the new class:
</para>
-
-<programlisting language="XML" role="XML"><query-handler class="mypackage.indexation.MySearchIndex>
+ <programlisting language="XML" role="XML"><query-handler class="mypackage.indexation.MySearchIndex>
</programlisting>
- <para>
- To configure an application to use a new analyzer, add the <parameter>analyzer</parameter> parameter to each query-handler configuration in <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><VERSION></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>:
+ <para>
+ To configure an application to use a new analyzer, add the <parameter>analyzer</parameter> parameter to each query-handler configuration in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable><VERSION></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default69.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default69.xml" parse="text"/></programlisting>
+ <para>
The new <literal>SearchIndex</literal> will start to index contents with the specified filters when the JCR is next started.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Search_Configuration-IndexingConfiguration">
- <title>IndexingConfiguration</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Search_Configuration-IndexingConfiguration">
+ <title>IndexingConfiguration</title>
+ <para>
From version 1.9, the default search index implementation in JCR allows user control over which properties of a node are indexed. Different analyzers can also be set for different nodes.
</para>
- <para>
+ <para>
The configuration parameter is called <literal>indexingConfiguration</literal> and is not set by default. This means all properties of a node are indexed.
</para>
- <para>
+ <para>
To configure the indexing behavior add a parameter to the query-handler element in your configuration file.
</para>
-
-<programlisting language="XML" role="XML"><param name="indexing-configuration-path" value="/indexing_configuration.xml"/>
+ <programlisting language="XML" role="XML"><param name="indexing-configuration-path" value="/indexing_configuration.xml"/>
</programlisting>
- <formalpara id="form-Reference_Guide-IndexingConfiguration-Node_Scope_Limit">
- <title>Node Scope Limit</title>
- <para>
+ <formalpara id="form-Reference_Guide-IndexingConfiguration-Node_Scope_Limit">
+ <title>Node Scope Limit</title>
+ <para>
The node scope can be limited so that only certain properties of a node type are indexed. This can optimize the index size.
</para>
-
- </formalpara>
- <para>
+ </formalpara>
+ <para>
With the configuration below only properties named <parameter>Text</parameter> are indexed for <parameter>nt:unstructured</parameter> node types. This configuration also applies to all nodes whose type extends from <parameter>nt:unstructured</parameter>.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default71.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <note>
- <title>Namespace Prefixes</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default71.xml" parse="text"/></programlisting>
+ <note>
+ <title>Namespace Prefixes</title>
+ <para>
The <phrase>namespace prefixes</phrase> must be declared throughout the XML file in the configuration element that is being used.
</para>
-
- </note>
- <formalpara id="form-Reference_Guide-IndexingConfiguration-Indexing_Boost_Value">
- <title>Indexing Boost Value</title>
- <para>
+ </note>
+ <formalpara id="form-Reference_Guide-IndexingConfiguration-Indexing_Boost_Value">
+ <title>Indexing Boost Value</title>
+ <para>
It is also possible to configure a <phrase>boost value</phrase> for the nodes that match the index rule. 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>
-
- </formalpara>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default72.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ </formalpara>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default72.xml" parse="text"/></programlisting>
+ <para>
If you do not wish to boost the complete node, but only certain properties, you can also provide a boost value for the listed properties:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default73.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <formalpara id="form-Reference_Guide-IndexingConfiguration-Conditional_Index_Rules">
- <title>Conditional Index Rules</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default73.xml" parse="text"/></programlisting>
+ <formalpara id="form-Reference_Guide-IndexingConfiguration-Conditional_Index_Rules">
+ <title>Conditional Index Rules</title>
+ <para>
You may also add a <phrase>condition</phrase> to the index rule and have multiple rules with the same nodeType. The first index rule that matches will apply and all remaining ones are ignored:
</para>
-
- </formalpara>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default74.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ </formalpara>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default74.xml" parse="text"/></programlisting>
+ <para>
In the above example the first rule only applies if the <parameter>nt:unstructured</parameter> node has a priority property with a value <parameter>high</parameter>. The condition syntax only supports the equals operator and a string literal.
</para>
- <para>
+ <para>
Properties may also be referenced on the condition that are not on the current node:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default75.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default75.xml" parse="text"/></programlisting>
+ <para>
The indexing configuration allows the type of a node in the condition to be specified. Please note however that the type match must be exact. It does not consider sub types of the specified node type.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default76.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <formalpara id="form-Reference_Guide-IndexingConfiguration-Exclusion_from_the_Node_Scope_Index">
- <title>Exclusion from the Node Scope Index</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default76.xml" parse="text"/></programlisting>
+ <formalpara id="form-Reference_Guide-IndexingConfiguration-Exclusion_from_the_Node_Scope_Index">
+ <title>Exclusion from the Node Scope Index</title>
+ <para>
All configured properties are full-text indexed by default (if they are of type STRING and included in the node scope index).
</para>
-
- </formalpara>
- <para>
- A node scope search normally finds all nodes of an index. That is to say; <literal>jcr:contains(., 'foo')</literal> returns all nodes that have a string property containing the word '<replaceable>foo</replaceable>'.
+ </formalpara>
+ <para>
+ A node scope search normally finds all nodes of an index. That is to say; <literal>jcr:contains(., 'foo')</literal> returns all nodes that have a string property containing the word '<replaceable>foo</replaceable>'.
</para>
- <para>
+ <para>
Properties can be explicitly excluded from the node scope index with:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default77.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <formalpara id="form-Reference_Guide-IndexingConfiguration-Index_Aggregates">
- <title>Index Aggregates</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default77.xml" parse="text"/></programlisting>
+ <formalpara id="form-Reference_Guide-IndexingConfiguration-Index_Aggregates">
+ <title>Index Aggregates</title>
+ <para>
Sometimes it is useful to include the contents of descendant nodes into a single node to more easily search on content that is scattered across multiple nodes.
</para>
-
- </formalpara>
- <para>
+ </formalpara>
+ <para>
JCR allows the definition of index aggregates based on relative path patterns and primary node types.
</para>
- <para>
+ <para>
The following example creates an index aggregate on <literal>nt:file</literal> that includes the content of the jcr:content node:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default78.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default78.xml" parse="text"/></programlisting>
+ <para>
Included nodes can also be restricted to a certain type:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default79.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default79.xml" parse="text"/></programlisting>
+ <para>
The <emphasis role="bold">*</emphasis> wild-card can be used to match all child nodes:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default80.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default80.xml" parse="text"/></programlisting>
+ <para>
Nodes to a certain depth below the current node can be included by adding multiple include elements. The <parameter>nt:file</parameter> node may contain a complete XML document under jcr:content for example:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default81.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <formalpara id="form-Reference_Guide-IndexingConfiguration-Property_Level_Analyzers">
- <title>Property-Level Analyzers</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default81.xml" parse="text"/></programlisting>
+ <formalpara id="form-Reference_Guide-IndexingConfiguration-Property_Level_Analyzers">
+ <title>Property-Level Analyzers</title>
+ <para>
How a property has to be analyzed can be defined in the following configuration section. If there is an analyzer configuration for a property, this analyzer is used for indexing and searching of this property. For example:
</para>
-
- </formalpara>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_search-configuration/default82.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- The configuration above sets lucene <emphasis role="bold">KeywordAnalyzer</emphasis> to index and search the property "<replaceable>mytext</replaceable>" across the entire workspace while the "<replaceable>mytext2</replaceable>" property is searched with the <emphasis role="bold">WhitespaceAnalyzer</emphasis>.
+ </formalpara>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_search-configuration/default82.xml" parse="text"/></programlisting>
+ <para>
+ The configuration above sets lucene <emphasis role="bold">KeywordAnalyzer</emphasis> to index and search the property "<replaceable>mytext</replaceable>" across the entire workspace while the "<replaceable>mytext2</replaceable>" property is searched with the <emphasis role="bold">WhitespaceAnalyzer</emphasis>.
</para>
- <para>
+ <para>
The <emphasis role="bold">WhitespaceAnalyzer</emphasis> tokenizes a property, the <emphasis role="bold">KeywordAnalyzer</emphasis> takes the property as a whole.
</para>
- <para>
+ <para>
Using different analyzers for different languages can be particularly useful.
</para>
- <formalpara id="form-Reference_Guide-IndexingConfiguration-Characteristics_of_Node_Scope_Searches">
- <title>Characteristics of Node Scope Searches</title>
- <para>
+ <formalpara id="form-Reference_Guide-IndexingConfiguration-Characteristics_of_Node_Scope_Searches">
+ <title>Characteristics of Node Scope Searches</title>
+ <para>
Unexpected behavior may be encountered when using analyzers to search within a <emphasis>property</emphasis> compared to searching within a <emphasis>node scope</emphasis>. This is because the node scope always uses the global analyzer.
</para>
-
- </formalpara>
- <para>
- For example: the property "<parameter>mytext</parameter>" contains the text; "<emphasis>testing my analyzers</emphasis>" but no analyzers have been configured for this property (and the default analyzer in SearchIndex has not been changed).
+ </formalpara>
+ <para>
+ For example: the property "<parameter>mytext</parameter>" contains the text; "<emphasis>testing my analyzers</emphasis>" but no analyzers have been configured for this property (and the default analyzer in SearchIndex has not been changed).
</para>
- <para>
+ <para>
If the query is:
</para>
-
-<programlisting language="Java" role="JAVA">xpath = "//*[jcr:contains(mytext,'analyzer')]"
+ <programlisting language="Java" role="JAVA">xpath = "//*[jcr:contains(mytext,'analyzer')]"
</programlisting>
- <para>
+ <para>
The <literal>xpath</literal> does not return a result in the node with the property above and default analyzers.
</para>
- <para>
+ <para>
Also, if a search is done on the node scope as follows:
</para>
-
-<programlisting language="Java" role="JAVA">xpath = "//*[jcr:contains(.,'analyzer')]"
+ <programlisting language="Java" role="JAVA">xpath = "//*[jcr:contains(.,'analyzer')]"
</programlisting>
- <para>
+ <para>
No result will be returned.
</para>
- <para>
+ <para>
Only specific analyzers can be set on a node property, and the node scope indexing and analyzing is always done with the globally defined analyzer in the SearchIndex element.
</para>
- <para>
- If the analyzer used to index the "mytext" property above is changed to:
+ <para>
+ If the analyzer used to index the "mytext" property above is changed to:
</para>
-
-<programlisting language="XML" role="XML"><analyzer class="org.apache.lucene.analysis.Analyzer.GermanAnalyzer">
+ <programlisting language="XML" role="XML"><analyzer class="org.apache.lucene.analysis.Analyzer.GermanAnalyzer">
<property>mytext</property>
</analyzer>
</programlisting>
- <para>
+ <para>
The search below would return a result because of the word stemming (analyzers - analyzer).
</para>
-
-<programlisting language="Java" role="JAVA">xpath = "//*[jcr:contains(mytext,'analyzer')]"
+ <programlisting language="Java" role="JAVA">xpath = "//*[jcr:contains(mytext,'analyzer')]"
</programlisting>
- <para>
+ <para>
The second search in the example:
</para>
-
-<programlisting language="Java" role="JAVA">xpath = "//*[jcr:contains(.,'analyzer')]"
+ <programlisting language="Java" role="JAVA">xpath = "//*[jcr:contains(.,'analyzer')]"
</programlisting>
- <para>
+ <para>
Would still not give a result, since the node scope is indexed with the global analyzer, which in this case does not take into account any word stemming.
</para>
- <para>
+ <para>
Be aware that when using analyzers for specific properties, a result may be found in a property for certain search text, but the same search text in the node scope of the property may not find a result.
</para>
- <note>
- <para>
+ <note>
+ <para>
Both index rules and index aggregates influence how content is indexed in JCR. If the configuration is changed, the existing content is not automatically re-indexed according to the new rules.
</para>
- <para>
+ <para>
Content must be manually re-indexed when the configuration is changed.
</para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-Search_Configuration-Advanced_features">
- <title>Advanced features</title>
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Search_Configuration-Advanced_features">
+ <title>Advanced features</title>
+ <para>
eXo JCR supports some advanced features, which are not specified in JSR 170:
</para>
- <itemizedlist>
- <listitem>
- <para>
- Get a text excerpt with <emphasis role="bold">highlighted words</emphasis> that matches the query: <xref linkend="sect-Reference_Guide-Highlighting-DefaultXMLExcerpt" />>.
+ <itemizedlist>
+ <listitem>
+ <para>
+ Get a text excerpt with <emphasis role="bold">highlighted words</emphasis> that matches the query: <xref linkend="sect-Reference_Guide-Highlighting-DefaultXMLExcerpt"/>>.
</para>
-
- </listitem>
- <listitem>
- <para>
- Search a term and its <emphasis role="bold">synonyms</emphasis>: <xref linkend="sect-Reference_Guide-Searching_Repository_Content-SynonymSearch" />.
+ </listitem>
+ <listitem>
+ <para>
+ Search a term and its <emphasis role="bold">synonyms</emphasis>: <xref linkend="sect-Reference_Guide-Searching_Repository_Content-SynonymSearch"/>.
</para>
-
- </listitem>
- <listitem>
- <para>
- Search <emphasis role="bold">similar</emphasis> nodes: <xref linkend="sect-Reference_Guide-Searching_Repository_Content-Similarity" />.
+ </listitem>
+ <listitem>
+ <para>
+ Search <emphasis role="bold">similar</emphasis> nodes: <xref linkend="sect-Reference_Guide-Searching_Repository_Content-Similarity"/>.
</para>
-
- </listitem>
- <listitem>
- <para>
- Check <emphasis role="bold">spelling</emphasis> of a full text query statement: <xref linkend="sect-Reference_Guide-Searching_Repository_Content-SpellChecker" />.
+ </listitem>
+ <listitem>
+ <para>
+ Check <emphasis role="bold">spelling</emphasis> of a full text query statement: <xref linkend="sect-Reference_Guide-Searching_Repository_Content-SpellChecker"/>.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Define index <emphasis role="bold">aggregates and rules</emphasis>: IndexingConfiguration.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
-
+ </listitem>
+ </itemizedlist>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -70,7 +70,7 @@
<section id="sect-Reference_Guide-JBoss_Cache_configuration-Shipped_JBoss_Cache_configuration_templates">
<title>Shipped JBoss Cache configuration templates</title>
<para>
- The eXo JCR implementation is shipped with ready-to-use JBoss Cache configuration templates for JCR's components. They are located in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jbosscache</filename> directory, inside either the <filename>cluster</filename> or <filename>local</filename> directory.
+ The eXo JCR implementation is shipped with ready-to-use JBoss Cache configuration templates for JCR's components. They are located in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jbosscache</filename> directory, inside either the <filename>cluster</filename> or <filename>local</filename> directory.
</para>
<section id="sect-Reference_Guide-Shipped_JBoss_Cache_configuration_templates-Data_container_template">
<title>Data container template</title>
@@ -112,7 +112,7 @@
<para>
The query handler template is called <filename>indexer-config.xml</filename>:
</para>
- <programlisting language="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_JCR_cluster-config/indexer-config.xml_code" parse="text"/></programlisting>
+ <programlisting language="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../extras/Advanced_Development_JCR_cluster-config/indexer-config.xml_code"/></programlisting>
</section>
</section>
</chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/searching-repository-content.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/searching-repository-content.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/searching-repository-content.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -1,52 +1,45 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-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: <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/portal/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
- </para>
- <para>
- Please refer to <xref linkend="chap-Reference_Guide-Search_Configuration" /> for more information about index configuration.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Searching_Repository_Content-Bi_directional_RangeIterator">
- <title>Bi-directional RangeIterator</title>
- <para>
- <literal>QueryResult.getNodes()</literal> will return bi-directional <literal>NodeIterator</literal> implementation.
- </para>
- <note>
- <para>
- Bi-directional NodeIterator is <emphasis role="bold">not supported</emphasis> in two cases:
- </para>
- <orderedlist>
- <listitem>
- <para>
- SQL query: select * from nt:base
- </para>
-
- </listitem>
- <listitem>
- <para>
- XPath query: //* .
- </para>
-
- </listitem>
-
- </orderedlist>
-
- </note>
- <para>
- <literal>TwoWayRangeIterator</literal> interface:
- </para>
-
-<programlisting language="Java" role="Java">/**
+ <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: <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/portal/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
+ </para>
+ <para>
+ Please refer to <xref linkend="chap-Reference_Guide-Search_Configuration"/> for more information about index configuration.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Searching_Repository_Content-Bi_directional_RangeIterator">
+ <title>Bi-directional RangeIterator</title>
+ <para>
+ <literal>QueryResult.getNodes()</literal> will return bi-directional <literal>NodeIterator</literal> implementation.
+ </para>
+ <note>
+ <para>
+ Bi-directional NodeIterator is <emphasis role="bold">not supported</emphasis> in two cases:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ SQL query: select * from nt:base
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ XPath query: //* .
+ </para>
+ </listitem>
+ </orderedlist>
+ </note>
+ <para>
+ <literal>TwoWayRangeIterator</literal> interface:
+ </para>
+ <programlisting language="Java" role="Java">/**
* Skip a number of elements in the iterator.
*
* @param skipNum the non-negative number of elements to skip
@@ -54,11 +47,10 @@
* in the iterator.
*/
public void skipBack(long skipNum);</programlisting>
- <para>
- Usage:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator iter = queryResult.getNodes();
+ <para>
+ Usage:
+ </para>
+ <programlisting language="Java" role="Java">NodeIterator iter = queryResult.getNodes();
while (iter.hasNext()) {
if (skipForward) {
iter.skip(10); // Skip 10 nodes in forward direction
@@ -68,38 +60,30 @@
}
.......
}</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Searching_Repository_Content-Fuzzy_Searches">
- <title>Fuzzy Searches</title>
- <para>
- The JBoss Enterprise Portal Platform JCR supports features such as Lucene Fuzzy Searches. To perform a fuzzy search, form your query like the one 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);
+ </section>
+ <section id="sect-Reference_Guide-Searching_Repository_Content-Fuzzy_Searches">
+ <title>Fuzzy Searches</title>
+ <para>
+ The JBoss Enterprise Portal Platform JCR supports features such as Lucene Fuzzy Searches. To perform a fuzzy search, form your query like the one 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">
+ <title>SynonymSearch</title>
+ <para>
+ Searching with synonyms is integrated in the <literal>jcr:contains()</literal> function and uses the same syntax as synonym searches in web search engines (Google, for example). If a search term is prefixed by a tilde symbol ( ~ ), synonyms of the search term are taken into consideration. For example:
+ </para>
+ <programlisting>SQL: select * from nt:resource where contains(., '~parameter')
- </section>
-
- <section id="sect-Reference_Guide-Searching_Repository_Content-SynonymSearch">
- <title>SynonymSearch</title>
- <para>
- Searching with synonyms is integrated in the <literal>jcr:contains()</literal> function and uses the same syntax as synonym searches in web search engines (Google, for example). If a search term is prefixed by a tilde symbol ( ~ ), 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>
-
-<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">/**
+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>
+ <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.
*/
@@ -128,34 +112,29 @@
*/
public String[] getSynonyms(String term);
}</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Searching_Repository_Content-Highlighting">
- <title>Highlighting</title>
- <para>
- An <literal>ExcerptProvider</literal> 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, match highlighting is disabled because as it requires that additional information is written to the search index.
- </para>
- <para>
- To enable this feature, you need to add a configuration parameter to the <parameter>query-handler</parameter> element in your JCR configuration file:
- </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 <literal>org.exoplatform.services.jcr.impl.core.query.lucene.DefaultHTMLExcerpt</literal>. 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-Highlighting-DefaultXMLExcerpt">
- <title>DefaultXMLExcerpt</title>
- <para>
- This excerpt provider creates an XML fragment of the following form:
- </para>
-
-<programlisting language="XML" role="XML"><excerpt>
+ </section>
+ <section id="sect-Reference_Guide-Searching_Repository_Content-Highlighting">
+ <title>Highlighting</title>
+ <para>
+ An <literal>ExcerptProvider</literal> 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, match highlighting is disabled because as it requires that additional information is written to the search index.
+ </para>
+ <para>
+ To enable this feature, you need to add a configuration parameter to the <parameter>query-handler</parameter> element in your JCR configuration file:
+ </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 <literal>org.exoplatform.services.jcr.impl.core.query.lucene.DefaultHTMLExcerpt</literal>. 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-Highlighting-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
XPath and optional SQL <highlight>query</highlight> syntax.
@@ -165,16 +144,13 @@
<highlight>exoplatform</highlight>, the statement is surrounded
</fragment>
</excerpt></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Highlighting-DefaultHTMLExcerpt">
- <title>DefaultHTMLExcerpt</title>
- <para>
- This excerpt provider creates an HTML fragment of the following form:
- </para>
-
-<programlisting language="HTML" role="HTML"><div>
+ </section>
+ <section id="sect-Reference_Guide-Highlighting-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
and optional SQL <strong>query</strong> syntax.
@@ -184,246 +160,206 @@
<strong>exoplatform</strong>, the statement is surrounded
</span>
</div></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Highlighting-Usage">
- <title>Usage</title>
- <para>
- If you are using XPath, you must use the <code>rep:excerpt()</code> 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);
+ </section>
+ <section id="sect-Reference_Guide-Highlighting-Usage">
+ <title>Usage</title>
+ <para>
+ If you are using XPath, you must use the <code>rep:excerpt()</code> 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();
for (RowIterator it = result.getRows(); it.hasNext(); ) {
Row r = it.nextRow();
- Value title = r.getValue("Title");
- Value excerpt = r.getValue("rep:excerpt(.)");
+ Value title = r.getValue("Title");
+ Value excerpt = r.getValue("rep:excerpt(.)");
}</programlisting>
- <para>
- The above code searches for nodes that contain the word <emphasis>exoplatform</emphasis> and then gets the value of the <parameter>Title</parameter> property and an excerpt for each resultant node.
- </para>
- <para>
- It is also possible to use a relative path in the call <code>Row.getValue()</code> 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 providers will create fragments of about 150 characters and up to three fragments.
- </para>
- <para>
- In SQL, the function is called <code>excerpt()</code> without the rep prefix, but the column in the <literal>RowIterator</literal> will nonetheless be labelled <code>rep:excerpt(.)</code>.
- </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);
+ <para>
+ The above code searches for nodes that contain the word <emphasis>exoplatform</emphasis> and then gets the value of the <parameter>Title</parameter> property and an excerpt for each resultant node.
+ </para>
+ <para>
+ It is also possible to use a relative path in the call <code>Row.getValue()</code> 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 providers will create fragments of about 150 characters and up to three fragments.
+ </para>
+ <para>
+ In SQL, the function is called <code>excerpt()</code> without the rep prefix, but the column in the <literal>RowIterator</literal> will nonetheless be labelled <code>rep:excerpt(.)</code>.
+ </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();
for (RowIterator it = result.getRows(); it.hasNext(); ) {
Row r = it.nextRow();
- Value excerpt = r.getValue("rep:excerpt(.)");
+ Value excerpt = r.getValue("rep:excerpt(.)");
}</programlisting>
-
- </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, it must be configured first.
- </para>
- <para>
- Information about the <parameter>spellCheckerClass</parameter> parameter is available in <xref linkend="chap-Reference_Guide-Search_Configuration" />.
- </para>
- <para>
- The JCR currently provides an implementation class which uses the <ulink url="http://wiki.apache.org/jakarta-lucene/SpellChecker">lucene-spellchecker</ulink>.
- </para>
- <para>
- 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 <literal>org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker</literal>:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <literal>OneMinuteRefreshInterval</literal>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <literal>FiveMinutesRefreshInterval</literal>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <literal>ThirtyMinutesRefreshInterval</literal>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <literal>OneHourRefreshInterval</literal>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <literal>SixHoursRefreshInterval</literal>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <literal>TwelveHoursRefreshInterval</literal>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <literal>OneDayRefreshInterval</literal>
- </para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- For example, if you want a refresh interval of six hours, the class name would be; <literal>org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker$SixHoursRefreshInterval</literal>.
- </para>
- <para>
- If you use <literal>org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker</literal>, the refresh interval will be one hour.
- </para>
- <para>
- The spell checker dictionary is stored as a lucene index under <filename><index-dir>/spellchecker</filename>. If this index does not exist, a background thread will create it on start up. Similarly, the dictionary refresh is also done in a background thread so as not to block regular queries.
- </para>
- <section id="sect-Reference_Guide-SpellChecker-Usage">
- <title>Usage</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);
+ </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, it must be configured first.
+ </para>
+ <para>
+ Information about the <parameter>spellCheckerClass</parameter> parameter is available in <xref linkend="chap-Reference_Guide-Search_Configuration"/>.
+ </para>
+ <para>
+ The JCR currently provides an implementation class which uses the <ulink url="http://wiki.apache.org/jakarta-lucene/SpellChecker">lucene-spellchecker</ulink>.
+ </para>
+ <para>
+ 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 <literal>org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker</literal>:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>OneMinuteRefreshInterval</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>FiveMinutesRefreshInterval</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ThirtyMinutesRefreshInterval</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>OneHourRefreshInterval</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>SixHoursRefreshInterval</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>TwelveHoursRefreshInterval</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>OneDayRefreshInterval</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ For example, if you want a refresh interval of six hours, the class name would be; <literal>org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker$SixHoursRefreshInterval</literal>.
+ </para>
+ <para>
+ If you use <literal>org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker</literal>, the refresh interval will be one hour.
+ </para>
+ <para>
+ The spell checker dictionary is stored as a lucene index under <filename><index-dir>/spellchecker</filename>. If this index does not exist, a background thread will create it on start up. Similarly, the dictionary refresh is also done in a background thread so as not to block regular queries.
+ </para>
+ <section id="sect-Reference_Guide-SpellChecker-Usage">
+ <title>Usage</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();
// the above query will always return the root node no matter what string we check
Row r = rows.nextRow();
// get the result of the spell checking
-Value v = r.getValue("rep:spellcheck()");
+Value v = r.getValue("rep:spellcheck()");
if (v == null) {
// no suggestion returned, the spelling is correct or the spell checker
// does not know how to correct it.
} else {
String suggestion = v.getString();
}</programlisting>
- <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);
+ <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();
// the above query will always return the root node no matter what string we check
Row r = rows.nextRow();
// get the result of the spell checking
-Value v = r.getValue("rep:spellcheck()");
+Value v = r.getValue("rep:spellcheck()");
if (v == null) {
// no suggestion returned, the spelling is correct or the spell checker
// does not know how to correct it.
} else {
String suggestion = v.getString();
}</programlisting>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Searching_Repository_Content-Similarity">
- <title>Similarity</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>
- <para>
- To be considered, terms must:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Be at least four characters long.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Occur at least twice in the source node.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Occur in at least five other nodes.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <note>
- <title>Note</title>
- <para>
- The similarity function requires that the support Hightlighting is enabled. Please make sure that you have the following parameter set for the query handler in your <filename>workspace.xml</filename>.
- </para>
-
-<programlisting language="XML" role="XML"><param name="support-highlighting" value="true"/></programlisting>
-
- </note>
- <para>
- The functions (<code>rep:similar()</code> in XPath and <code>similar()</code> in SQL) have two arguments:
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>relativePath</term>
- <listitem>
- <para>
- A relative path to a descendant node or a period (<literal>.</literal>) for the current node.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>absoluteStringPath</term>
- <listitem>
- <para>
- A string literal that contains the path to the node for which to find similar nodes.
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <warning>
- <title>Warning</title>
- <para>
- Relative path is not supported yet.
- </para>
-
- </warning>
- <example id="exam-Reference_Guide-Similarity-Example">
- <title>Example</title>
-
-<programlisting>//element(*, nt:resource)[rep:similar(., '/parentnode/node.txt/jcr:content')]</programlisting>
- <para>
- Finds <literal>nt:resource</literal> nodes, which are similar to node by path <filename>/parentnode/node.txt/jcr:content</filename>.
- </para>
-
- </example>
-
- </section>
-
-
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Searching_Repository_Content-Similarity">
+ <title>Similarity</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>
+ <para>
+ To be considered, terms must:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Be at least four characters long.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Occur at least twice in the source node.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Occur in at least five other nodes.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <note>
+ <title>Note</title>
+ <para>
+ The similarity function requires that the support Hightlighting is enabled. Please make sure that you have the following parameter set for the query handler in your <filename>workspace.xml</filename>.
+ </para>
+ <programlisting language="XML" role="XML"><param name="support-highlighting" value="true"/></programlisting>
+ </note>
+ <para>
+ The functions (<code>rep:similar()</code> in XPath and <code>similar()</code> in SQL) have two arguments:
+ </para>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>relativePath</term>
+ <listitem>
+ <para>
+ A relative path to a descendant node or a period (<literal>.</literal>) for the current node.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>absoluteStringPath</term>
+ <listitem>
+ <para>
+ A string literal that contains the path to the node for which to find similar nodes.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <warning>
+ <title>Warning</title>
+ <para>
+ Relative path is not supported yet.
+ </para>
+ </warning>
+ <example id="exam-Reference_Guide-Similarity-Example">
+ <title>Example</title>
+ <programlisting>//element(*, nt:resource)[rep:similar(., '/parentnode/node.txt/jcr:content')]</programlisting>
+ <para>
+ Finds <literal>nt:resource</literal> nodes, which are similar to node by path <filename>/parentnode/node.txt/jcr:content</filename>.
+ </para>
+ </example>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-07-09 00:39:39 UTC (rev 8778)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-07-09 04:34:49 UTC (rev 8779)
@@ -10,7 +10,7 @@
<section id="sect-Reference_Guide-Configurations_Steps-Declaring_the_datasources_in_the_AS">
<title>Declaring the datasources in the AS</title>
<para>
- To declare the datasources using a JBoss application server, deploy a <literal>ds</literal> file (<filename><replaceable>XXX</replaceable>-ds.xml</filename>) into the <emphasis>deploy</emphasis> directory of the appropriate server profile (<filename>\server\<replaceable><PROFILE></replaceable>\deploy</filename>, for example).
+ To declare the datasources using a JBoss application server, deploy a <literal>ds</literal> file (<filename><replaceable>XXX</replaceable>-ds.xml</filename>) into the <emphasis>deploy</emphasis> directory of the appropriate server profile (<filename>/server/<replaceable>PROFILE</replaceable>/deploy</filename>, for example).
</para>
<para>
This file configures all datasources which JBoss Enterprise Portal Platform will need (there should be four specifically named: <emphasis>jdbcjcr_portal</emphasis>, <emphasis>jdbcjcr_portal-sample</emphasis>, <emphasis>jdbcidm_portal</emphasis> and <emphasis>jdbcidm_sample-portal</emphasis>).
@@ -59,7 +59,7 @@
<section id="sect-Reference_Guide-Configurations_Steps-Do_not_bind_datasources_explicitly">
<title>Do not bind datasources explicitly</title>
<para>
- Do not let the portal explicitly bind datasources. Edit the <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/conf/gatein/configuration.properties</filename> and comment out the following rows in the JCR section:
+ Do not let the portal explicitly bind datasources. Edit the <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/conf/gatein/configuration.properties</filename> and comment out the following rows in the JCR section:
</para>
<programlisting>#gatein.jcr.datasource.driver=org.hsqldb.jdbcDriver
#gatein.jcr.datasource.url=jdbc:hsqldb:file:${gatein.db.data.dir}/data/jdbcjcr_${name}
12 years, 5 months
gatein SVN: r8778 - in epp/docs/branches/5.2/Reference_Guide/en-US: code_samples and 3 other directories.
by do-not-reply@jboss.org
Author: jaredmorgs
Date: 2012-07-08 20:39:39 -0400 (Sun, 08 Jul 2012)
New Revision: 8778
Added:
epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml_code
Removed:
epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/jcr-configuration.xml_code
Modified:
epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
Log:
BZ#812412 cumulative commit
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2012-07-06 10:59:53 UTC (rev 8777)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2012-07-09 00:39:39 UTC (rev 8778)
@@ -5,7 +5,7 @@
]>
<bookinfo id="book-Reference_Guide-Reference_Guide">
<title>Reference Guide</title>
- <subtitle>An in-depth guide to Enterprise Portal Platform 5.2, and its patch releases.</subtitle>
+ <subtitle>An in-depth guide to Enterprise Portal Platform 5.2, and its patch releases.f</subtitle>
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.2</edition>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent 2012-07-06 10:59:53 UTC (rev 8777)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent 2012-07-09 00:39:39 UTC (rev 8778)
@@ -10,11 +10,11 @@
<!ENTITY BZURL "<ulink url='https://bugzilla.redhat.com/enter_bug.cgi?product=JBoss%20Enterpri...'>http://bugzilla.redhat.com/</ulink>">
<!-- Corporate Specifics: -->
-<!ENTITY YEAR "2011">
+<!ENTITY YEAR "2012">
<!ENTITY HOLDER "Red Hat, Inc">
<!-- Version Specifcs: -->
<!ENTITY VX "5">
<!ENTITY VY "5.2">
-<!ENTITY VZ "5.2.0">
-<!ENTITY WSRP_VERSION "2.1.0-GA">
\ No newline at end of file
+<!ENTITY VZ "5.2.2">
+<!ENTITY WSRP_VERSION "2.1.0-GA">
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/jcr-configuration.xml_code
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/jcr-configuration.xml_code 2012-07-06 10:59:53 UTC (rev 8777)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/jcr-configuration.xml_code 2012-07-09 00:39:39 UTC (rev 8778)
@@ -1,83 +0,0 @@
- <component>
- <key>org.exoplatform.services.jcr.RepositoryService</key>
- <type>org.exoplatform.services.jcr.impl.RepositoryServiceImpl</type>
- <component-plugins>
- <component-plugin>
- <name>add.namespaces</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.jcr.impl.AddNamespacesPlugin</type>
- <init-params>
- <properties-param>
- <name>namespaces</name>
- <property name="test" value="http://www.apache.org/jackrabbit/test"/>
- <property name="exojcrtest" value="http://www.exoplatform.org/jcr/test/1.0"/>
- <property name="rma" value="http://www.rma.com/jcr/"/>
- <property name="metadata" value="http://www.exoplatform.com/jcr/metadata/1.1/"/>
- <property name="dc" value="http://purl.org/dc/elements/1.1/"/>
- <property name="publication" value="http://www.exoplatform.com/jcr/publication/1.1/"/>
- </properties-param>
- </init-params>
- </component-plugin>
- <component-plugin>
- <name>add.nodeType</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.jcr.impl.AddNodeTypePlugin</type>
- <init-params>
- <values-param>
- <name>autoCreatedInNewRepository</name>
- <description>Node types configuration file</description>
- <value>jar:/conf/test/nodetypes-tck.xml</value>
- <value>jar:/conf/test/nodetypes-impl.xml</value>
- <value>jar:/conf/test/nodetypes-usecase.xml</value>
- <value>jar:/conf/test/nodetypes-config.xml</value>
- <value>jar:/conf/test/nodetypes-config-extended.xml</value>
- <value>jar:/conf/test/wcm-nodetypes.xml</value>
- <value>jar:/conf/test/nodetypes-publication-config.xml</value>
- <value>jar:/conf/test/publication-plugins-nodetypes-config.xml</value>
- </values-param>
-
- <values-param>
- <name>testInitNodeTypesRepository</name>
- <description>
- Node types configuration file for repository with name testInitNodeTypesRepository
- </description>
- <value>jar:/conf/test/nodetypes-test.xml</value>
- </values-param>
-
- <values-param>
- <name>testInitNodeTypesRepositoryTest2</name>
- <description>
- Node types configuration file for repository with name testInitNodeTypesRepositoryTest2
- </description>
- <value>jar:/conf/test/nodetypes-test2.xml</value>
- </values-param>
-
- <!--values-param>
- <name>testInitNodeTypesRepositoryTest3</name>
- <description>Node types from ext. Needed bacause core starup earlie than ext</description>
- <value>jar:/conf/test/nodetypes-test3_ext.xml</value>
- </values-param-->
-
- </init-params>
- </component-plugin>
- </component-plugins>
- </component>
-
- <component>
- <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
- <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
- <init-params>
- <value-param>
- <name>conf-path</name>
- <description>JCR configuration file</description>
- <value>jar:/conf/standalone/test-jcr-config-jbc.xml</value>
- </value-param>
- <properties-param>
- <name>working-conf</name>
- <description>working-conf</description>
- <property name="dialect" value="auto" />
- <property name="source-name" value="jdbcjcr"/>
- <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister"/>
- </properties-param>
- </init-params>
- </component>
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml_code (from rev 8776, epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/jcr-configuration.xml_code)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml_code (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml_code 2012-07-09 00:39:39 UTC (rev 8778)
@@ -0,0 +1,83 @@
+ <component>
+ <key>org.exoplatform.services.jcr.RepositoryService</key>
+ <type>org.exoplatform.services.jcr.impl.RepositoryServiceImpl</type>
+ <component-plugins>
+ <component-plugin>
+ <name>add.namespaces</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.jcr.impl.AddNamespacesPlugin</type>
+ <init-params>
+ <properties-param>
+ <name>namespaces</name>
+ <property name="test" value="http://www.apache.org/jackrabbit/test"/>
+ <property name="exojcrtest" value="http://www.exoplatform.org/jcr/test/1.0"/>
+ <property name="rma" value="http://www.rma.com/jcr/"/>
+ <property name="metadata" value="http://www.exoplatform.com/jcr/metadata/1.1/"/>
+ <property name="dc" value="http://purl.org/dc/elements/1.1/"/>
+ <property name="publication" value="http://www.exoplatform.com/jcr/publication/1.1/"/>
+ </properties-param>
+ </init-params>
+ </component-plugin>
+ <component-plugin>
+ <name>add.nodeType</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.jcr.impl.AddNodeTypePlugin</type>
+ <init-params>
+ <values-param>
+ <name>autoCreatedInNewRepository</name>
+ <description>Node types configuration file</description>
+ <value>jar:/conf/test/nodetypes-tck.xml</value>
+ <value>jar:/conf/test/nodetypes-impl.xml</value>
+ <value>jar:/conf/test/nodetypes-usecase.xml</value>
+ <value>jar:/conf/test/nodetypes-config.xml</value>
+ <value>jar:/conf/test/nodetypes-config-extended.xml</value>
+ <value>jar:/conf/test/wcm-nodetypes.xml</value>
+ <value>jar:/conf/test/nodetypes-publication-config.xml</value>
+ <value>jar:/conf/test/publication-plugins-nodetypes-config.xml</value>
+ </values-param>
+
+ <values-param>
+ <name>testInitNodeTypesRepository</name>
+ <description>
+ Node types configuration file for repository with name testInitNodeTypesRepository
+ </description>
+ <value>jar:/conf/test/nodetypes-test.xml</value>
+ </values-param>
+
+ <values-param>
+ <name>testInitNodeTypesRepositoryTest2</name>
+ <description>
+ Node types configuration file for repository with name testInitNodeTypesRepositoryTest2
+ </description>
+ <value>jar:/conf/test/nodetypes-test2.xml</value>
+ </values-param>
+
+ <!--values-param>
+ <name>testInitNodeTypesRepositoryTest3</name>
+ <description>Node types from ext. Needed bacause core starup earlie than ext</description>
+ <value>jar:/conf/test/nodetypes-test3_ext.xml</value>
+ </values-param-->
+
+ </init-params>
+ </component-plugin>
+ </component-plugins>
+ </component>
+
+ <component>
+ <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
+ <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
+ <init-params>
+ <value-param>
+ <name>conf-path</name>
+ <description>JCR configuration file</description>
+ <value>jar:/conf/standalone/test-jcr-config-jbc.xml</value>
+ </value-param>
+ <properties-param>
+ <name>working-conf</name>
+ <description>working-conf</description>
+ <property name="dialect" value="auto" />
+ <property name="source-name" value="jdbcjcr"/>
+ <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister"/>
+ </properties-param>
+ </init-params>
+ </component>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml 2012-07-06 10:59:53 UTC (rev 8777)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml 2012-07-09 00:39:39 UTC (rev 8778)
@@ -1,748 +1,588 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Portlet_Primer">
- <title>Portlet Primer</title>
- <section id="sect-Reference_Guide-Portlet_Primer-JSR_168_and_JSR_286_overview">
- <title>JSR-168 and JSR-286 overview</title>
- <para>
+ <title>Portlet Primer</title>
+ <section id="sect-Reference_Guide-Portlet_Primer-JSR_168_and_JSR_286_overview">
+ <title>JSR-168 and JSR-286 overview</title>
+ <para>
The Java Community Process (<literal>JCP</literal>) uses Java Specification Requests (<literal>JSR</literal>s) to define proposed specifications and technologies designed for the Java platform.
</para>
- <para>
+ <para>
The Portlet Specifications aim at defining portlets that can be used by any <ulink url="http://www.jcp.org/en/jsr/detail?id=168">JSR-168 (Portlet 1.0)</ulink> or <ulink url="http://www.jcp.org/en/jsr/detail?id=286">JSR-286 (Portlet 2.0)</ulink> portlet container.
</para>
- <para>
+ <para>
Most Java EE (Enterprise Edition) portals include at least one compliant portlet container, and JBoss Enterprise Portal Platform is no exception. In fact, JBoss Enterprise Portal Platform includes a container that supports both versions.
</para>
- <para>
+ <para>
This chapter gives a brief overview of the Portlet Specifications but portlet developers are strongly encouraged to read the <ulink url="http://www.jcp.org/en/jsr/detail?id=286">JSR-286 Portlet Specification</ulink> .
</para>
- <para>
+ <para>
JBoss Enterprise Portal Platform is fully JSR-286 compliant. Any JSR-168 or JSR-286 portlet operates as it is mandated by the respective specifications inside the portal.
</para>
- <section id="sect-Reference_Guide-JSR_168_and_JSR_286_overview-Portal_Pages">
- <title>Portal Pages</title>
- <para>
+ <section id="sect-Reference_Guide-JSR_168_and_JSR_286_overview-Portal_Pages">
+ <title>Portal Pages</title>
+ <para>
A portal can be considered as a series of web pages with different <emphasis>areas</emphasis> within them. Those areas contain different <emphasis>windows</emphasis> and each <emphasis>window</emphasis> contains a <emphasis>portlet</emphasis>:
</para>
- <para>
+ <para>
The diagram below visually represents this nesting:
</para>
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center" fileref="images/PortletDevelopment/Standard/SpecPortalDef.png" format="PNG" scale="95" width="444" />
- </imageobject>
- <imageobject role="fo">
- <imagedata align="center" contentwidth="140mm" fileref="images/PortletDevelopment/Standard/SpecPortalDef.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </section>
-
- <section id="sect-Reference_Guide-JSR_168_and_JSR_286_overview-Rendering_Modes">
- <title>Rendering Modes</title>
- <para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="444" align="center" scale="95" fileref="images/PortletDevelopment/Standard/SpecPortalDef.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="444" contentwidth="140mm" align="center" fileref="images/PortletDevelopment/Standard/SpecPortalDef.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </section>
+ <section id="sect-Reference_Guide-JSR_168_and_JSR_286_overview-Rendering_Modes">
+ <title>Rendering Modes</title>
+ <para>
A portlet can have different view modes. Three modes are defined by the JSR-286 specification:
</para>
- <variablelist>
- <varlistentry>
- <term>View</term>
- <listitem>
- <para>
+ <variablelist>
+ <varlistentry>
+ <term>View</term>
+ <listitem>
+ <para>
Generates markup reflecting the current state of the portlet.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Edit</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Edit</term>
+ <listitem>
+ <para>
Allows a user to customize the behavior of the portlet.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Help</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Help</term>
+ <listitem>
+ <para>
Provides information to the user as to how to use the portlet.
</para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-JSR_168_and_JSR_286_overview-Window_States">
- <title>Window States</title>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-JSR_168_and_JSR_286_overview-Window_States">
+ <title>Window States</title>
+ <para>
Window states are an indicator of how much page space a portlet consumes on any given page. The three states defined by the JSR-286 specification are:
</para>
- <variablelist>
- <varlistentry>
- <term>Normal</term>
- <listitem>
- <para>
+ <variablelist>
+ <varlistentry>
+ <term>Normal</term>
+ <listitem>
+ <para>
A portlet shares this page with other portlets.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Minimized</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Minimized</term>
+ <listitem>
+ <para>
A portlet may show very little information, or none at all.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Maximized</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Maximized</term>
+ <listitem>
+ <para>
A portlet may be the only portlet displayed on this page.
</para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
-
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
-
- <section id="sect-Reference_Guide-Portlet_Primer-Tutorials">
- <title>Tutorials</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Portlet_Primer-Tutorials">
+ <title>Tutorials</title>
+ <para>
The tutorials contained in this chapter are targeted toward portlet developers. It is also recommended that developers read and understand the <ulink url="http://www.jcp.org/en/jsr/detail?id=286"> JSR-286 Portlet Specification </ulink> .
</para>
- <note>
- <title>Maven</title>
- <para>
+ <note>
+ <title>Maven</title>
+ <para>
This example is using Maven to compile and build the web archive. Maven versions can be downloaded from <ulink url="http://maven.apache.org/download.html">maven.apache.org</ulink>
</para>
-
- </note>
- <section id="sect-Reference_Guide-Tutorials-Deploying_your_first_Portlet">
- <title>Deploying your first portlet</title>
- <para>
+ </note>
+ <section id="sect-Reference_Guide-Tutorials-Deploying_your_first_Portlet">
+ <title>Deploying your first portlet</title>
+ <para>
This section describes how to deploy a portlet in JBoss Enterprise Portal Platform.
</para>
- <para>
- An example portlet called <filename>SimplestHelloWorld</filename> is available in the <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package or the <filename>jboss-epp-<VERSION>-docs/epp-doc/examples/portlets</filename> directory of the documentation package.
+ <para>
+ An example portlet called <filename>SimplestHelloWorld</filename> is available in the <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package.
</para>
- <section id="sect-Reference_Guide-Deploying_your_first_Portlet-Compiling">
- <title>Compiling</title>
- <para>
+ <section id="sect-Reference_Guide-Deploying_your_first_Portlet-Compiling">
+ <title>Compiling</title>
+ <para>
To compile and package the application:
</para>
- <procedure>
- <step>
- <para>
+ <procedure>
+ <step>
+ <para>
Navigate to the application directory and execute:
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortletDevelopment_Standard/default243.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </step>
- <step>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default243.java" parse="text"/></programlisting>
+ </step>
+ <step>
+ <para>
If the example is successfully packaged, the result will be available in: <filename>gatein-simplest-helloworld-&VZ;.GA.war </filename>.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Copy the package file into <literal>JBOSS_HOME/server/default/deploy</literal>.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start JBoss Application Server (if it is not already running).
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Add the new portlet to the Application Registry.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Create a new portal page and add the portlet to it.
</para>
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center" fileref="images/PortletDevelopment/Standard/first_portlet/deployed.png" format="PNG" scale="100" width="444" />
- </imageobject>
- <imageobject role="fo">
- <imagedata align="center" contentwidth="120mm" fileref="images/PortletDevelopment/Standard/first_portlet/deployed.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </step>
-
- </procedure>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Deploying_your_first_Portlet-Package_Structure">
- <title>Package Structure</title>
- <para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="444" align="center" scale="100" fileref="images/PortletDevelopment/Standard/first_portlet/deployed.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="444" contentwidth="120mm" align="center" fileref="images/PortletDevelopment/Standard/first_portlet/deployed.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </step>
+ </procedure>
+ </section>
+ <section id="sect-Reference_Guide-Deploying_your_first_Portlet-Package_Structure">
+ <title>Package Structure</title>
+ <para>
Like other Java EE applications, JBoss Enterprise Portal Platform portlets are packaged in <literal>WAR</literal> files. A typical portlet <literal>WAR</literal> file can include servlets, resource bundles, images, HTML, JavaServer Pages (JSP), and other static or dynamic files.
</para>
- <para>
+ <para>
The following is an example of the directory structure of the <filename>SimplestHelloWorld</filename> portlet:
</para>
- <programlistingco>
- <areaspec>
- <area coords="9" id="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-javaclass" />
- <area coords="10" id="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-portlet" />
- <area coords="11" id="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-web" />
-
- </areaspec>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortletDevelopment_Standard/default244.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-javaclass">
- <para>
+ <programlistingco>
+ <areaspec>
+ <area coords="9" id="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-javaclass"/>
+ <area coords="10" id="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-portlet"/>
+ <area coords="11" id="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-web"/>
+ </areaspec>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default244.java" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-javaclass">
+ <para>
The compiled Java class implementing <emphasis>javax.portlet.Portlet</emphasis> (through <emphasis>javax.portlet.GenericPortlet </emphasis> )
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-portlet">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-portlet">
+ <para>
This is the mandatory descriptor file for portlets. It is used during deployment.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-web">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Package_Structure-web">
+ <para>
This is the mandatory descriptor for web applications.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class">
- <title>Portlet Class</title>
- <para>
- Below is the Java source for an example portlet named <filename>simplesthelloworld/src/main/java/org/jboss/portal/portlet/samples</filename>:
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </section>
+ <section id="sect-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class">
+ <title>Portlet Class</title>
+ <para>
+ Below is the Java source for an example portlet named <filename>SimplestHelloWorldPortlet</filename>:
</para>
- <programlistingco>
- <areaspec>
- <area coords="6 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-extends" />
- <area coords="12 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-doview" />
- <area coords="14 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-writer" />
- <area coords="15 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-write" />
- <area coords="16 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-close" />
-
- </areaspec>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortletDevelopment_Standard/SimplestHelloWorldPortlet.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-extends">
- <para>
- All portlets must implement the <literal>javax.portlet.Portlet</literal> interface. The portlet API provides a convenient implementation of this interface.
+ <programlistingco>
+ <areaspec>
+ <area coords="6 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-extends"/>
+ <area coords="12 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-doview"/>
+ <area coords="14 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-writer"/>
+ <area coords="15 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-write"/>
+ <area coords="16 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-close"/>
+ </areaspec>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/SimplestHelloWorldPortlet.java" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-extends">
+ <remark>BZ#812412 - adjusted the description for this based on feedback in the ticket.</remark>
+ <para>
+ All portlets must implement the <literal>javax.portlet.Portlet</literal> interface. The <classname>GenericPortlet</classname> class provides a default implementation for the Portlet interface.
</para>
- <para>
- The <literal>javax.portlet.Portlet</literal> interface uses the <literal>javax.portlet.GenericPortlet</literal> class which implements the <literal>Portlet render</literal> method to dispatch to abstract mode-specific methods. This makes it easier to support the standard portlet modes.
+ <para>
+ The <classname>javax.portlet.GenericPortlet</classname> class implements the <methodname>render</methodname> method to dispatch to abstract mode-specific methods. This makes it easier to support the standard portlet modes.
</para>
- <para>
- <literal>Portlet render</literal> also provides a default implementation for the <literal>processAction</literal>, <literal>init</literal> and <literal>destroy</literal> methods. It is recommended to extend <literal>GenericPortlet</literal> for most cases.
+ <para><classname> GenericPortlet</classname> also provides a default implementation for the <methodname>processAction</methodname>, <methodname>init</methodname> and <methodname>destroy</methodname> methods. It is recommended to extend <literal>GenericPortlet</literal> for most cases.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-doview">
- <para>
- If only the <literal>view</literal> mode is required, then only the <literal>doView</literal> method needs to be implemented. The <literal>GenericPortlet</literal> render implementation calls our implementation when the <literal>view</literal> mode is requested.
+ </callout>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-doview">
+ <para>
+ If only the <literal>view</literal> mode is required, then only the <literal>doView</literal> method needs to be implemented. The <classname>GenericPortlet</classname> render implementation calls our implementation when the <literal>view</literal> mode is requested.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-writer">
- <para>
- Use the <emphasis>RenderResponse</emphasis> to obtain a writer to be used to produce content.
+ </callout>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-writer">
+ <para>
+ Use the <methodname>RenderResponse</methodname> method to obtain a writer to be used to produce content.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-write">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-write">
+ <para>
Write the markup to display.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-close">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-close">
+ <para>
Closing the writer.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <para>
<note>
- <title>Markup Fragments</title>
- <para>
+ <title>Markup Fragments</title>
+ <para>
Portlets are responsible for generating markup fragments, as they are included on a page and are surrounded by other portlets. This means that a portlet outputting HTML must not output any markup that cannot be found in a <literal><body></literal> element.
</para>
+ </note>
- </note>
-
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors">
- <title>Application Descriptors</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors">
+ <title>Application Descriptors</title>
+ <para>
JBoss Enterprise Portal Platform requires certain descriptors to be included in a portlet <literal>WAR</literal> file. These descriptors are defined by the Java EE (<filename>web.xml</filename>) and Portlet Specification (<filename>portlet.xml</filename>).
</para>
- <para>
+ <para>
Below is an example of the <filename>SimplestHelloWorldPortlet/WEB-INF/portlet.xml</filename> file. This file must adhere to its definition in the JSR-286 Portlet Specification. More than one portlet application may be defined in this file:
</para>
- <programlistingco>
- <areaspec>
- <area coords="6 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletname" />
- <area coords="8 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletclass" />
- <area coords="10 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-supports" />
- <area coords="13 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletinfo" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortletDevelopment_Standard/default245.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletname">
- <para>
+ <programlistingco>
+ <areaspec>
+ <area coords="6 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletname"/>
+ <area coords="8 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletclass"/>
+ <area coords="10 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-supports"/>
+ <area coords="13 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletinfo"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default245.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletname">
+ <para>
Define the portlet name. It does not have to be the class name.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletclass">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletclass">
+ <para>
The Fully Qualified Name (<literal>FQN</literal>) of your portlet class must be declared here.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-supports">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-supports">
+ <para>
The <literal><supports></literal> element declares all of the markup types that a portlet supports in the <literal>render</literal> method. This is accomplished via the <literal><mime-type></literal> element, which is required for every portlet.
</para>
- <para>
+ <para>
The declared MIME types must match the capability of the portlet. It allows administrators to pair which modes and window states are supported for each markup type.
</para>
- <para>
+ <para>
This does not have to be declared as all portlets must support the <literal>view</literal> portlet mode.
</para>
- <para>
+ <para>
Use the <literal><mime-type></literal> element to define which markup type the portlet supports. In the example above this is <literal>text/html</literal>. This section tells the portal to only output <literal>HTML</literal>.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletinfo">
- <para>
- When rendered, the portlet's title is displayed as the header in the portlet window, unless it is overridden programmatically. In the example above the title would be <literal>Simplest Hello World Portlet</literal> .
+ </callout>
+ <callout arearefs="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletinfo">
+ <para>
+ When rendered, the portlet's title is displayed as the header in the portlet window, unless it is overridden programmatically. In the example above the title would be <literal>Simplest Hello World Portlet</literal> .
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Tutorials-JavaServer_Pages_Portlet_Example">
- <title>JavaServer Pages Portlet Example</title>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Tutorials-JavaServer_Pages_Portlet_Example">
+ <title>JavaServer Pages Portlet Example</title>
+ <para>
This section discusses:
</para>
- <orderedlist numeration="arabic">
- <listitem>
- <para>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
Adding more features to the previous example.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Using a JSP page to render the markup.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Using the portlet tag library to generate links to the portlet in different ways.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Using the other standard portlet modes.
</para>
-
- </listitem>
-
- </orderedlist>
- <formalpara id="form-Reference_Guide-JavaServer_Pages_Portlet_Example-Compiling_the_example">
- <title>Compiling the example</title>
- <para>
- The example used in this section is available in the <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package or the <filename>/jboss-epp-<VERSION>-docs/epp-doc/examples/portlets</filename> directory of the documentation package.
+ </listitem>
+ </orderedlist>
+ <formalpara id="form-Reference_Guide-JavaServer_Pages_Portlet_Example-Compiling_the_example">
+ <title>Compiling the example</title>
+ <para>
+ The example used in this section is available in the directory of the JBoss Enterprise Portal Platform sources package.
</para>
-
- </formalpara>
- <para>
+ </formalpara>
+ <para>
Compile the example as so:
</para>
- <procedure>
- <step>
- <para>
- Execute:
- </para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortletDevelopment_Standard/default246.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- in the <filename>jsphellouser</filename> directory.
- </para>
-
- </step>
- <step>
- <para>
+ <procedure>
+ <title>Compile JavaServer Pages Portlet</title>
+ <step>
+ <para>Obtain the JBoss Enterprise Portal Platform sources package from the Customer Support portal.</para>
+ </step>
+ <step>
+ <para>Move to <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/jsphellouser</filename> </para>
+ </step>
+ <step>
+ <para>
+ Execute <code>mvn package</code>. </para>
+ </step>
+ <step>
+ <para>
Copy <filename>jsphellouser/target/gatein-jsp-hellouser-&VZ;.GA.war</filename> to the <literal>deploy</literal> directory of JBoss Application Server.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Add the new portlet to the Application Registry.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Create a new portal page and add the portlet to it.
</para>
-
- </step>
-
- </procedure>
-
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center" fileref="images/PortletDevelopment/Standard/jsp_portlet/output.png" format="PNG" scale="100" width="444" />
- </imageobject>
- <imageobject role="fo">
- <imagedata align="center" contentwidth="120mm" fileref="images/PortletDevelopment/Standard/jsp_portlet/output.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
- <!-- Does not seem to appear any longer
+ </step>
+ </procedure>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="444" align="center" scale="100" fileref="images/PortletDevelopment/Standard/jsp_portlet/output.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="444" contentwidth="120mm" align="center" fileref="images/PortletDevelopment/Standard/jsp_portlet/output.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+<!-- Does not seem to appear any longer
<note>
<para>
The <literal>EDIT</literal> button only appears for logged-in users.
</para>
-</note> --> <section id="sect-Reference_Guide-JavaServer_Pages_Portlet_Example-Package_Structure">
- <title>Package Structure</title>
- <para>
+</note> --> <section id="sect-Reference_Guide-JavaServer_Pages_Portlet_Example-Package_Structure">
+ <title>Package Structure</title>
+ <para>
The package structure in this tutorial does not differ greatly from the previous example, with the exception of adding some JSP files which are detailed later.
</para>
- <para>
+ <para>
The <literal>JSPHelloUser</literal> portlet contains the mandatory portlet application descriptors. The following is an example of the directory structure of the <literal>JSPHelloUser</literal> portlet:
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortletDevelopment_Standard/default247.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class">
- <title>Portlet Class</title>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default247.java" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class">
+ <title>Portlet Class</title>
+ <para>
The code below is from the <filename> jsphellouser/src/main/java/org/jboss/portal/portlet/samples/JSPHelloUserPortlet.java</filename> Java source. It is split in different pieces.
</para>
- <programlistingco>
- <areaspec>
- <area coords="17 60" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-doView" />
- <area coords="20" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-renderParameter" />
- <area coords="24" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-requestDispatcher" />
- <area coords="25" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-include" />
-
- </areaspec>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortletDevelopment_Standard/JSPHelloUserPortlet.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-doView">
- <para>
+ <programlisting language="Java" linenumbering="numbered"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/JSPHelloUserPortlet.java" parse="text"/></programlisting>
+ <para>
Override the <emphasis>doView</emphasis> method (as in the first tutorial).
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-renderParameter">
- <para>
+ <para>
This entry attempts to obtain the value of the render parameter named <literal>yourname</literal>. If defined it should redirect to the <filename>hello.jsp</filename> JSP page, otherwise to the <filename>welcome.jsp</filename> JSP page.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-requestDispatcher">
- <para>
+ <para>
Get a request dispatcher on a file located within the web archive.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-include">
- <para>
+ <para>
Perform the inclusion of the markup obtained from the JSP.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <para>
+ <para>
As well as the <literal>VIEW</literal> portlet mode, the specification defines two other modes; <literal>EDIT</literal> and <literal>HELP</literal>.
</para>
- <para>
- These modes need to be defined in the <filename>portlet.xml</filename> descriptor. This will enable the corresponding buttons on the portlet's window.
+ <para>
+ These modes need to be defined in the <filename>portlet.xml</filename> descriptor. This will enable the corresponding buttons on the portlet's window.
</para>
- <para>
+ <para>
The generic portlet that is inherited dispatches the different views to the methods: <literal>doView</literal> , <literal>doHelp</literal> and <literal>doEdit</literal>.
</para>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortletDevelopment_Standard/default248.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default248.java" parse="text"/></programlisting>
+ <para>
Portlet calls happen in one or two phases. One when the portlet is rendered and two when the portlet is actioned <emphasis>then</emphasis> rendered.
</para>
- <para>
+ <para>
An action phase is a phase where a state changes. The render phase will have access to render parameters that will be passed each time the portlet is refreshed (with the exception of caching capabilities).
</para>
- <para>
+ <para>
The code to be executed during an action has to be implemented in the <emphasis>processAction</emphasis> method of the portlet.
</para>
- <programlistingco>
- <areaspec>
- <area coords="2 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-processAction" />
- <area coords="5 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-getActionParameter" />
- <area coords="6 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-setRenderParameter" />
-
- </areaspec>
-
-<programlisting language="Java" role="Java"><xi:include href="../../extras/PortletDevelopment_Standard/default249.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-processAction">
- <para>
+ <programlistingco>
+ <areaspec>
+ <area coords="2 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-processAction"/>
+ <area coords="5 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-getActionParameter"/>
+ <area coords="6 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-setRenderParameter"/>
+ </areaspec>
+ <programlisting language="Java" role="Java"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default249.java" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-processAction">
+ <para>
<literal>processAction</literal> is the method from <literal>GenericPortlet</literal> to override for the <emphasis>action</emphasis> phase.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-getActionParameter">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-getActionParameter">
+ <para>
Here the parameter is retrieved through an <emphasis>action URL</emphasis>.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-setRenderParameter">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-setRenderParameter">
+ <para>
The value of <literal>yourname</literal> is kept to make it available in the rendering phase. The previous line simply copies an action parameter to a render parameter for this example.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
- </section>
-
- <section id="sect-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library">
- <title>JSP files and the Portlet Tag Library</title>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </section>
+ <section id="sect-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library">
+ <title>JSP files and the Portlet Tag Library</title>
+ <para>
The <filename>help.jsp</filename> and <filename>edit.jsp</filename> files are very simple. Note that CSS styles are used as defined in the portlet specification. This ensures that the portlet will render well within the theme and across portal vendors.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortletDevelopment_Standard/default250.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortletDevelopment_Standard/default251.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default250.xml" parse="text"/></programlisting>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default251.xml" parse="text"/></programlisting>
+ <para>
The landing page contains the links and form to call our portlet:
</para>
- <programlistingco>
- <areaspec>
- <area coords="1 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-taglib" />
- <area coords="14 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method1" />
- <area coords="20 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.1" />
- <area coords="24 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.2" />
- <area coords="30 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.1" />
- <area coords="31 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.2" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortletDevelopment_Standard/default252.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-taglib">
- <para>
+ <programlistingco>
+ <areaspec>
+ <area coords="1 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-taglib"/>
+ <area coords="14 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method1"/>
+ <area coords="20 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.1"/>
+ <area coords="24 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.2"/>
+ <area coords="30 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.1"/>
+ <area coords="31 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.2"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default252.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-taglib">
+ <para>
The portlet taglib. This needs to be declared.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method1">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method1">
+ <para>
The first method showed here is the simplest one. <literal>portlet:renderURL</literal> will create a URL that calls the render phase of the current portlet and append the result at the place of the markup (within a tag). A parameter is also added directly to the URL.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.1">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.1">
+ <para>
In this method the <literal>var</literal> attribute is used. This avoids having one XML tag within another. Instead of printing the url the <literal>portlet:renderURL</literal> tag will store the result in the referenced variable ( <literal>myRenderURL</literal>).
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.2">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.2">
+ <para>
The variable <literal>myRenderURL</literal> is used like any other JSP variable.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.1">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.1">
+ <para>
The third method mixes form submission and action request. Again, a temporary variable is used to put the created URL into.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.2">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.2">
+ <para>
The action URL is used in HTML form.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <para>
In the third method, the action phase is triggered first then the render phase is triggered, which outputs some content back to the web browser based on the available render parameters.
</para>
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center" fileref="images/PortletDevelopment/Standard/jsp_portlet/process.png" format="PNG" scale="100" width="444" />
- </imageobject>
- <imageobject role="fo">
- <imagedata align="center" contentwidth="140mm" fileref="images/PortletDevelopment/Standard/jsp_portlet/process.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </section>
-
- <section id="sect-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge">
- <title>JSF example using the JBoss Portlet Bridge</title>
- <para>
- In order to write a portlet using JSF a 'bridge' is needed. This software allows developers to write a portlet application as if it was a JSF application. The bridge then negotiates the interactions between the two layers.
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="444" align="center" scale="100" fileref="images/PortletDevelopment/Standard/jsp_portlet/process.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="444" contentwidth="140mm" align="center" fileref="images/PortletDevelopment/Standard/jsp_portlet/process.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </section>
+ <section id="sect-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge">
+ <title>JSF example using the JBoss Portlet Bridge</title>
+ <para>
+ In order to write a portlet using JSF a 'bridge' is needed. This software allows developers to write a portlet application as if it was a JSF application. The bridge then negotiates the interactions between the two layers.
</para>
- <para>
+ <para>
An example using the JBoss Portlet Bridge is available in the <filename>/jboss-epp-<VERSION>-src/portal/examples/portlets/</filename> directory of the JBoss Enterprise Portal Platform sources package or the <filename>/jboss-epp-<VERSION>-docs/epp-doc/examples/portlets</filename> directory of the documentation package. The configuration is slightly different from a JSP application. This example can be used as a base to configure instead of creating a new application.
</para>
- <para>
+ <para>
As in any JSF application, the file <literal>faces-config.xml</literal> is required. It must contain the following information:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortletDevelopment_Standard/default253.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default253.xml" parse="text"/></programlisting>
+ <para>
The portlet bridge libraries must be available and are usually bundled with the <literal>WEB-INF/lib</literal> directory of the web archive.
</para>
- <para>
+ <para>
The other differences when compared to a regular portlet application are in the portlet descriptor. All the relevant details about this can be found in the JSR-329 specification that the JBoss Portlet Bridge implements.
</para>
- <programlistingco>
- <areaspec>
- <area coords="8 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-portlet" />
- <area coords="21 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-view" />
- <area coords="26 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-edit" />
- <area coords="31 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-help" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortletDevelopment_Standard/default254.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-portlet">
- <para>
+ <programlistingco>
+ <areaspec>
+ <area coords="8 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-portlet"/>
+ <area coords="21 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-view"/>
+ <area coords="26 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-edit"/>
+ <area coords="31 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-help"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortletDevelopment_Standard/default254.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-portlet">
+ <para>
All JSF portlets define <literal>javax.portlet.faces.GenericFacesPortlet </literal> as portlet class. This class is part of the JBoss Portlet Bridge.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-view">
- <para>
- This is a mandatory parameter to define what's the default page to display.
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-view">
+ <para>
+ This is a mandatory parameter to define what's the default page to display.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-edit">
- <para>
- This parameter defines which page to display on the 'edit' mode.
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-edit">
+ <para>
+ This parameter defines which page to display on the 'edit' mode.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-help">
- <para>
- This parameter defines which page to display on the 'help' mode.
+ </callout>
+ <callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-help">
+ <para>
+ This parameter defines which page to display on the 'help' mode.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <note>
- <title>JBoss Portlet Bridge</title>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <note>
+ <title>JBoss Portlet Bridge</title>
+ <para>
For more information about the JBoss Portlet Bridge, see the dedicated chapter which is part of this document.
</para>
-
- </note>
-
- </section>
-
-
- </section>
-
-
+ </note>
+ </section>
</section>
-
-
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2012-07-06 10:59:53 UTC (rev 8777)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2012-07-09 00:39:39 UTC (rev 8778)
@@ -56,7 +56,7 @@
<para>
Below is an example configuration from the <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jcr-configuration.xml</filename> file.
</para>
- <programlisting linenumbering="numbered" language="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../code_samples/jcr-configuration.xml_code" parse="text"/></programlisting>
+ <programlisting linenumbering="numbered" language="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_Configuration/jcr-configuration.xml" parse="text"/></programlisting>
<section id="sect-Reference_Guide-Portal_configuration-JCR_Configuration">
<title>JCR Configuration</title>
<para>
12 years, 5 months
gatein SVN: r8777 - in epp/portal/branches/EPP_5_2_Branch: examples/extension/war/src/main/webapp/WEB-INF/classes/locale/navigation/portal and 13 other directories.
by do-not-reply@jboss.org
Author: ppalaga
Date: 2012-07-06 06:59:53 -0400 (Fri, 06 Jul 2012)
New Revision: 8777
Modified:
epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties
epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties
epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/portal/sample_cs.properties
epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties
epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties
epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties
epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/portal/sample_cs.properties
epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_cs.properties
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_cs.properties
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_cs.properties
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_cs.properties
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_cs.properties
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties
Log:
Bug 794007 - Translation to Czech - removed duplicate content in Czech translation files.
Modified: epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,23 +18,4 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-platform.users.samplePage=Sample-Ext Str\u00E1nka skupiny
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
platform.users.samplePage=Sample-Ext Str\u00e1nka skupiny
Modified: epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,23 +18,4 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-portal.classic.samplePage=Sample-Ext Str\u00E1nka port\u00E1lu
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
portal.classic.samplePage=Sample-Ext Str\u00e1nka port\u00e1lu
Modified: epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/portal/sample_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/portal/sample_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/portal/sample_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,23 +18,4 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-UIHomePagePortlet.Label.SampleRB.SampleKey=Toto je nov\u00FD kl\u00E1\u010D z nov\u00E9ho Resource Bundlu "locale.portal.sample" ze "sample-ext"
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
UIHomePagePortlet.Label.SampleRB.SampleKey=Toto je nov\u00fd kl\u00e1\u010d z nov\u00e9ho Resource Bundlu "locale.portal.sample" ze "sample-ext"
Modified: epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/examples/extension/war/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -19,30 +19,6 @@
#
UIHomePagePortlet.Label.Password=Pwd:
-UIHomePagePortlet.Label.SampleKey=Toto je nov\u00FD i18n kl\u00ED\u010D
-#############################################################################
-#org.exoplatform.portal.webui.component.UIHomePagePortlet #
-#############################################################################
-UIHomePagePortlet.Label.Username=Usr:
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-UIHomePagePortlet.Label.Password=Pwd:
UIHomePagePortlet.Label.SampleKey=Toto je nov\u00fd i18n kl\u00ed\u010d
#############################################################################
#org.exoplatform.portal.webui.component.UIHomePagePortlet #
Modified: epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,23 +18,4 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-platform.users.samplePage=Sample-Portal Str\u00E1nka skupiny
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-platform.users.samplePage=Sample-Portal Str\u00e1nka skupiny
+platform.users.samplePage=Sample-Portal Str\u00e1nka skupiny
Modified: epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,23 +18,4 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-portal.classic.samplePage=Str\u00E1nka port\u00E1lu Sample-Portal
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
portal.classic.samplePage=Str\u00e1nka port\u00e1lu Sample-Portal
Modified: epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/portal/sample_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/portal/sample_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/portal/sample_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,23 +18,4 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-UIHomePagePortlet.Label.SampleRB.SampleKey=Toto je nov\u00FD kl\u00ED\u010D z nov\u00E9ho Resource Bundlu "locale.portal.sample" ze "sample-portal"
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
UIHomePagePortlet.Label.SampleRB.SampleKey=Toto je nov\u00fd kl\u00ed\u010d z nov\u00e9ho Resource Bundlu "locale.portal.sample" ze "sample-portal"
Modified: epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/examples/portal/war/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -19,30 +19,6 @@
#
UIHomePagePortlet.Label.Password=Pwd:
-UIHomePagePortlet.Label.SampleKey=Toto je nov\u00FD kl\u00ED\u010D, kter\u00FD byl p\u0159id\u00E1n k Resource Bundlu "locale.portal.webui" ze "sample-portal"
-#############################################################################
-#org.exoplatform.portal.webui.component.UIHomePagePortlet #
-#############################################################################
-UIHomePagePortlet.Label.Username=Usr:
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-UIHomePagePortlet.Label.Password=Pwd:
UIHomePagePortlet.Label.SampleKey=Toto je nov\u00fd kl\u00ed\u010d, kter\u00fd byl p\u0159id\u00e1n k Resource Bundlu "locale.portal.webui" ze "sample-portal"
#############################################################################
#org.exoplatform.portal.webui.component.UIHomePagePortlet #
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -23,26 +23,3 @@
UITabPaneDashboard.msg.cannotDeleteLastTab=Nemohu smazat posledn\u00ed z\u00e1lo\u017eku.
UITabPaneDashboard.msg.deleteTab=Opravdu chcete smazat tuto n\u00e1st\u011bnku?
UITabPaneDashboard.msg.wrongTabName=Jm\u00e9no mus\u00ed b\u00fdt vypln\u011bno a mus\u00ed za\u010d\u00ednat p\u00edsmenem.
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-UITabPaneDashboard.action.addNewDashboard=P\u0159idat n\u00e1st\u011bnku
-UITabPaneDashboard.action.switchShowRange=Zm\u011bnit rozsah
-UITabPaneDashboard.msg.cannotDeleteLastTab=Nemohu smazat posledn\u00ed z\u00e1lo\u017eku.
-UITabPaneDashboard.msg.deleteTab=Opravdu chcete smazat tuto n\u00e1st\u011bnku?
-UITabPaneDashboard.msg.wrongTabName=Jm\u00e9no mus\u00ed b\u00fdt vypln\u011bno a mus\u00ed za\u010d\u00ednat p\u00edsmenem.
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,33 +18,6 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-UIGadgetEditMode.action.Save=Ulo\u017Eit
-UIGadgetEditMode.label.gadgetSelector=Gadget:
-UIGadgetEditMode.label.gadgetUrl=Url:
-UIGadgetEditMode.label.option.local=Lok\u00E1ln\u00ED gadget
-UIGadgetEditMode.label.option.remote=Vzd\u00E1len\u00FD gadget
-UIGadgetEditMode.label.typeSelector=Typ:
-UIGadgetEditMode.title=Nastavte URL gadgetu
-
-UIGadgetPortlet.msg.url-invalid=Form\u00E1t URL gadgetu v preferenc\u00EDch je nespr\u00E1vn\u00FD
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
UIGadgetEditMode.action.Save=Ulo\u017eit
UIGadgetEditMode.label.gadgetSelector=Gadget:
UIGadgetEditMode.label.gadgetUrl=Url:
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -21,86 +21,6 @@
UIAccountForm.action.Back=#{word.back}
UIAccountForm.action.Reset=Vynulovat
UIAccountForm.action.Save=#{word.save}
-UIAccountForm.label.BusinessInfo=Obchodn\u00ED Informace
-UIAccountForm.label.Confirmpassword=Potvrzen\u00ED hesla:
-UIAccountForm.label.HomeInfo=Domovsk\u00E9 informace
-UIAccountForm.label.Membership=\u010Clenstv\u00ED
-##org.exoplatform.account.webui.component.UIAccountForm
-UIAccountForm.label.Profile=U\u017Eivatelsk\u00FD profil
-UIAccountForm.label.SearchUser=Vyhled\u00E1n\u00ED u\u017Eivatele
-UIAccountForm.label.action.SearchUser=Kontrola dostupnosti
-UIAccountForm.label.email=E-mailov\u00E1 adresa:
-UIAccountForm.label.firstName=#{word.firstName}:
-UIAccountForm.label.lastName=#{word.lastName}:
-UIAccountForm.label.displayName=#{word.displayName}:
-UIAccountForm.label.note=Pole ozna\u010Den\u00E1 hv\u011Bzdi\u010Dkou <span style="color: red">*</span> jsou povinn\u00E1
-UIAccountForm.label.option.female=\u017Dena
-UIAccountForm.label.option.male=Mu\u017E
-UIAccountForm.label.password=Heslo:
-UIAccountForm.label.password1x=Heslo:
-UIAccountForm.label.password2x=Potvrzen\u00ED hesla:
-UIAccountForm.label.user.bdate=#{word.birthday}:
-UIAccountForm.label.user.business-info.online.email=#{word.email}:
-UIAccountForm.label.user.business-info.online.uri=#{word.website}:
-UIAccountForm.label.user.business-info.postal.city=#{word.city}:
-UIAccountForm.label.user.business-info.postal.country=#{word.country}:
-UIAccountForm.label.user.business-info.postal.name=#:
-UIAccountForm.label.user.business-info.postal.postalcode=#{word.postalCode}:
-UIAccountForm.label.user.business-info.postal.stateprov=#{word.stateProv}:
-UIAccountForm.label.user.business-info.postal.street=#{word.street}:
-UIAccountForm.label.user.business-info.telecom.mobile.number=#{word.mobile}:
-UIAccountForm.label.user.business-info.telecom.telephone.number=#{word.tel}:
-UIAccountForm.label.user.department=#{word.department}:
-UIAccountForm.label.user.employer=#{word.employer}:
-UIAccountForm.label.user.gender=#{word.gender}:
-UIAccountForm.label.user.home-info.online.email=#{word.email}:
-UIAccountForm.label.user.home-info.online.uri=#{word.website}:
-UIAccountForm.label.user.home-info.postal.city=#{word.city}:
-UIAccountForm.label.user.home-info.postal.country=#{word.country}:
-UIAccountForm.label.user.home-info.postal.name=#:
-UIAccountForm.label.user.home-info.postal.postalcode=#{word.postalCode}:
-UIAccountForm.label.user.home-info.postal.stateprov=#{word.stateProv}:
-UIAccountForm.label.user.home-info.postal.street=#{word.street}:
-UIAccountForm.label.user.home-info.telecom.mobile.number=#{word.mobile}:
-UIAccountForm.label.user.home-info.telecom.telephone.number=#{word.tel}:
-UIAccountForm.label.user.jobtitle=#{word.jobTitle}:
-UIAccountForm.label.user.language=Jazyk
-UIAccountForm.label.user.name.family=#{word.familyName}:
-UIAccountForm.label.user.name.given=#{word.givenName}:
-UIAccountForm.label.user.name.nickName=#{word.nickName}:
-UIAccountForm.label.username=#{word.userName}:
-UIAccountForm.msg.incorrect-password=P\u0159epsan\u00E9 heslo je nespr\u00E1vn\u00E9
-UIAccountForm.msg.sucsesful.create.user=Vytvo\u0159en\u00ED u\u017Eivatel bylo \u00FAsp\u011B\u0161n\u00E9
-#{0} is the username that the remote user enter
-UIAccountForm.msg.user-exist=U\u017Eivatelsk\u00E9 jm\u00E9no '{0}' je ji\u017E obsazen\u00E9
-UIAccountForm.tab.label.AccountInputSet=Nastaven\u00ED \u00FA\u010Dtu
-UIAccountForm.tab.label.AccountTemplate=Nastaven\u00ED \u0161ablony
-UIAccountForm.tab.label.UIUserMembershipSelector=\u010Clenstv\u00ED u\u017Eivatele
-UIAccountForm.tab.label.UIUserProfileInputSet=U\u017Eivatelsk\u00FD profil
-UIAccountForm.title=P\u0159idat/Upravit \u00FA\u010Det
-
-UIPopupWindow.title.UIGroupMembershipSelector=Vyberte \u010Dlenstv\u00ED u\u017Eivatele
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-UIAccountForm.action.Back=#{word.back}
-UIAccountForm.action.Reset=Vynulovat
-UIAccountForm.action.Save=#{word.save}
UIAccountForm.label.BusinessInfo=Obchodn\u00ed Informace
UIAccountForm.label.Confirmpassword=Potvrzen\u00ed hesla:
UIAccountForm.label.HomeInfo=Domovsk\u00e9 informace
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,35 +18,6 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-UIAdminToolbarPortlet.action.AddPage=P\u0159idat novou str\u00E1nku
-UIAdminToolbarPortlet.action.BrowsePage=Spr\u00E1va str\u00E1nek
-UIAdminToolbarPortlet.action.CreatePortal=Vytvo\u0159it nov\u00FD port\u00E1l
-UIAdminToolbarPortlet.action.EditPage=Upravit str\u00E1nku
-UIAdminToolbarPortlet.action.EditPageAndNavigation=Upravit str\u00E1nku a navigaci
-UIAdminToolbarPortlet.action.EditPortal=Upravit port\u00E1l
-UIAdminToolbarPortlet.action.EditSiteLayout=Upravit rozvr\u017Een\u00ED
-UIAdminToolbarPortlet.action.Editor=Editor
-UIAdminToolbarPortlet.action.group.Editor=Editor skupin
-UIAdminToolbarPortlet.action.portal.Editor=Editor port\u00E1lu
-UIAdminToolbarPortlet.action.user.Editor=Editor n\u00E1st\u011Bnky
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
UIAdminToolbarPortlet.action.AddPage=P\u0159idat novou str\u00e1nku
UIAdminToolbarPortlet.action.BrowsePage=Spr\u00e1va str\u00e1nek
UIAdminToolbarPortlet.action.CreatePortal=Vytvo\u0159it nov\u00fd port\u00e1l
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -23,168 +23,6 @@
UIAddApplicationForm.header.description=Popis
## org.exoplatform.applicationregistry.webui.component.UIAddApplicationForm
UIAddApplicationForm.header.input=Vybrat
-UIAddApplicationForm.header.label=Zobrazovan\u00FD n\u00E1zev
-UIAddApplicationForm.label.displayName=#{label.displayName}
-UIAddApplicationForm.label.option.gadget=Gadget
-UIAddApplicationForm.label.option.portlet=Portlet
-UIAddApplicationForm.label.type=Typ aplikace
-UIAddApplicationForm.msg.PortletExist=Tato aplikace je ji\u017E v kategorii, vyberte pros\u00EDm jinou!
-UIAddApplicationForm.msg.appNotExists=Pros\u00EDm vyberte aplikaci.
-UIAddApplicationForm.msg.typeNoApps=Aplikace tohoto typu neexistuje.
-
-## org.exoplatform.applicationregistry.webui.component.UIAddGadget
-UIAddGadget.action.Add=P\u0159idat
-UIAddGadget.action.Cancel=#{word.cancel}
-UIAddGadget.label.url=URL
-UIAddGadget.label.urlError=Data v url: '{0}' nejsou platn\u00E1
-UIAddGadget.label.urlExist=Toto url ji\u017E existuje, vyberte pros\u00EDm jin\u00E9!
-
-UIApplicationForm.action.Cancel=#{word.cancel}
-UIApplicationForm.action.Save=#{word.save}
-UIApplicationForm.label.applicationName=N\u00E1zev aplikace:
-UIApplicationForm.label.description=#{label.description}
-UIApplicationForm.label.displayName=#{label.displayName}
-##org.exoplatform.applicationregistry.webui.component.UIApplicationForm
-UIApplicationForm.title=Upravit informace o aplikaci
-
-UIApplicationInfo.label.accessPermissions=V\u00FDchoz\u00ED nastaven\u00ED p\u0159\u00EDstupov\u00FDch pr\u00E1v
-UIApplicationInfo.label.accessPermissionsDescription=Tato p\u0159\u00EDstupov\u00E1 pr\u00E1va budou defaultn\u011B nastaven\u00E1 p\u0159i pou\u017Eit\u00ED t\u00E9to komponenty
-UIApplicationInfo.label.description=#{label.description}
-UIApplicationInfo.label.displayName=#{label.displayName}
-##org.exoplatform.applicationregistry.webui.component.UIApplicationInfo
-UIApplicationInfo.label.name=N\u00E1zev:
-UIApplicationInfo.title.editApplication=Upravit aplikaci
-
-UIApplicationRegistryEditMode.label.showImport=Vyberte zobrazen\u00ED importu
-## org.exoplatform.applicationregistry.webui.component.UIApplicationRegistryEditMode
-UIApplicationRegistryEditMode.title=Importovat aplikace
-
-UICategoryForm.action.Cancel=#{word.cancel}
-UICategoryForm.action.Save=#{word.save}
-UICategoryForm.label.description=#{label.description}
-UICategoryForm.label.displayName=#{label.displayName}
-##org.exoplatform.applicationregistry.webui.component.UICategoryForm
-UICategoryForm.label.name=N\u00E1zev kategorie:
-UICategoryForm.msg.SameName=Tato kategorie ji\u017E existuje, pros\u00EDm zvolte jinou!
-UICategoryForm.tab.label.categoryPermission=Nastaven\u00ED pr\u00E1v
-UICategoryForm.tab.label.categorySetting=Nastaven\u00ED kategorie
-
-UICategorySelector.action.Cancel=N\u00E1vrat
-UICategorySelector.action.Save=Ulo\u017Eit
-UICategorySelector.header.categoryName=N\u00E1zev kategorie
-UICategorySelector.header.choose=Vybrat
-UICategorySelector.msg.NoCategory=Nen\u00ED tu \u017E\u00E1dn\u00E1 kategorie
-
-UIGadgetEditor.action.Cancel=#{word.cancel}
-UIGadgetEditor.action.Save=#{word.save}
-UIGadgetEditor.gadget.msg.gadgetIsExist=Tento n\u00E1zev ji\u017E existuje, vyberte pros\u00EDm jin\u00FD.
-UIGadgetEditor.label.name=N\u00E1zev:
-## org.exoplatform.applicationregistry.webui.component.UIGadgetEditor
-UIGadgetEditor.label.source=Zdroj:
-UIGadgetEditor.msg.Invalid=Pole "{0}" nem\u016F\u017Ee obsahovat speci\u00E1ln\u00ED znaky.
-UIGadgetEditor.msg.invalidSpec=Tento zdroj nevyhovuje specifikaci Gadget\u016F.
-
-UIGadgetInfo.label.categories=Categories:
-UIGadgetInfo.label.categories.clickHere=Klikn\u011Bte zde pro p\u0159id\u00E1n\u00ED do kategori\u00ED
-UIGadgetInfo.label.categories.guide=Mus\u00EDte p\u0159idat tento gadget do kategori\u00ED, aby mohl b\u00FDt pou\u017Eit na n\u00E1st\u011Bnce.
-UIGadgetInfo.label.description=#{label.description}
-UIGadgetInfo.label.displayName=#{label.displayName}
-UIGadgetInfo.label.editUrl=URL pro editaci:
-## org.exoplatform.applicationregistry.webui.component.UIGadgetInfo
-UIGadgetInfo.label.gadgetDetails=Detaily gadgetu
-UIGadgetInfo.label.name=N\u00E1zev gadgetu:
-UIGadgetInfo.label.reference=Odkaz:
-UIGadgetInfo.label.viewUrl=URL:
-UIGadgetInfo.msg.gadgetNotExist=Nemohu spustit akci na gadgetu, kter\u00FD ji\u017E nen\u00ED v databa\u00E1zi.
-UIGadgetInfo.title.editGadget=Upravit gadget
-UIGadgetInfo.title.refresh=Obnovit informace
-
-## org.exoplatform.portletregistry.webui.component.UIGadgetManagement
-UIGadgetManagement.label.addRemote=P\u0159idat vzd\u00E1len\u00FD gadget
-UIGadgetManagement.label.createNew=Vytvo\u0159it nov\u00FD gadget
-UIGadgetManagement.msg.deleteGadget=Jste si jist\u00FD, \u017Ee chcete smazat tento gadget?
-UIGadgetManagement.msg.deleteGadgetInUse=Nemohu smazat tento gadget, je pou\u017E\u00EDv\u00E1n.
-UIGadgetManagement.msg.noGadget=\u017D\u00E1dn\u00E9 gadgety nejsou p\u0159\u00EDstupn\u00E9.
-UIGadgetManagement.title.deleteGadget=Smazat gadget
-
-##package org.exoplatform.organization.webui.component.UIListPermissionSelector
-UIListPermissionSelector.header.groupId=Skupina
-UIListPermissionSelector.header.membership=\u010Clenstv\u00ED
-
-UIListPermissionSelectorPopup.title.ListPermissionSelector=Vyberte pr\u00E1va
-
-## org.exoplatform.applicationregistry.webui.component.UIApplicationOrganizer
-UIOrganizer.label.addCategory=P\u0159idat kategorii
-UIOrganizer.label.autoImport=Importovat aplikace
-UIOrganizer.label.categories=Kategorie
-UIOrganizer.msg.applicationNoExist=Tato aplikace ji\u017E nen\u00ED v datab\u00E1zi.
-UIOrganizer.msg.categoryNoExist=Tato kategorie ji\u017E nen\u00ED v datab\u00E1zi.
-UIOrganizer.msg.deleteApplication=Jste si jist\u00FD, \u017Ee chcete smazat tuto aplikaci?
-UIOrganizer.msg.deleteApplicationInUse=Nemohu smazat tuto aplikaci, je pou\u017E\u00EDv\u00E1na.
-UIOrganizer.msg.deleteCategory=Jste si jist\u00FD smaz\u00E1n\u00EDm t\u00E9to kategorie a v\u0161ech aplikac\u00ED na n\u00ED?
-UIOrganizer.msg.deleteCategoryInUse=Nemohu smazat tuto kategorii, je pou\u017E\u00EDv\u00E1na.
-UIOrganizer.msg.emptyCategory=Tato kategorie nem\u00E1 \u017E\u00E1dn\u00E9 aplikace, klikn\u011Bte na tla\u010D\u00EDtko (+) pro p\u0159id\u00E1n\u00ED aplikace.
-UIOrganizer.msg.importAll=Tato akce automaticky vytvo\u0159\u00ED kategorie a importuje do n\u00ED v\u0161echny gadgety a portlety.
-UIOrganizer.msg.noCategory=Neexistuj\u00ED \u017E\u00E1dn\u00E9 kategorie. M\u016F\u017Eete kliknout na "P\u0159idat kategorii" nebo "Importovat aplikace" pro p\u0159id\u00E1n\u00ED kategorie.
-UIOrganizer.title.addApplication=P\u0159idat aplikaci do kategorie
-UIOrganizer.title.deleteApplication=Smazat aplikaci
-UIOrganizer.title.deleteCategory=Smazat kategorii
-UIOrganizer.title.editCategory=Upravit kategorii
-
-UIPortletInfo.label.categories=Categories:
-UIPortletInfo.label.categories.clickHere=Klikn\u011Bte sem pro p\u0159id\u00E1n\u00ED do kategori\u00ED
-UIPortletInfo.label.categories.guide=Mus\u00EDte p\u0159idat tento portlet do jedn\u00E9 nebo n\u011Bkolika kategori\u00ED, aby mohl b\u00FDt pou\u017Eit na str\u00E1nk\u00E1ch.
-UIPortletInfo.label.description=#{label.description}
-UIPortletInfo.label.display=#{label.displayName}
-## org.exoplatform.applicationregistry.webui.component.UIPortletInfo
-UIPortletInfo.label.name=N\u00E1zev portletu:
-UIPortletInfo.msg.noPortletPreferences=\u017D\u00E1dn\u00E9 preference portletu
-UIPortletInfo.title.portletPreferences=Preference portletu
-
-UIPortletManagement.msg.noPortlet=\u017D\u00E1dn\u00E9 portlety nejsou p\u0159\u00EDstupn\u00E9.
-## org.exoplatform.applicationregistry.webui.component.UIPortletManagement
-UIPortletManagement.title.local=LOK\u00C1LN\u00CD
-UIPortletManagement.title.remote=VZD\u00C1LEN\u00C9
-
-UIToolbar.label.gadget=Gadget
-## org.exoplatform.applicationregistry.webui.component.UIApplicationRegistryPortlet
-UIToolbar.label.organize=Kategorie
-UIToolbar.label.portlet=Portlet
-
-application.msg.changeNotExist=Nemohu ulo\u017Eit zm\u011Bny aplikace, kter\u00E1 ji\u017E nen\u00ED v datab\u00E1zi.
-
-category.msg.changeNotExist=Nemohu ulo\u017Eit zm\u011Bny kategorie, kter\u00E1 ji\u017E nen\u00ED v datab\u00E1zi.
-
-gadget.msg.changeNotExist=Nemohu ulo\u017Eit zm\u011Bny gadgetu, kter\u00FD ji\u017E nen\u00ED v datab\u00E1zi.
-
-label.description=Popis:
-label.displayName=Zobrazovan\u00FD n\u00E1zev:
-
-##expression
-word.cancel=N\u00E1vrat
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-UIAddApplicationForm.action.Add=P\u0159idat
-UIAddApplicationForm.action.Cancel=#{word.cancel}
-UIAddApplicationForm.header.description=Popis
-## org.exoplatform.applicationregistry.webui.component.UIAddApplicationForm
-UIAddApplicationForm.header.input=Vybrat
UIAddApplicationForm.header.label=Zobrazovan\u00fd n\u00e1zev
UIAddApplicationForm.label.displayName=#{label.displayName}
UIAddApplicationForm.label.option.gadget=Gadget
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -25,253 +25,6 @@
EditGroup.action.Back=#{word.cancel}
EditGroup.action.Save=#{word.save}
-EditGroup.title=Upravit aktu\u00E1ln\u00ED skupinu
-
-EditMembership.title.EditMembership=Upravit \u010Dlenstv\u00ED
-EditMembership.title.UIGroupEditMembershipForm=Upravit \u010Dlenstv\u00ED
-
-SearchUser.title.ListUserForSearch=Vyhledat u\u017Eivatele
-SearchUser.title.SearchUser=Vybrat u\u017Eivatele
-SearchUser.title.UIUserSelector=V\u00FDb\u011Br u\u017Eivatele
-
-SearchUserForm.label.option.email=#{word.email}
-SearchUserForm.label.option.firstName=#{word.firstName}
-SearchUserForm.label.option.lastName=#{word.lastName}
-SearchUserForm.label.option.userName=#{word.userName}
-
-UIGroupEditMembershipForm.action.Cancel=N\u00E1vrat
-UIGroupEditMembershipForm.action.Save=Ulo\u017Eit
-UIGroupEditMembershipForm.label.membership=\u010Clenstv\u00ED
-##org.exoplatform.organization.webui.component.UIGroupMembershipForm
-UIGroupEditMembershipForm.label.username=U\u017Eivatelsk\u00E9 jm\u00E9no
-UIGroupEditMembershipForm.msg.membership-delete=Nemohu ulo\u017Eit, \u010Dlenstv\u00ED bylo smaz\u00E1no!.
-UIGroupEditMembershipForm.msg.membership-exist="Typ \u010Dlenstv\u00ED ji\u017E existuje, zadejte pros\u00EDm jin\u00FD.
-
-UIGroupForm.label.description=Popis
-UIGroupForm.label.groupName=N\u00E1zev skupiny
-UIGroupForm.label.label=Popisek
-UIGroupForm.msg.group-exist=Tento n\u00E1zev skupiny ji\u017E existuje, zadejte pros\u00EDm jin\u00E9
-UIGroupForm.msg.group-not-exist=Skupina "{0}" neexistuje nebo byla smaz\u00E1na.
-
-##org.exoplatform.organization.webui.component.UIGroupInfo
-UIGroupInfo.tab.label.UIUserInGroup=U\u017Eivatel ve skupin\u011B
-UIGroupInfo.title=Informace o skupin\u011B
-
-UIGroupManagement.deleteGroup=Jste si jist\u00FD, \u017Ee chcete smazat tuto skupinu?
-UIGroupManagement.label.AddGroup=P\u0159idat novou skupinu
-UIGroupManagement.label.DeleteGroup=Smazat vybranou skupinu
-UIGroupManagement.label.EditGroup=Upravit vybranou skupinu
-UIGroupManagement.label.Groups=Skupiny
-
-UIGroupMembershipForm.action.Save=#{word.save}
-UIGroupMembershipForm.label.Refresh=Obnovit
-UIGroupMembershipForm.label.SearchUser=Vybrat u\u017Eivatele
-UIGroupMembershipForm.label.membership=\u010Clenstv\u00ED
-UIGroupMembershipForm.label.title=\u010Clenstv\u00ED skupiny
-UIGroupMembershipForm.label.username=u\u017Eivatelsk\u00E9 jm\u00E9no
-##org.exoplatform.organization.webui.component.UIGroupMembershipForm
-UIGroupMembershipForm.title=P\u0159idat \u010Dlena
-
-UIGroupSharedInfo.title=Sd\u00EDlet informace
-
-UIListMembershipType.deleteMemberShip=Jste si jist\u00FD, \u017Ee chcete smazat toto \u010Dlenstv\u00ED?
-
-UIListUsers.action.title.DeleteUser=Smazat u\u017Eivatele
-UIListUsers.action.title.SelectUser=Vybrat u\u017Eivatele
-UIListUsers.action.title.ViewUserInfo=Upravit informace o u\u017Eivateli
-UIListUsers.deleteUser=Jste si jist\u00FD, \u017Ee chcete smazat u\u017Eivatele {0} ?
-UIListUsers.header.action=#{word.action}
-UIListUsers.header.email=#{word.email}
-UIListUsers.header.firstName=#{word.firstName}
-UIListUsers.header.lastName=#{word.lastName}
-##org.exoplatform.organization.webui.component.UIListUser
-UIListUsers.header.userName=#{word.userName}
-UIListUsers.label.option.email=#{word.email}
-UIListUsers.label.option.firstName=#{word.firstName}
-UIListUsers.label.option.lastName=#{word.lastName}
-UIListUsers.label.option.userName=#{word.userName}
-UIListUsers.msg.DeleteSuperUser={0} je superu\u017Eivatel, nem\u016F\u017Ee b\u00FDt proto smaz\u00E1n
-UIListUsers.msg.user-is-deleted=Tento u\u017Eivatel je z\u0159ejm\u011B smaz\u00E1n\u00FD
-
-#{0} is the member that the remote memeber enter
-UIMemberShipForm.msg.membershipType-exist=Typ \u010Dlenstv\u00ED '{0}' je ji\u017E zabran\u00FD
-
-UIMembershipForm.action.Back=#{word.back}
-UIMembershipForm.action.Save=#{word.save}
-UIMembershipForm.label.description=#{word.description}
-UIMembershipForm.label.membership=\u010Clenstv\u00ED
-UIMembershipForm.label.name=N\u00E1zev \u010Dlenstv\u00ED
-##org.exoplatform.organization.webui.component.UIMembershipForm
-UIMembershipForm.label.username=U\u017Eivatelsk\u00E9 jm\u00E9no
-
-UIMembershipList.action.title.DeleteMembership=Smazat \u010Dlenstv\u00ED
-UIMembershipList.action.title.EditMembership=Upravit \u010Dlenstv\u00ED
-UIMembershipList.header.action=#{word.action}
-UIMembershipList.header.createdDate=Datum vytvo\u0159en\u00ED
-UIMembershipList.header.description=#{word.description}
-UIMembershipList.header.modifiedDate=Datum modifikace
-##org.exoplatform.organization.webui.component.UIMembershipList
-UIMembershipList.header.name=N\u00E1zev \u010Dlenstv\u00ED
-UIMembershipList.msg.DeleteMandatory=Toto \u010Dlenstv\u00ED nem\u016F\u017Ee b\u00FDt smaz\u00E1no, proto\u017Ee je povinn\u00E9
-UIMembershipList.msg.InUse=Toto \u010Dlenstv\u00ED nem\u016F\u017Ee b\u00FDt smaz\u00E1no, proto\u017Ee je pou\u017E\u00EDv\u00E1no
-
-UIMembershipTypeForm.action.Back=#{word.back}
-UIMembershipTypeForm.action.Reset=Vynulovat
-UIMembershipTypeForm.action.Save=#{word.save}
-UIMembershipTypeForm.label.description=Popis
-UIMembershipTypeForm.label.name=N\u00E1zev \u010Dlenstv\u00ED
-UIMembershipTypeForm.msg.MembershipNotExist=\u010Clenstv\u00ED [{0}] neexistuje nebo bylo smaz\u00E1no.
-UIMembershipTypeForm.msg.SameName=Toto \u010Dlenstv\u00ED ji\u017E existuje, zadej pros\u00EDm jin\u00E9
-##org.exoplatform.organization.webui.component.UIMembershipTypeForm
-UIMembershipTypeForm.title=P\u0159idat/Upravit \u010Dlenstv\u00ED
-
-UIOrganizationPortlet.label.groupManagement=Spr\u00E1va skupin
-UIOrganizationPortlet.label.membershipManagement=Spr\u00E1va \u010Dlenstv\u00ED
-##org.exoplatform.organization.webui.component.UIOrganizationPortlet
-UIOrganizationPortlet.label.userManagement=Spr\u00E1va u\u017Eivatel\u016F
-
-UISharedNavigation.action.Save=Ulo\u017Eit
-UISharedNavigation.label.priority=Priorita
-UISharedNavigation.label.userNavigation=N\u00E1zev str\u00E1nky u\u017Eivatelsk\u00E9 navigace
-UISharedNavigation.msg.notSelected=Je t\u0159eba vybrat skupinu!
-
-UISharedNavigationForm.action.Back=#{word.back}
-UISharedNavigationForm.action.Remove=Smazat
-UISharedNavigationForm.action.Save=#{word.save}
-UISharedNavigationForm.label.description=Popis
-UISharedNavigationForm.label.membership=\u010Clenstv\u00ED
-UISharedNavigationForm.label.navigation=Navigace
-UISharedNavigationForm.label.priority=Priorita
-UISharedNavigationForm.msg.user-nonexist=U\u017Eivatel "{0}" neexistuje
-UISharedNavigationForm.tab.label.Permission=V\u00FDb\u011Br pr\u00E1v
-UISharedNavigationForm.tab.label.SharedNavigation=Nastaven\u00ED sd\u00EDlen\u00E9 navigace
-
-UISharedPortalForm.action.Back=#{word.back}
-UISharedPortalForm.action.Remove=Odstranit
-UISharedPortalForm.action.Save=#{word.save}
-UISharedPortalForm.label.description=Popis
-UISharedPortalForm.label.membership=\u010Clenstv\u00ED
-UISharedPortalForm.label.portal=Port\u00E1l
-UISharedPortalForm.label.priority=Priorita
-UISharedPortalForm.msg.user-nonexist=U\u017Eivatel "{0}" neexistuje
-UISharedPortalForm.tab.label.Permission=V\u00FDb\u011Br pr\u00E1v
-UISharedPortalForm.tab.label.SharedPortal=Nastaven\u00ED port\u00E1lu
-
-#############################################################################
-# org.exoplatform.portal.organization.component.UISharedNavigation#
-#############################################################################
-UITabPane.title.UISharedNavigation=Navigace str\u00E1nek skupiny
-############################################################################
-# org.exoplatform.portal.component.customization.UIShareNavigationForm #
-############################################################################
-UITabPane.title.UISharedNavigationForm=Sd\u00EDlen\u00E1 navigace
-#############################################################################
-# org.exoplatform.portal.component.customization.UISharePortalForm#
-#############################################################################
-UITabPane.title.UISharedPortalForm=Sd\u00EDlen\u00FD port\u00E1l
-UITabPane.title.UIUserInGroup=Informace o skupin\u011B
-
-UIUserInGroup.action.title.DeleteUser=Smazat \u010Dlena
-UIUserInGroup.action.title.Edit=Upravit \u010Dlena
-##org.exoplatform.organization.webui.component.UIUserInGroup
-UIUserInGroup.confirm.deleteUser=Jste si jist\u00FD, \u017Ee chcete smazat u\u017Eivatele {0} ze skupiny {1}?
-UIUserInGroup.header.action=#{word.action}
-UIUserInGroup.header.email=#{word.email}
-UIUserInGroup.header.firstName=#{word.firstName}
-UIUserInGroup.header.lastLoginTime=Posledn\u00ED p\u0159ihl\u00E1\u0161en\u00ED
-UIUserInGroup.header.lastName=#{word.lastName}
-UIUserInGroup.header.membershipType=Typ \u010Dlenstv\u00ED
-UIUserInGroup.header.userName=#{word.userName}
-UIUserInGroup.label.membership=N\u00E1zev \u010Dlenstv\u00ED
-UIUserInGroup.label.username=#{word.userName}
-
-UIUserInfo.action.Back=#{word.cancel}
-UIUserInfo.action.Save=#{word.save}
-UIUserInfo.label.BusinessInfo=Obchodn\u00ED informace
-UIUserInfo.label.Confirmpassword=Potvrzen\u00ED hesla :
-UIUserInfo.label.HomeInfo=Informace o domov\u011B
-UIUserInfo.label.Profile=U\u017Eivatelsk\u00FD profil
-UIUserInfo.label.changePassword=Zm\u011Bnit heslo:
-UIUserInfo.label.confirmPassword=Potvrdit heslo:
-UIUserInfo.label.email=E-mailov\u00E1 adresa:
-UIUserInfo.label.firstName=#{word.firstName}:
-UIUserInfo.label.lastName=#{word.lastName}:
-UIUserInfo.label.displayName=#{word.displayName}:
-UIUserInfo.label.newPassword=Nov\u00E9 heslo:
-UIUserInfo.label.option.ar=Arab\u0161tina
-UIUserInfo.label.option.cs=\u010Ce\u0161tina
-UIUserInfo.label.option.de=N\u011Bm\u010Dina
-UIUserInfo.label.option.ee=\u0160pan\u011Bl\u0161tina
-UIUserInfo.label.option.en=Angli\u010Dtina
-UIUserInfo.label.option.female=\u017Dena
-UIUserInfo.label.option.fr=Francouz\u0161tina
-UIUserInfo.label.option.ma=Ma
-UIUserInfo.label.option.male=Mu\u017E
-UIUserInfo.label.option.ru=Ru\u0161tina
-UIUserInfo.label.option.vi=Vietnam\u0161tina
-UIUserInfo.label.password=Heslo :
-UIUserInfo.label.user.bdate=#{word.birthday}:
-UIUserInfo.label.user.business-info.online.email=#{word.email}:
-UIUserInfo.label.user.business-info.online.uri=#{word.website}:
-UIUserInfo.label.user.business-info.postal.city=#{word.city}:
-UIUserInfo.label.user.business-info.postal.country=#{word.country}:
-UIUserInfo.label.user.business-info.postal.name=#:
-UIUserInfo.label.user.business-info.postal.postalcode=PS\u010C:
-UIUserInfo.label.user.business-info.postal.stateprov=St\u00E1t/Prov:
-UIUserInfo.label.user.business-info.telecom.mobile.number=#{word.mobile}:
-UIUserInfo.label.user.business-info.telecom.telephone.number=#{word.tel}:
-UIUserInfo.label.user.department=#{word.department}:
-UIUserInfo.label.user.employer=#{word.employer}:
-UIUserInfo.label.user.gender=#{word.gender}:
-UIUserInfo.label.user.home-info.online.email=#{word.email}:
-UIUserInfo.label.user.home-info.online.uri=Webov\u00E9 str\u00E1nky:
-UIUserInfo.label.user.home-info.postal.city=#{word.city}:
-UIUserInfo.label.user.home-info.postal.country=#{word.country}:
-UIUserInfo.label.user.home-info.postal.name=#:
-UIUserInfo.label.user.home-info.postal.postalcode=#{word.postalCode}:
-UIUserInfo.label.user.home-info.postal.stateprov=#{word.stateProv}:
-UIUserInfo.label.user.home-info.postal.street=#{word.street}:
-UIUserInfo.label.user.home-info.telecom.mobile.number=#{word.mobile}:
-UIUserInfo.label.user.home-info.telecom.telephone.number=#{word.tel}:
-UIUserInfo.label.user.jobtitle=#{word.jobTitle}:
-UIUserInfo.label.user.language=#{word.language}:
-UIUserInfo.label.user.name.family=#{word.familyName}:
-UIUserInfo.label.user.name.given=#{word.givenName}:
-UIUserInfo.label.user.name.nickName=#{word.nickName}:
-UIUserInfo.label.userName=#{word.userName}:
-UIUserInfo.tab.label.AccountInputSet=Informace o \u00FA\u010Dtu
-UIUserInfo.tab.label.UIAccountEditInputSet=Informace o \u00FA\u010Dtu
-UIUserInfo.tab.label.UIUserMembershipSelector=\u010Clenstv\u00ED u\u017Eivatele
-UIUserInfo.tab.label.UIUserProfileInputSet=U\u017Eivatelsk\u00FD profil
-##org.exoplatform.organization.webui.component.UIUserInfo
-UIUserInfo.title=Informace o u\u017Eivatelsk\u00E9m profilu
-
-UIUserMembershipSelector.deleteMembership=Jste si jist, \u017Ee chcete smazat toto \u010Dlenstv\u00ED?
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-AddGroup.action.Back=#{word.cancel}
-AddGroup.action.Save=#{word.save}
-##org.exoplatform.organization.webui.component.UIGroupForm
-AddGroup.title=P\u0159idat novou skupinu
-
-EditGroup.action.Back=#{word.cancel}
-EditGroup.action.Save=#{word.save}
EditGroup.title=Upravit aktu\u00e1ln\u00ed skupinu
EditMembership.title.EditMembership=Upravit \u010dlenstv\u00ed
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,29 +18,6 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-UISiteManagement.action.addNewPortal=P\u0159idat nov\u00FD port\u00E1l
-UISiteManagement.label.deletePortal=Smazat
-UISiteManagement.label.editLayout=Upravit rozvr\u017Een\u00ED
-UISiteManagement.label.editNav=Upravit navigaci
-UISiteManagement.label.editPortalProp=Upravit nastaven\u00ED port\u00E1lu
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
UISiteManagement.action.addNewPortal=P\u0159idat nov\u00fd port\u00e1l
UISiteManagement.label.deletePortal=Smazat
UISiteManagement.label.editLayout=Upravit rozvr\u017een\u00ed
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,38 +18,6 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-UIRegisterEditMode.label.useCaptcha=Pou\u017Eijte captchu:
-UIRegisterEditMode.title=Registrace preferenc\u00ED portletu
-
-UIRegisterForm.label.action.CheckUsernameAvailability=Zkontrolujte dostupnost
-UIRegisterForm.label.captcha=Textov\u00E1 validace:
-UIRegisterForm.label.confirmPassword=Potvrzen\u00ED hesla:
-UIRegisterForm.label.emailAddress=E-mailov\u00E1 adresa:
-UIRegisterForm.label.firstName=K\u0159estn\u00ED jm\u00E9no:
-UIRegisterForm.label.lastName=P\u0159\u00EDjmen\u00ED:
-UIRegisterForm.label.displayName=Zobrazovan\u00E9 jm\u00E9no:
-UIRegisterForm.label.password=Heslo:
-UIRegisterForm.label.username=U\u017Eivatelsk\u00E9 jm\u00E9no:
-UIRegisterForm.registerWithSuccess.message=\u00DAsp\u011B\u0161n\u011B jste registroval nov\u00FD \u00FA\u010Det!
-UIRegisterForm.title=Registrace nov\u00E9ho \u00FA\u010Dtu
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
UIRegisterEditMode.label.useCaptcha=Pou\u017eijte captchu:
UIRegisterEditMode.title=Registrace preferenc\u00ed portletu
@@ -59,6 +27,7 @@
UIRegisterForm.label.emailAddress=E-mailov\u00e1 adresa:
UIRegisterForm.label.firstName=K\u0159estn\u00ed jm\u00e9no:
UIRegisterForm.label.lastName=P\u0159\u00edjmen\u00ed:
+UIRegisterForm.label.displayName=Zobrazovan\u00e9 jm\u00e9no:
UIRegisterForm.label.password=Heslo:
UIRegisterForm.label.username=U\u017eivatelsk\u00e9 jm\u00e9no:
UIRegisterForm.registerWithSuccess.message=\u00dasp\u011b\u0161n\u011b jste registroval nov\u00fd \u00fa\u010det!
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,28 +18,6 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-UIStarToolbarPortlet.item.AccountSetting=Nastaven\u00ED \u00FA\u010Dtu
-UIStarToolbarPortlet.item.ChangeLanguage=Zm\u011Bnit jazyk
-UIStarToolbarPortlet.item.ChangeSkin=Zm\u011Bnit skin
-UIStarToolbarPortlet.item.Logout=Odhl\u00E1sit
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
UIStarToolbarPortlet.item.AccountSetting=Nastaven\u00ed \u00fa\u010dtu
UIStarToolbarPortlet.item.ChangeLanguage=Zm\u011bnit jazyk
UIStarToolbarPortlet.item.ChangeSkin=Zm\u011bnit skin
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,23 +18,4 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-javax.portlet.title=Naviga\u010Dn\u00ED portlet
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
javax.portlet.title=Naviga\u010dn\u00ed portlet
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,23 +18,4 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-javax.portlet.title=Naviga\u010Dn\u00ED portlet
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
javax.portlet.title=Naviga\u010dn\u00ed portlet
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,23 +18,4 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-javax.portlet.title=Portlet drobe\u010Dkov\u00E9 navigace
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
javax.portlet.title=Portlet drobe\u010dkov\u00e9 navigace
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -42,45 +42,3 @@
UIIFrameEditMode.label.editmode=Edit Mode
UIIFrameEditMode.label.iframeUrl=URL
UIIFrameEditMode.title=Change URL
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-UIBannerPortlet.action.changeLanguage=Zm\u011bnit jazyk
-UIBannerPortlet.action.register=Registrace
-
-#####################################################################################
-# EXCEPTION MAPPINGS #
-#####################################################################################
-UIGroovyPortlet.note.Text=Toto je Groovy portlet (Uk\u00e1zkov\u00fd portlet) v budoucnosti m\u016f\u017ee b\u00fdt implementov\u00e1n jako webov\u00e1 aplikace.
-
-UIHomePagePortlet.Label.Administrator=Administr\u00e1tor
-UIHomePagePortlet.Label.Demo=Demo
-UIHomePagePortlet.Label.GuideText=Pro v\u00edce informac\u00ed n\u00e1s pros\u00edm kontaktujte.
-UIHomePagePortlet.Label.Intro=Nov\u00e1 verze p\u0159ich\u00e1z\u00ed s revolu\u010dn\u00edm u\u017eivatelsk\u00fdm rozhran\u00edm<br/>Classic a WebOS n\u00e1vrhy plochy<br/>Funkce T\u00e1hni a Pus\u0165. Vytvo\u0159en\u00ed str\u00e1nkov\u00e9ho pr\u016fvodce<br/>A mnoho dal\u0161\u00edch...
-UIHomePagePortlet.Label.IntroText=GateIn je nov\u00e1 generace Open Source port\u00e1lu, vytvo\u0159en\u00e1 spole\u010dnostmi Red Hat a eXo Platform. Stali se partnery, aby spojily nejlep\u0161\u00ed experty a komunity kolem robustn\u00edho a intuitivn\u00edho port\u00e1lu, kter\u00fd p\u0159in\u00e1\u0161\u00ed mnoho funkc\u00ed pro u\u017eivatele a administr\u00e1tory IT syst\u00e9m\u016f.
-UIHomePagePortlet.Label.Manager=Mana\u017eer
-UIHomePagePortlet.Label.Password=Heslo:
-UIHomePagePortlet.Label.Slogan=To nejlep\u0161\u00ed z eXo a JBoss Port\u00e1lu<div>GateIn 3.1</div>
-UIHomePagePortlet.Label.Title=Zkuste GateIn 3.1 s jedn\u00edm z t\u011bchto u\u017eivatelsk\u00fdch \u00fa\u010dt\u016f:
-UIHomePagePortlet.Label.User=U\u017eivatel
-UIHomePagePortlet.Label.Username=U\u017eivatelsk\u00e9 jm\u00e9no:
-
-UIIFrameEditMode.action.Save=Save
-UIIFrameEditMode.label.editmode=Edit Mode
-UIIFrameEditMode.label.iframeUrl=URL
-UIIFrameEditMode.title=Change URL
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,38 +18,6 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-UILogoEditMode.action.Save=Ulo\u017Eit
-UILogoEditMode.label.editmode=Edita\u010Dn\u00ED m\u00F3d
-UILogoEditMode.label.logoUrl=URL
-UILogoEditMode.title=Zm\u011Bnit URL
-
-UILogoPortlet.action.Register=Registrace
-UILogoPortlet.action.changeLanguage=Zm\u011Bnit jazyk
-UILogoPortlet.action.signin=P\u0159ihl\u00E1sit
-UILogoPortlet.action.signout=Odhl\u00E1sit
-UILogoPortlet.label.Welcome=V\u00EDtejte
-#####################################################################################
-# EXCEPTION MAPPINGS #
-#####################################################################################
-UILogoPortlet.note.Text=Toto je logo
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
UILogoEditMode.action.Save=Ulo\u017eit
UILogoEditMode.label.editmode=Edita\u010dn\u00ed m\u00f3d
UILogoEditMode.label.logoUrl=URL
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,27 +18,6 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-organization.management=Spr\u00E1va u\u017Eivatel\u016F a skupin
-organization.newstaff=Nov\u00FD u\u017Eivatel
-organization.title=Organizace
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
organization.management=Spr\u00e1va u\u017eivatel\u016f a skupin
organization.newstaff=Nov\u00fd u\u017eivatel
organization.title=Organizace
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,31 +18,6 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-administration.application-registry=Registr aplikac\u00ED
-administration.community-management=Spr\u00E1va komunity
-administration.console=Webov\u00E1 konzole
-administration.i18n=Internacionalizace
-administration.newAccount=Nov\u00FD \u00FA\u010Det
-administration.pageManagement=Spr\u00E1va str\u00E1nek
-administration.title=Administrace
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
administration.application-registry=Registr aplikac\u00ed
administration.community-management=Spr\u00e1va komunity
administration.console=Webov\u00e1 konzole
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -20,25 +20,4 @@
platform.guests.link=Odkaz
platform.guests.register=Registrace
-platform.guests.sitemap=Mapa str\u00E1nek
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-platform.guests.link=Odkaz
-platform.guests.register=Registrace
platform.guests.sitemap=Mapa str\u00e1nek
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -18,31 +18,6 @@
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
#
-platform.users.dashboard=N\u00E1st\u011Bnka
-platform.users.iframe=IFrame
-platform.users.mylink=Moje odkazy
-platform.users.mylink-blog=Blog
-platform.users.mylink-facebook=Facebook
-platform.users.mylink-google=Google
-platform.users.sitemap=Mapa str\u00E1nek
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
platform.users.dashboard=N\u00e1st\u011bnka
platform.users.iframe=IFrame
platform.users.mylink=Moje odkazy
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -21,32 +21,6 @@
UIAddNewApplication.label.AddApplication=P\u0159idat aplikaci
portal.classic.groupnavigation=Navigace Skupin
-portal.classic.home=Domovsk\u00E1 str\u00E1nka
-portal.classic.portalnavigation=Navigace port\u00E1lu
-portal.classic.register=Registrace
-portal.classic.sitemap=Mapa str\u00E1nek
-portal.classic.webexplorer=Webov\u00FD pr\u016Fzkumn\u00EDk
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-UIAddNewApplication.label.AddApplication=P\u0159idat aplikaci
-
-portal.classic.groupnavigation=Navigace Skupin
portal.classic.home=Domovsk\u00e1 str\u00e1nka
portal.classic.portalnavigation=Navigace port\u00e1lu
portal.classic.register=Registrace
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -22,146 +22,6 @@
###################################################################
# EXPRESSION START WITH 'A' #
###################################################################
-word.accessPermission=P\u0159\u00EDstupov\u00E9 pr\u00E1vo
-word.action=Akce
-###################################################################
-# EXPRESSION START WITH 'B' #
-###################################################################
-word.back=Zp\u011Bt
-word.birthday=Narozeniny
-###################################################################
-# EXPRESSION START WITH 'c' #
-###################################################################
-word.cancel=Zru\u0161it
-word.category=Kategorie
-word.change=Zm\u011Bna
-word.city=M\u011Bsto
-word.close=Zav\u0159\u00EDt
-word.comment=Koment\u00E1\u0159
-word.content=Obsah
-word.country=St\u00E1t
-###################################################################
-# EXPRESSION START WITH 'd' #
-###################################################################
-word.date=Datum
-word.decorator=Dekor\u00E1tor
-word.department=Odd\u011Blen\u00ED
-word.description=Popis
-word.displayName=Zobrazovan\u00E9 jm\u00E9no
-###################################################################
-# EXPRESSION START WITH 'e' #
-###################################################################
-word.editPermission=Pr\u00E1vo na \u00FApravu
-word.email=E-mail
-word.employer=Zam\u011Bstnavatel
-###################################################################
-# EXPRESSION START WITH 'f' #
-###################################################################
-word.familyName=Rodn\u00E9 jm\u00E9no
-word.finish=Dokon\u010Dit
-word.firstName=K\u0159estn\u00ED jm\u00E9no
-word.format=Form\u00E1t
-word.gender=Pohlav\u00ED
-word.givenName=K\u0159estn\u00ED jm\u00E9no
-###################################################################
-# EXPRESSION START WITH 'g' #
-###################################################################
-word.groupId=Identifik\u00E1tor skupiny
-###################################################################
-# EXPRESSION START WITH 'h' #
-###################################################################
-word.height=V\u00FD\u0161ka
-###################################################################
-# EXPRESSION START WITH 'i' #
-###################################################################
-word.icon=Ikona
-###################################################################
-# EXPRESSION START WITH 'i' #
-###################################################################
-word.jobTitle=Pracovn\u00ED pozice
-word.label=Popisek
-word.language=Jazyk
-word.lastName=P\u0159\u00EDjmen\u00ED
-###################################################################
-# EXPRESSION START WITH 'l' #
-###################################################################
-word.locale=Lokalizace
-###################################################################
-# EXPRESSION START WITH 'm' #
-###################################################################
-word.mobile=Mobil
-###################################################################
-# EXPRESSION START WITH 'n' #
-###################################################################
-word.name=N\u00E1zev
-word.next=Dal\u0161\u00ED
-word.nickName=P\u0159ezd\u00EDvka
-###################################################################
-# EXPRESSION START WITH 'o' #
-###################################################################
-word.owner=Vlastn\u00EDk
-###################################################################
-# EXPRESSION START WITH 'p' #
-###################################################################
-word.postalCode=PS\u010C
-###################################################################
-# EXPRESSION START WITH 'r' #
-###################################################################
-word.refresh=Obnovit
-word.restore=Znovu zav\u00E9st
-###################################################################
-# EXPRESSION START WITH 's' #
-###################################################################
-word.save=Ulo\u017Eit
-word.skin=Skin
-word.stateProv=St\u00E1t/Provincie
-word.street=Ulice
-word.style=Styl
-word.subject=P\u0159edm\u011Bt \u0161
-word.summary=Shrnut\u00ED
-word.tel=Telefon
-###################################################################
-# EXPRESSION START WITH 't' #
-###################################################################
-word.template=\u0160ablona
-word.title=Popisek
-word.update=Aktualizovat
-###################################################################
-# EXPRESSION START WITH 'u' #
-###################################################################
-word.uri=URI
-word.userName=U\u017Eivatelsk\u00E9 jm\u00E9no
-###################################################################
-# EXPRESSION START WITH 'v' #
-###################################################################
-word.viewPermission=Pr\u00E1vo na prohl\u00ED\u017Een\u00ED
-word.website=Webov\u00E1 str\u00E1nka
-###################################################################
-# EXPRESSION START WITH 'w' #
-###################################################################
-word.width=\u0160\u00ED\u0159ka
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-word.abort=P\u0159eru\u0161it
-###################################################################
-# EXPRESSION START WITH 'A' #
-###################################################################
word.accessPermission=P\u0159\u00edstupov\u00e9 pr\u00e1vo
word.action=Akce
###################################################################
@@ -187,6 +47,7 @@
word.decorator=Dekor\u00e1tor
word.department=Odd\u011blen\u00ed
word.description=Popis
+word.displayName=Zobrazovan\u00e9 jm\u00e9no
###################################################################
# EXPRESSION START WITH 'e' #
###################################################################
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -23,137 +23,6 @@
#############################################################################
#class org.exoplatform.faces.core.event.CheckAdminOrOwnerRoleInterceptor
#{0}=action name
-CheckAdminOrOwnerRoleInterceptor.msg.owner-or-admin-require=K proveden\u00ED akce '{0}' je t\u0159eba se p\u0159ihl\u00E1sit a b\u00FDt v roli administr\u00E1tora
-
-#############################################################################
-# CheckOwnerInterceptor #
-#############################################################################
-#class org.exoplatform.faces.core.event.CheckOwnerInterceptor
-#{0}=action name
-CheckOwnerInterceptor.msg.owner-require=K proveden\u00ED akce '{0}' je t\u0159eba se p\u0159ihl\u00E1sit
-
-#############################################################################
-# Email Address Validator #
-#############################################################################
-#class org.exoplatform.webui.form.validator.Validator.EmailAddressValidator
-#{1}=input field name, {0} user input email address
-EmailAddressValidator.msg.invalid-email=Napsal jste "{0}" do pole {1}, E-mailov\u00E1 adresa je neplatn\u00E1
-
-#############################################################################
-# Empty String Validator #
-#############################################################################
-#class org.exoplatform.webui.form.Validator.EmptyFieldValidator
-#{0}=input field name
-EmptyStringValidator.msg.empty-input=Pole "{0}" je povinn\u00E9
-
-#############################################################################
-# ExoPermissionException #
-#############################################################################
-#class org.exoplatform.commons.exception.ExoPermissionException
-#{0}=require role, {1} action name
-ExoPermissionException.msg.message=Pro proveden\u00ED akce {1} mus\u00EDte b\u00FDt v roli {0}
-
-#############################################################################
-# Identifier String Validator #
-#############################################################################
-#class org.exoplatform.webui.form.validator.Validator.IdentifierValidator
-#{0}=input field name
-IdentifierValidator.msg.empty-input=Pole "{0}" nem\u016F\u017Ee b\u00FDt pr\u00E1zdn\u00E9
-#{0}=input field name
-IdentifierValidator.msg.invalid-char=Pouze p\u00EDsmena, \u010D\u00EDslice, poml\u010Dka a podtr\u017E\u00EDtko jsou povolen\u00E9 v poli {0}
-
-#Throw in exo.services.communication.message.impl.MessageServiceImpl.
-#{0}=account name, {1}=user name
-MessageService.account-not-found=\u00DA\u010Det {0} u\u017Eivatele {1} nebyl nalezen
-#Throw in exo.services.communication.message.impl.StandaloneProtocolPlugin.
-#{0}=to address
-MessageService.invalid-standalone-message-address=Pou\u017E\u00EDv\u00E1te samostatn\u00FD typ \u00FA\u010Dtu a adresa {0} nen\u00ED platn\u00E1. System o\u010Dek\u00E1v\u00E1 adresu v tomto form\u00E1tu: p\u0159\u00EDjemce#jm\u00E9no\u00DA\u010Dtu
-#Throw in exo.services.communication.message.impl.MailServiceImpl
-#{0}=The orginal error message thrown by java mail library
-MessageService.send-message-fail=Zpr\u00E1va nem\u016F\u017Ee b\u00FDt odesl\u00E1na. Zkontrolujte svou e-mailovou adresu. \n Chyba: {0}
-
-#############################################################################
-# Name String Validator #
-#############################################################################
-#class org.exoplatform.webui.form.validator.Validator.NameValidator
-#{0}=input field name
-NameValidator.msg.empty-input=Pole "{0}" nem\u016F\u017Ee b\u00FDt pr\u00E1zdn\u00E9
-#{0}=input field name
-NameValidator.msg.invalid-char=Pouze p\u00EDsmena, \u010D\u00EDslice, poml\u010Dka a podtr\u017E\u00EDtko jsou povolen\u00E9 v poli {0}
-
-#{0}=input field name
-NumberFormatValidator.msg.Invalid-input=Hodnota v poli {0} je neplatn\u00E1, Je t\u0159eba napsat \u010D\u00EDslo
-#############################################################################
-# Number Format Validator #
-#############################################################################
-#class org.exoplatform.webui.form.validator.Validator.NumberFormatValidator
-#{0}=input field name, {1} user input limit access
-# old:NumberFormatValidator.msg.invalid-limitAccess=You have entered "{0}" in field {1}, it is an invalid \ limit access
-NumberFormatValidator.msg.invalid-limitAccess=V poli {1} je hodnota "{0}", p\u0159\u00EDstup k tomuto poli je limitovan\u00FD
-
-#############################################################################
-# Message Service properties #
-#############################################################################
-#this exception is throw in GroupQueryHandler class
-OrganizationService.unique-group-exception=N\u00E1zev skupiny {0} ji\u017E existuje
-
-#Throw in org.exoplatform.commons.utils.PageList, {0}=request page parameter, {1}=available pages parameter
-PageList.page-out-of-range=Sna\u017E\u00EDte se otev\u0159\u00EDt str\u00E1nku {0}, ale pouze str\u00E1nky {1} jsou p\u0159\u00EDstupn\u00E9
-
-#############################################################################
-# Valid Permission Validator #
-#############################################################################
-PermissionValidator.msg.invalid-permission-input=Nespr\u00E1vn\u00E1 pr\u00E1va, form\u00E1t pro pr\u00E1va mus\u00ED b\u00FDt \u010Dlenstv\u00ED:/idSkupiny.
-PermissionValidator.msg.membership-group-not-found=Typ \u010Dlenstv\u00ED nebo n\u00E1zev skupiny nenalezeny.
-
-#############################################################################
-# Forum Service properties #
-#############################################################################
-#Throw in org.exoplatform.services.communication.forum.impl.ForumServiceImpl
-#Throw in org.exoplatform.services.indexing.Searcher
-#{0}=The orginal error message throw by lucence
-Searcher.msg.search-expression-error=V tomto vstupn\u00EDm v\u00FDrazu je chyba.<br />{0}
-
-#############################################################################
-# Valid User Validator #
-#############################################################################
-#class org.exoplatform.faces.user.validator.ValidGroupValidator
-#{0}=input field name, {1} input group id
-ValidGroupValidator.msg.empty-input=Pros\u00EDm vypl\u0148te hodnotu do pole {0}
-#{0}=input field name, {1} input group id
-ValidGroupValidator.msg.invalid-group-id=Syst\u00E9m nenalezl skupinu {0}
-
-#############################################################################
-# Valid User Validator #
-#############################################################################
-#class org.exoplatform.faces.user.validator.ValidUserValidator
-#{0}=input field name, {1} input user name
-ValidUserValidator.msg.empty-input=Pros\u00EDm vypl\u0148te hodnotu do pole {0}
-#{0}=input field name, {1} input user name
-ValidUserValidator.msg.invalid-username=Syst\u00E9m nenalezl u\u017Eivatele {0}
-# Copyright (C) 2009 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-#############################################################################
-# CheckAdminOrOwnerRoleInterceptor #
-#############################################################################
-#class org.exoplatform.faces.core.event.CheckAdminOrOwnerRoleInterceptor
-#{0}=action name
CheckAdminOrOwnerRoleInterceptor.msg.owner-or-admin-require=K proveden\u00ed akce '{0}' je t\u0159eba se p\u0159ihl\u00e1sit a b\u00fdt v roli administr\u00e1tora
#############################################################################
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties 2012-07-06 05:01:52 UTC (rev 8776)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_cs.properties 2012-07-06 10:59:53 UTC (rev 8777)
@@ -20,1087 +20,6 @@
\#{0}=input field name
-AccountTemplate.left.title=N\u00E1hled vzorov\u00E9 \u0161ablony \u00FA\u010Dtu
-AccountTemplate.title=\u0160ablony \u00FA\u010Dt\u016F
-
-AddCategory.title.UICategoryForm=P\u0159idat kategorii
-
-AdminAccount.label=Administr\u00E1torsk\u00FD \u00FA\u010Det
-
-Asia.label=Asie
-
-BasicPortal.label=Z\u00E1kladn\u00ED port\u00E1l
-
-CaptchaValidator.msg.Invalid-input=Kontroln\u00ED text nen\u00ED spr\u00E1vn\u00FD
-
-ClassicPortal.label=Klasick\u00FD port\u00E1l
-
-CommunityAccount.label=Komunitn\u00ED \u00FA\u010Det
-
-CompanyAccount.label=Podnikov\u00FD \u00FA\u010Det
-
-ContainerOptions.Category.autofitColumn=Rozvr\u017Een\u00ED p\u0159izp\u016Fsobiv\u00FDch sloupc\u016F
-ContainerOptions.Category.column=Rozvr\u017Een\u00ED sloupc\u016F
-ContainerOptions.Category.mix=Sm\u00ED\u0161en\u00E9 rozvr\u017Een\u00ED
-ContainerOptions.Category.row=Rozvr\u017Een\u00ED \u0159\u00E1dk\u016F
-ContainerOptions.Category.tabs=Rozvr\u017Een\u00ED z\u00E1lo\u017Eek
-ContainerOptions.Item.autofitOneColumns=Jeden p\u0159izp\u016Fsobiv\u00FD sloupec
-ContainerOptions.Item.autofitThreeColumns=T\u0159i p\u0159izp\u016Fsobiv\u00E9 sloupce
-ContainerOptions.Item.autofitTwoColumns=Dva p\u0159izp\u016Fsobiv\u00E9 sloupce
-ContainerOptions.Item.oneColumns=Jeden sloupec
-ContainerOptions.Item.oneRow=Jeden \u0159\u00E1dek
-ContainerOptions.Item.oneRow2Column1Row=Jeden \u0159\u00E1dek, dva sloupce, jeden \u0159\u00E1dek
-ContainerOptions.Item.oneRowTwoColumns=Jeden \u0159\u00E1dek, dva sloupce
-ContainerOptions.Item.threeColumns=T\u0159i sloupce
-ContainerOptions.Item.threeRows=T\u0159i \u0159\u00E1dky
-ContainerOptions.Item.threeTabs=T\u0159i z\u00E1lo\u017Eky
-ContainerOptions.Item.threeToolbarColumns=T\u0159i sloupce panelu n\u00E1stroj\u016F
-ContainerOptions.Item.twoColumns=Dva sloupce
-ContainerOptions.Item.twoColumnsOneRow=Dva sloupce, jeden \u0159\u00E1dek
-ContainerOptions.Item.twoRows=Dva \u0159\u00E1dky
-ContainerOptions.Item.twoTabs=Dv\u011B z\u00E1lo\u017Eky
-
-DateTimeValidator.msg.Invalid-input=Pole "{0}" neobsahuje platnou hodnotu.
-
-Default.label=V\u00FDchoz\u00ED
-
-DefaultAccount.label=V\u00FDchoz\u00ED \u00FA\u010Det
-
-DeleteUser.title.UIPopupDialog=P\u0159ejete si smazat tohoto u\u017Eivatele?
-
-Desktop.label=Rozvr\u017Een\u00ED plochy
-
-EditGroup.title.UIPageNavigationForm=P\u0159idat navigaci
-
-EditWizard.action.Save=#{word.save}
-EditWizard.label.curentSelectedNodeInfo=Vybran\u00FD uzel str\u00E1nky
-EditWizard.label.endPublicationDate=Konec publika\u010Dn\u00EDho data
-EditWizard.label.pageDisplayName=Zobrazovan\u00FD n\u00E1zev
-EditWizard.label.pageName=N\u00E1zev uzlu
-EditWizard.label.showPublicationDate=Publika\u010Dn\u00ED datum & \u010Das
-EditWizard.label.startPublicationDate=Po\u010D\u00E1tek publika\u010Dn\u00EDho data
-EditWizard.label.visible=Viditeln\u00FD
-EditWizard.title=Upravit str\u00E1nku
-
-EmailAddressValidator.msg.Invalid-input=Va\u0161e e-mailov\u00E1 adresa je neplatn\u00E1. Pros\u00EDm zadejte jinou adresu.
-
-EmptyFieldValidator.msg.empty=Informace v poli "{0}" nesm\u00ED b\u00FDt pr\u00E1zdn\u00E1.
-EmptyFieldValidator.msg.empty-input=Pole "{0}" je povinn\u00E9.
-
-EmptyIteratorValidator.msg.empty=Seznam "{0}" nesm\u00ED b\u00FDt pr\u00E1zdn\u00FD.
-
-Euro.label=Euro
-
-ExpressionValidator.msg.value-invalid=Pole "{0}" mus\u00ED odpov\u00EDdat form\u00E1tu "{1}".
-
-FactoryId.left.title=Podnikov\u00FD identifik\u00E1tor
-FactoryId.title=Podnikov\u00FD identifik\u00E1tor
-
-FirstAndSpecialCharacterNameValidator.msg=Pole "{0}" mus\u00ED za\u010D\u00EDnat p\u00EDsmenem a nesm\u00ED obsahovat speci\u00E1ln\u00ED znaky.
-
-FirstCharacterNameValidator.msg=Pole "{0}" mus\u00ED za\u010D\u00EDnat p\u00EDsmenem.
-
-GadgetContainerPopup.title.UIGadgetContainerForm=Formul\u00E1\u0159 ke kontejneru pro gadget
-
-Icon.UIDropDown.label.IconSet16x16=Sada ikon 16x16
-Icon.UIDropDown.label.IconSet24x24=Sada ikon 24x24
-Icon.UIDropDown.label.IconSet32x32=Sada ikon 32x32
-Icon.UIDropDown.title=Sada ikon 16x16
-
-IdentifierValidator.msg.Invalid-char=Pouze p\u00EDsmena, \u010D\u00EDslice, poml\u010Dka a podtr\u017E\u00EDtko jsou povoleny v poli "{0}".
-
-Language.left.title=Zvolte jazyk
-
-Locale.zh_CN=Zjednodu\u0161en\u00E1 \u010D\u00EDn\u0161tina
-Locale.zh_TW=Tradi\u010Dn\u00ED \u010D\u00EDn\u0161tina
-
-MandatoryValidatorIterator.msg.empty=Seznam "{0}" nesm\u00ED b\u00FDt pr\u00E1zdn\u00FD.
-
-NameValidator.msg.Invalid-char=Pouze p\u00EDsmena, \u010D\u00EDslice, te\u010Dka, poml\u010Dka a podtr\u017E\u00EDtko jsou povoleny v poli "{0}".
-
-NavigationNodePopupMenu.event.AddNode=P\u0159idat nov\u00FD uzel
-NavigationNodePopupMenu.event.CloneNode=Klonovat uzel
-NavigationNodePopupMenu.event.CopyNode=Kop\u00EDrovat uzel
-NavigationNodePopupMenu.event.CutNode=Vyjmout uzel
-NavigationNodePopupMenu.event.DeleteNode=Smazat uzel
-NavigationNodePopupMenu.event.EditNavigation=Upravit navigaci
-NavigationNodePopupMenu.event.EditPageNode=Upravit str\u00E1nku uzlu
-NavigationNodePopupMenu.event.EditSelectedNode=Upravit tento uzel
-NavigationNodePopupMenu.event.MoveDown=Posunout dol\u016F
-NavigationNodePopupMenu.event.MoveUp=Posunout nahoru
-NavigationNodePopupMenu.event.PasteNode=Vlo\u017Eit uzel
-NavigationNodePopupMenu.event.SaveNavigation=Ulo\u017Eit navigaci
-
-NumberFormatValidator.msg.Invalid-number=Neplatn\u00FD form\u00E1t \u010D\u00EDsla v poli "{0}".
-
-Office.label=Kancel\u00E1\u0159
-
-PopupPageSelector.title.SelectPage=Vybrat str\u00E1nku
-PopupPageSelector.title.UIPageBrowser=Naj\u00EDt a vybrat str\u00E1nku
-
-PopupPageSelector2.title.SelectPage=Vybrat str\u00E1nku
-
-PopupPermissionSelector.title.PermissionSelector=Pr\u00E1va
-PopupPermissionSelector.title.UIGroupMembershipSelector=Pr\u00E1va
-PopupPermissionSelector.title.null=null
-
-PortalTemplate.left.title=N\u00E1hled vzorov\u00E9 \u0161ablony port\u00E1lu
-PortalTemplate.title=\u0160ablony port\u00E1lu
-
-PortletMode.label.edit=Editace
-PortletMode.label.help=N\u00E1pov\u011Bda
-PortletMode.label.view=Zobrazen\u00ED
-
-PositiveNumberFormatValidator.msg.Invalid-number=Pole "{0}" mus\u00ED obsahovat kladn\u00E9 \u010D\u00EDslo.
-
-ResourceValidator.msg.Invalid-char=Pouze p\u00EDsmena, \u010D\u00EDslice, podtr\u017E\u00EDtko, poml\u010Dka a te\u010Dka jsou povoleny v poli "{0}".
-
-SitePortal.label=Site port\u00E1l
-
-Skin.left.title=Zobrazen\u00ED vybran\u00E9ho skinu
-Skin.title=Seznam skin\u016F
-
-SpecialCharacterValidator.msg.Invalid-char=Pouze p\u00EDsmena, \u010D\u00EDslice, podtr\u017E\u00EDtko, poml\u010Dka a mezera jsou povoleny v poli "{0}".
-SpecialCharacterValidator.msg.invalid-digit=Pole "{0}" mus\u00ED za\u010D\u00EDnat p\u00EDsmenem.
-
-StringLengthValidator.msg.length-invalid=D\u00E9lka textu v poli "{0}" mus\u00ED b\u00FDt mezi "{1}" a "{2}" znaky.
-
-Template.left.title=Zobrazen\u00ED vybran\u00E9ho skinu
-Template.title=Seznam skin\u016F
-
-Theme.UIItemThemeSelector.item.DefaultTheme=V\u00FDchoz\u00ED t\u00E9ma
-Theme.UIItemThemeSelector.item.MacBlack=Mac \u010Dern\u00FD
-Theme.UIItemThemeSelector.item.MacGray=Mac \u0161ed\u00FD
-Theme.UIItemThemeSelector.item.MacGreenSteel=Mac zelen\u00E1 ocel
-Theme.UIItemThemeSelector.item.MacTheme=Mac t\u00E9ma
-Theme.UIItemThemeSelector.item.RoundConerBlue=Modr\u00FD s kulat\u00FDmi rohy
-Theme.UIItemThemeSelector.item.RoundConerGreen=Zelen\u00FD s kulat\u00FDmi rohy
-Theme.UIItemThemeSelector.item.RoundConerOrange=Oran\u017Eov\u00FD s kulat\u00FDmi rohy
-Theme.UIItemThemeSelector.item.RoundConerPink=R\u016F\u017Eov\u00FD s kulat\u00FDmi rohy
-Theme.UIItemThemeSelector.item.RoundConerViolet=Fialov\u00FD s kulat\u00FDmi rohy
-Theme.UIItemThemeSelector.item.ShadowBlue=Modr\u00FD se st\u00EDnem
-Theme.UIItemThemeSelector.item.ShadowGreen=Zelen\u00FD se st\u00EDnem
-Theme.UIItemThemeSelector.item.ShadowOrange=Oran\u017Eov\u00FD se st\u00EDnem
-Theme.UIItemThemeSelector.item.ShadowPink=R\u016F\u017Eov\u00FD se st\u00EDnem
-Theme.UIItemThemeSelector.item.ShadowViolet=Fialov\u00FD se st\u00EDnem
-Theme.UIItemThemeSelector.item.SimpleBlue=Jednoduch\u00FD modr\u00FD
-Theme.UIItemThemeSelector.item.SimpleGreen=Jednoduch\u00FD zelen\u00FD
-Theme.UIItemThemeSelector.item.SimpleOrange=Jednoduch\u00FD oran\u017Eov\u00FD
-Theme.UIItemThemeSelector.item.SimplePink=Jednoduch\u00FD zelen\u00FD
-Theme.UIItemThemeSelector.item.SimpleViolet=Jednoduch\u00FD fialov\u00FD
-Theme.UIItemThemeSelector.item.VistaBlue=Vista modr\u00FD
-Theme.UIItemThemeSelector.item.VistaTheme=Vista t\u00E9ma
-
-ThemeDropDown.item.MacStyle=Mac styl
-ThemeDropDown.item.RoundConer=Styl s kulat\u00FDmi rohy
-ThemeDropDown.item.Shadow=Styl se st\u00EDnem
-ThemeDropDown.item.Simple=Jednoduch\u00FD styl
-ThemeDropDown.item.VistaStyle=Vista styl
-
-UIAccessGroup.deleteAccessGroup=P\u0159ejete si smazat tuto p\u0159\u00EDstupovou skupinu?
-
-UIAccountChangePass.action.Reset=Vynulovat
-UIAccountChangePass.action.Save=Ulo\u017Eit
-UIAccountChangePass.label.confirmnewpass=Potvzen\u00ED nov\u00E9ho hesla:
-UIAccountChangePass.label.currentpass=Aktu\u00E1ln\u00ED heslo:
-UIAccountChangePass.label.newpass=Nov\u00E9 heslo:
-UIAccountChangePass.msg.change.pass.success=Heslo bylo zm\u011Bn\u011Bno.
-UIAccountChangePass.msg.currentpassword-is-not-match=Aktu\u00E1ln\u00ED heslo nen\u00ED platn\u00E9.
-UIAccountChangePass.msg.password-is-not-match=Nov\u00E1 hesla se neshoduj\u00ED.
-
-UIAccountForm.msg.password-is-not-match=Zadan\u00E1 hesla se neshoduj\u00ED.
-
-UIAccountInputSet.msg.email-exist=Tento e-mail ji\u017E existuje, zadejte pros\u00EDm jinou adresu.
-UIAccountInputSet.msg.empty-input=U\u017Eivatelsk\u00E9 jm\u00E9no nesm\u00ED b\u00FDt pr\u00E1zdn\u00E9.
-UIAccountInputSet.msg.successful.create.user=Vytvo\u0159ili jste nov\u00FD \u00FA\u010Det.
-UIAccountInputSet.msg.successful.update.user=Tento u\u017Eivatelsk\u00FD \u00FA\u010Det byl zm\u011Bn\u011Bn.
-UIAccountInputSet.msg.user-exist=Toto u\u017Eivatelsk\u00E9 jm\u00E9no ji\u017E existuje, zadejte pros\u00EDm jin\u00E9 jm\u00E9no.
-UIAccountInputSet.msg.user-is-deleted=Tento u\u017Eivatel je nejsp\u00ED\u0161 smaz\u00E1n.
-UIAccountInputSet.msg.user-not-exist=Toto u\u017Eivatelsk\u00E9 heslo je dostupn\u00E9.
-
-UIAccountProfiles.action.Reset=Vynulovat
-UIAccountProfiles.action.Save=Ulo\u017Eit
-UIAccountProfiles.label.email=E-mail :
-UIAccountProfiles.label.firstName=K\u0159estn\u00ED jm\u00E9no:
-UIAccountProfiles.label.lastName=P\u0159\u00EDjmen\u00ED:
-UIAccountProfiles.label.userName=U\u017Eivatelsk\u00E9 jm\u00E9no:
-UIAccountProfiles.msg.NotExistingAccount=V\u00E1\u0161 \u00FA\u010Det neexistuje, mo\u017En\u00FD byl smaz\u00E1n jin\u00FDm u\u017Eivatelem!
-UIAccountProfiles.msg.update.success=Informace o \u00FA\u010Dtu byly aktualizov\u00E1ny.
-
-UIAccountSetting.action.Close=Zav\u0159\u00EDt
-UIAccountSetting.tab.label.UIAccountChangePass=Zm\u011Bnit heslo
-UIAccountSetting.tab.label.UIAccountProfiles=Profily \u00FA\u010Dt\u016F
-
-UIAddGadgetPopup.title.UIDashboardSelectContainer=Nab\u00EDdka pro n\u00E1st\u011Bnku
-
-UIAddGroupNavigation.Action.Add=P\u0159idat navigaci
-UIAddGroupNavigation.Label.NoPermission=Tento u\u017Eivatel nem\u00E1 pr\u00E1vo pro p\u0159id\u00E1n\u00ED navigace
-UIAddGroupNavigation.Label.eachGroupHasAlreadyNavigation=V\u0161echny skupiny maj\u00ED nyn\u00ED vlastn\u00ED navigaci
-UIAddGroupNavigation.header.Group=Skupiny
-
-UIAddNewApplication.label.Add=P\u0159idat a ponechat tuto aplikaci na str\u00E1nce
-UIAddNewApplication.label.AddApplication=P\u0159idat aplikaci
-UIAddNewApplication.label.AddToStartup=P\u0159idat a spustit tuto aplikaci okam\u017Eit\u011B
-UIAddNewApplication.label.Categories=Kategorie
-UIAddNewApplication.label.Close=Zav\u0159\u00EDt
-UIAddNewApplication.label.Created=Vytvo\u0159eno:
-UIAddNewApplication.label.Description=Popis:
-UIAddNewApplication.label.NoneApp=Na tomto um\u00EDst\u011Bn\u00ED nen\u00ED \u017E\u00E1dn\u00E1 aplikace. P\u0159ejd\u011Bte do Application Registry portletu pro importov\u00E1n\u00ED aplikac\u00ED.
-UIAddNewApplication.label.Select=Vybrat aplikace
-UIAddNewApplication.label.Type=Typ:
-
-UIApplication.msg.unknown-error=Nezn\u00E1m\u00E1 chyba
-
-UIBrowserPortlet.Back=Zp\u011Bt
-UIBrowserPortlet.Forward=Vp\u0159ed
-UIBrowserPortlet.Go=P\u0159ej\u00EDt
-UIBrowserPortlet.Goto=P\u0159ej\u00EDt na adresu v \u0159\u00E1dku
-UIBrowserPortlet.Refresh=Obnovit
-UIBrowserPortlet.Stop=Zastavit
-UIBrowserPortlet.Tab=Nov\u00E1 z\u00E1lo\u017Eka
-UIBrowserPortlet.Untitled=(nepojmenovan\u00FD)
-
-UICategoryForm.action.Close=Zav\u0159\u00EDt
-
-UIChangeLanguage.action.close=Zru\u0161it
-UIChangeLanguage.action.save=Pou\u017E\u00EDt
-UIChangeLanguage.title.LanguageSetting=Nastaven\u00ED jazyka rozhran\u00ED
-
-UIChangePortal.action.close=Zav\u0159\u00EDt
-UIChangePortal.action.title.SelectPortal=Zvolit port\u00E1l
-UIChangePortal.header.action=Akce
-UIChangePortal.header.creator=Tv\u016Frce
-UIChangePortal.header.factoryId=Podnikov\u00FD identifik\u00E1tor
-UIChangePortal.header.name=N\u00E1zev
-UIChangePortal.header.skin=Skin
-UIChangePortal.lable.TitleBar=Zvolit port\u00E1l
-UIChangePortal.msg.Invalid-viewPermission=Nem\u00E1te pr\u00E1vo na pou\u017E\u00EDv\u00E1n\u00ED tohoto port\u00E1lu.
-
-UIChangeSkin.Default.label=V\u00FDchoz\u00ED skin
-UIChangeSkin.Mac.label=Mac skin
-UIChangeSkin.Vista.label=Vista skin
-UIChangeSkin.action.close=#{word.cancel}
-UIChangeSkin.action.save=Pou\u017E\u00EDt
-UIChangeSkin.title.SkinSetting=Nastaven\u00ED skinu
-
-UIColumnContainer.deleteColumnContainer=P\u0159ejete si smazat tento sloupec?
-UIColumnContainer.label.insertLeft=Vlo\u017Eit vlevo
-UIColumnContainer.label.insertRight=Vlo\u017Eit vpravo
-UIColumnContainer.title.Container=Sloupec
-UIColumnContainer.title.DragControlArea=Podr\u017Ete kurzor na t\u00E9to oblasti pro p\u0159em\u00EDst\u011Bn\u00ED kontejneru na jin\u00E9 m\u00EDsto
-UIColumnContainer.tooltip.closeContainer=Smazat sloupec
-UIColumnContainer.tooltip.editContainer=Upravit sloupec
-UIColumnContainer.tooltip.insertColumn=Vlo\u017Eit nov\u00FD sloupec
-UIColumnContainer.tooltip.insertLeft=Vlo\u017Eit sloupec vlevo
-UIColumnContainer.tooltip.insertRight=Vlo\u017Eit sloupec vpravo
-
-UIConfirmation.Close=Zav\u0159\u00EDt
-UIConfirmation.title.exoMessages=Potvrzen\u00ED zpr\u00E1vy
-
-UIContainer.deleteContainer=P\u0159ejete si smazat tento kontejner?
-UIContainer.title.Container=Kontejner
-UIContainer.title.DragControlArea=Podr\u017Ete kurzor na t\u00E9to oblasti pro uchycen\u00ED tohoto kontejneru
-UIContainer.tooltip.closeContainer=Smazat kontejner
-UIContainer.tooltip.drag=Uchyceni kontejneru je zde
-UIContainer.tooltip.editContainer=Upravit kontejner
-
-UIContainerForm.action.Close=Zru\u0161it
-UIContainerForm.action.Save=#{word.save}
-UIContainerForm.label.ContainerSetting=Nastaven\u00ED kontejneru
-UIContainerForm.label.decorator=#{word.decorator}
-UIContainerForm.label.height=#{word.height}
-UIContainerForm.label.id=Identifik\u00E1tor kontejneru
-UIContainerForm.label.style=#{word.style}
-UIContainerForm.label.template=#{word.template}
-UIContainerForm.label.title=N\u00E1zev kontejneru
-UIContainerForm.label.width=#{word.width}
-UIContainerForm.msg.InvalidWidthHeight=Do pole "{0}" mus\u00EDte zadat hodnotu v pixelech nebo procentech.
-UIContainerForm.tab.label.ContainerSetting=Nastaven\u00ED kontejneru
-UIContainerForm.tab.label.Icon=Ikona
-UIContainerForm.tab.label.Template=\u0160ablona
-UIContainerForm.tab.label.UIContainerPermission=P\u0159\u00EDstupov\u00E1 pr\u00E1va
-UIContainerForm.title=Upravit kontejner
-
-UIContentNavigation.msg.EditNode=Mus\u00EDte vybrat uzel
-
-UIControWSPopupWindow.title.UIApplicationTree=Strom aplikac\u00ED
-
-UIDashboard.msg.ApplicationNotExisted=Tato aplikace neexistuje nebo mohla b\u00FDt smaz\u00E1na.
-UIDashboard.msg.StaleData=Na Va\u0161\u00ED n\u00E1st\u011Bnce jsou n\u011Bjak\u00E1 neaktu\u00E1ln\u00ED data, nyn\u00ED bude obnovena
-UIDashboard.msg.addGadget=Sem p\u0159et\u00E1hn\u011Bte gadgety.
-UIDashboard.msg.notUrl=Zadan\u00E1 URL je neplatn\u00E1. Zadejte pros\u00EDm platnou URL pro XML gadgetu nebo RSS \u010Dte\u010Dky.
-UIDashboard.msg.required=Text v poli je povinn\u00FD.
-
-UIDashboardContainer.label.Cache=\u017D\u00E1dn\u00E1 mezipam\u011B\u0165
-UIDashboardContainer.label.CancelTitle=Zru\u0161it
-UIDashboardContainer.label.Debug=Debug
-UIDashboardContainer.label.SaveTitle=Ulo\u017Eit
-UIDashboardContainer.label.openWorkspace=P\u0159idat gadgety
-
-UIDashboardEditForm.action.Save=Ulo\u017Eit
-UIDashboardEditForm.label.isPrivate=Je soukrom\u00E9:
-UIDashboardEditForm.label.owner=Vlastn\u00EDk:
-UIDashboardEditForm.label.totalColumns=Po\u010Det sloupc\u016F:
-
-UIDashboardSelectContainer.action.addGadget=P\u0159idat gadget
-
-UIDescription.content.pageEditWizard=Popis a n\u00E1vod pro pr\u016Fvodce editace str\u00E1nky n\u00E1sleduje zde.
-UIDescription.content.pageEditWizard1=<strong>Krok 1: Zm\u011B\u0148te zobrazovan\u00FD n\u00E1zev, viditelnost a publika\u010Dn\u00ED obdob\u00ED str\u00E1nky.</strong><br/> Postupujte n\u00E1sledovn\u011B:<br/>- Vyberte navigaci z rozbalovac\u00EDho seznamu<br/>- Vyberte str\u00E1nku, kterou chcete upravit<br/>- Upravte <em>Zobrazovan\u00FD n\u00E1zev</em>, jestli je to nutn\u00E9<br/>- Za\u0161krtn\u011Bte nebo od\u0161krtn\u011Bte pol\u00ED\u010Dko <em>Viditeln\u00FD</em><br/>- Za\u0161krtn\u011Bte nebo od\u0161krtn\u011Bte pol\u00ED\u010Dko <em>Publika\u010Dn\u00ED datum & \u010Das</em> <br/> Jestli\u017Ee je pol\u00ED\u010Dko <em>Publika\u010Dn\u00ED datum & \u010Das</em> za\u0161krtnut\u00E9:<br/> - Upravte <em>Po\u010D\u00E1tek publika\u010Dn\u00EDho data</em><br/> - Upravte <em>Konec publika\u010Dn\u00EDho data</em><br/>- Klikn\u011Bte na tla\u010D\u00EDtko "Dal\u0161\u00ED" pro pokra\u010Dov\u00E1n\u00ED na !
dal\u0161\u00ED krok
-UIDescription.content.pageEditWizard2=<strong>Krok 2: \u00DAprava rozvr\u017Een\u00ED str\u00E1nky.</strong><br/> Postupujte n\u00E1sledovn\u011B:<br/>- Vyberte nov\u00FD typ rozvr\u017Een\u00ED str\u00E1nky nebo ponechte aktu\u00E1ln\u00ED<br/>- Klikn\u011Bte na tla\u010D\u00EDtko "Dal\u0161\u00ED" pro pokra\u010Dov\u00E1n\u00ED na dal\u0161\u00ED krok nebo "Zp\u011Bt" pro n\u00E1vrat na p\u0159echoz\u00ED krok
-UIDescription.content.pageEditWizard3=<strong>Krok 2: \u00DAprava rozvr\u017Een\u00ED str\u00E1nky.</strong><br/> Postupujte n\u00E1sledovn\u011B:<br/>- Vyberte nov\u00FD typ rozvr\u017Een\u00ED str\u00E1nky nebo ponechte aktu\u00E1ln\u00ED<br/>- Klikn\u011Bte na tla\u010D\u00EDtko "Dal\u0161\u00ED" pro pokra\u010Dov\u00E1n\u00ED na dal\u0161\u00ED krok nebo "Zp\u011Bt" pro n\u00E1vrat na p\u0159echoz\u00ED krok
-UIDescription.content.pageManagement=<strong>Spr\u00E1va str\u00E1nek:</strong><br/>Toto je seznam v\u0161ech str\u00E1nek.<br/>Na z\u00E1klad\u011B odpov\u00EDdaj\u00EDc\u00EDch pr\u00E1v m\u016F\u017Eeme str\u00E1nky zobrazit, upravit nebo smazat.<br/><br/>Str\u00E1nky m\u016F\u017Eete vyhled\u00E1vat podle <em>Typu vlastn\u00EDka</em> (port\u00E1l/skupina/u\u017Eivatel), podle <em>Identifik\u00E1toru vlastn\u00EDka</em>, nebo podle <em>N\u00E1zvu str\u00E1nky.</em><br/><br/>Pro vytvo\u0159en\u00ED nov\u00E9 str\u00E1nky, klikn\u011Bte na tla\u010D\u00EDtko "P\u0159idat novou str\u00E1nku" a vypl\u0148te po\u017Eadovan\u00E1 pole.
-UIDescription.content.pageWizard=mus\u00ED se smazat
-UIDescription.content.pageWizard2=<strong>Krok 1: Nastaven\u00ED informac\u00ED o str\u00E1nce obsahuje cestu ke str\u00E1nce, n\u00E1zev uzlu a zobrazovan\u00FD n\u00E1zev.</strong><br/> Postupujte n\u00E1sledovn\u011B: <br/>- Vyberte navigaci z rozbalovac\u00EDho seznamu<br/>- Vyberte uzel str\u00E1nky, pod kter\u00FDm chcete vytvo\u0159it podstr\u00E1nku<br/>- Zadejte <em>N\u00E1zev str\u00E1nky</em><br/>- Zadejte <em>Zobrazovan\u00FD n\u00E1zev</em> (voliteln\u00E9)<br/>- Za\u0161krtn\u011Bte nebo od\u0161krtn\u011Bte pol\u00ED\u010Dko <em>Viditeln\u00FD</em> (voliteln\u00E9)<br/>- Za\u0161krtn\u011Bte nebo od\u0161krtn\u011Bte pol\u00ED\u010Dko <em>Publika\u010Dn\u00ED datum &\u00A0\u010Das</em> (voliteln\u00E9)<br/> Jestli\u017Ee je pol\u00ED\u010Dko <em>Publika\u010Dn\u00ED datum &\u00A0\u010Das</em> za\u0161krtnut\u00E9:<br/> - Zadejte <em>Po\u010D\u00E1tek publika\u010Dn\u00EDho data</em><br/> - Zadejte <em>Konec publika\u010Dn\u00E!
Dho data</em><br/>- Klikn\u011Bte na tla\u010D\u00EDtko "Dal\u0161\u00ED" pro pokra\u010Dov\u00E1n\u00ED na dal\u0161\u00ED krok
-UIDescription.content.pageWizard3=<strong>Krok 2: Nastaven\u00ED rozvr\u017Een\u00ED str\u00E1nky.</strong><br/> Postupujte n\u00E1sledovn\u011B:<br/>- Vyberte jeden typ rozvr\u017Een\u00ED ze seznamu<br/>- Klikn\u011Bte na tla\u010D\u00EDtko "Dal\u0161\u00ED" pro posun na dal\u0161\u00ED krok nebo tla\u010D\u00EDtko "Zp\u011Bt" pro n\u00E1vrat na p\u0159edchoz\u00ED krok
-UIDescription.content.portalManagement=<strong>Spr\u00E1va port\u00E1l\u016F: </strong><br/>Toto je seznam v\u0161ech port\u00E1l\u016F. Pro vytvo\u0159en\u00ED nov\u00E9ho port\u00E1lu klikn\u011Bte na tla\u010D\u00EDtko "P\u0159idat nov\u00FD port\u00E1l" a vypl\u0148te po\u017Eadovan\u00E1 pole.<br/>M\u016F\u017Eete vytv\u00E1\u0159et a mazat port\u00E1lu z tohoto seznamu jen v p\u0159\u00EDpad\u011B, \u017Ee m\u00E1te odpov\u00EDdaj\u00EDc\u00ED pr\u00E1va.
-UIDescription.title.pageEditWizard=Pr\u016Fvodce editace str\u00E1nky
-UIDescription.title.pageManagement=Prohl\u00ED\u017Een\u00ED str\u00E1nek
-UIDescription.title.pageWizard=Pr\u016Fvodce vytvo\u0159en\u00EDm str\u00E1nky
-UIDescription.title.portalManagement=Prohl\u00ED\u017Een\u00ED port\u00E1l\u016F
-
-UIDropDownConfigs.item.column=Ve sloupc\u00EDch
-UIDropDownConfigs.item.mix=Sm\u00ED\u0161en\u00E9
-UIDropDownConfigs.item.row=V \u0159\u00E1dc\u00EDch
-UIDropDownConfigs.item.tabs=V z\u00E1lo\u017Ek\u00E1ch
-
-UIDropDownControl.title.Empty=Rozbalovac\u00ED nab\u00EDdka
-
-UIDropDownPageTemp.item.columnPageConfigs=Konfigurace sloupc\u016F str\u00E1nky
-UIDropDownPageTemp.item.mixPageConfigs=Sm\u00ED\u0161en\u00E1 konfigurace str\u00E1nky
-UIDropDownPageTemp.item.normalPageConfigs=Konfigurace str\u00E1nky
-UIDropDownPageTemp.item.rowPageConfigs=Konfigurace \u0159\u00E1dk\u016F str\u00E1nky
-UIDropDownPageTemp.item.tabsPageConfigs=Konfigurace z\u00E1lo\u017Eek str\u00E1nky
-
-UIEditCurentPage.label.abort=P\u0159eru\u0161it
-UIEditCurentPage.label.back=Zp\u011Bt
-UIEditCurentPage.label.done=Ulo\u017Eit
-UIEditCurentPage.label.next=Dal\u0161\u00ED
-UIEditCurentPage.label.pageCreateWizard=Edit Curent Page Wizard
-UIEditCurentPage.label.step1.title=V\u00EDtejte v editaci aktu\u00E1ln\u00ED str\u00E1nky
-UIEditCurentPage.label.step2.title=Vybrat uzel str\u00E1nky a vytvo\u0159it n\u00E1zev str\u00E1nky
-UIEditCurentPage.label.step3.title=Vybrat \u0161ablonu rozvr\u017Een\u00ED str\u00E1nky
-UIEditCurentPage.label.step4.title=Drag and Drop
-UIEditCurentPage.label.wizardSteps=Kroky
-
-UIEditInlineWorkspace.confirm.close=Byly provedeny zm\u011Bny. Opravdu si p\u0159ejete zav\u0159\u00EDt bez ulo\u017Een\u00ED?
-UIEditInlineWorkspace.confirm.no=Ne
-UIEditInlineWorkspace.confirm.yes=Ano
-
-UIForgetPassword.action.Back=Zp\u011Bt
-UIForgetPassword.action.Send=Poslat
-UIForgetPassword.label.email=E-mailov\u00E1 adresa:
-UIForgetPassword.label.username=U\u017Eivatelsk\u00E9 jm\u00E9no:
-UIForgetPassword.mail.footer=D\u011Bkujeme.
-UIForgetPassword.mail.from=no-reply(a)gatein.org
-UIForgetPassword.mail.header=D\u011Bkujeme V\u00E1m za kontaktov\u00E1n\u00ED na\u0161\u00ED podpory. Odeslal jste po\u017Eadavek na Va\u0161e u\u017Eivatelsk\u00E9 jm\u00E9no a heslo.
-UIForgetPassword.mail.link=M\u016F\u017Eete si za\u017E\u00E1dat o nov\u00E9 heslo k Va\u0161emu u\u017Eivatelsk\u00E9mu jm\u00E9nu, klikn\u011Bte na tento odkaz:
-UIForgetPassword.mail.password=Heslo k Va\u0161emu \u00FA\u010Dtu je:
-UIForgetPassword.mail.subject=P\u0159ipomenut\u00ED u\u017Eivatelsk\u00E9ho jm\u00E9na a hesla
-UIForgetPassword.mail.user=U\u017Eivatelsk\u00E9 jm\u00E9no k Va\u0161emu \u00FA\u010Dtu je:
-UIForgetPassword.msg.email-not-exist=Tento e-mail neexistuje.
-UIForgetPassword.msg.expration=V\u00E1\u0161 odkaz vypr\u0161el, mus\u00EDte opakovat aktiva\u010Dn\u00ED proces.
-UIForgetPassword.msg.send-mail-fail=Nelze odeslat e-mail.
-UIForgetPassword.msg.send-mail-success=E-mail byl zasl\u00E1n na Va\u0161\u00ED e-mailovou adresu.
-UIForgetPassword.msg.user-delete=Va\u0161e u\u017Eivatelsk\u00E9 jm\u00E9no bylo vymaz\u00E1no administr\u00E1torem.
-UIForgetPassword.msg.user-not-exist=Toto u\u017Eivatelsk\u00E9 jm\u00E9no neexistuje.
-UIForgetPassword.title=Zapomenut\u00E9 u\u017Eivatelsk\u00E9 jm\u00E9no/heslo
-
-UIForgetPasswordWizard.action.Back=Zp\u011Bt
-UIForgetPasswordWizard.action.Next=Dal\u0161\u00ED
-UIForgetPasswordWizard.info=Omlouv\u00E1me se za nep\u0159\u00EDjemnosti spojen\u00E9 s t\u00EDm, \u017Ee nejste schopni p\u0159istupovat k t\u00E9to str\u00E1nce.<br />Chcete-li tento probl\u00E9m vy\u0159e\u0161it co nejrychleji, postupujte podle n\u00E1sleduj\u00EDc\u00EDch krok\u016F.<br /><br />1. Obnovte sv\u00E9 heslo: zadejte <strong>va\u0161e u\u017Eivatelsk\u00E9 jm\u00E9no</strong> a klikn\u011Bte na tla\u010D\u00EDtko Odeslat.<br/>2. Obnovte sv\u00E9 u\u017Eivatelsk\u00E9 jm\u00E9no: zadejte <strong>va\u0161i e-mailovou adresu</strong> a klikn\u011Bte na tla\u010D\u00EDtko Odeslat.<br/>
-UIForgetPasswordWizard.label.forgotpassword=Zapomenut\u00E9 heslo
-UIForgetPasswordWizard.label.forgotusername=Zapomenut\u00E9 u\u017Eivatelsk\u00E9 jm\u00E9no
-UIForgetPasswordWizard.title=Pro\u010D se nem\u016F\u017Eete p\u0159ihl\u00E1sit?
-
-UIFormAvailablePortlet.label.UIFormTableInputSet=Portlet
-
-UIFormInputIconSelector.label.Icon16x16=Ikony 16x16
-UIFormInputIconSelector.label.Icon24x24=Ikony 24x24
-UIFormInputIconSelector.label.Icon32x32=Ikony 32x32
-UIFormInputIconSelector.label.Icon48x48=Ikony 48x48
-UIFormInputIconSelector.label.Icon64x64=Ikony 64x64
-UIFormInputIconSelector.label.Icon72x72=Ikony 72x72
-UIFormInputIconSelector.label.iconCatergory=Kategorie ikony
-UIFormInputIconSelector.label.iconName=N\u00E1zev vybran\u00E9 ikony
-UIFormInputIconSelector.label.iconPreview=N\u00E1hled a v\u00FDb\u011Br ikony
-UIFormInputIconSelector.label.misc=R\u016Fzn\u00E9 ikony
-UIFormInputIconSelector.label.miscIcons=R\u016Fzn\u00E9 ikony
-UIFormInputIconSelector.label.navigation=Naviga\u010Dn\u00ED ikony
-UIFormInputIconSelector.label.officeIcons=Kancel\u00E1\u0159sk\u00E9 ikony
-UIFormInputIconSelector.label.offices=Kancel\u00E1\u0159sk\u00E9 ikony
-UIFormInputIconSelector.label.selectIconSet=Vybrat sadu ikon
-UIFormInputIconSelector.label.tool=N\u00E1strojov\u00E9 ikony
-UIFormInputIconSelector.label.user=U\u017Eivatelsk\u00E9 ikony
-UIFormInputIconSelector.option.IconSet16x16=16x16
-UIFormInputIconSelector.option.IconSet24x24=24x24
-UIFormInputIconSelector.option.IconSet32x32=32x32
-
-UIFormInputItemSelector.selectType.page=Vybrat \u0161ablonu str\u00E1nky
-UIFormInputItemSelector.selectType.portal=Vybrat \u0161ablonu port\u00E1lu
-
-UIFormInputSet.tooltip.selectgroup=Vybrat jinou skupinu
-
-UIFormMultiValueInputSet.label.add=P\u0159idat polo\u017Eku
-UIFormMultiValueInputSet.label.remove=Odstranit polo\u017Eku
-
-UIFormUploadInput.label.Cancel=Zru\u0161it
-UIFormUploadInput.label.Uploaded=Nahr\u00E1no
-UIFormUploadInput.label.remove=Odstranit nahran\u00E9
-UIFormUploadInput.msg.limit=Soubor mus\u00ED b\u00FDt men\u0161\u00ED ne\u017E {0} MB.
-
-UIGadget.tooltip.Maximize=Maximalizovat
-UIGadget.tooltip.Minimize=Minimalizovat
-UIGadget.tooltip.Unmaximize=Obnovit
-UIGadget.tooltip.Unminimize=Obnovit
-UIGadget.tooltip.deleteGadget=Smazat gadget
-UIGadget.tooltip.editGadget=Upravit gadget
-
-UIGadgetContainerForm.action.Close=Zru\u0161it
-UIGadgetContainerForm.action.Save=#{word.save}
-UIGadgetContainerForm.label.description=Popis:
-UIGadgetContainerForm.label.name=Popisek:
-UIGadgetContainerForm.msg.exist=Tento identifik\u00E1tor kontejneru ji\u017E existuje. Vlo\u017Ete pros\u00EDm jin\u00FD.
-
-UIGadgetContainerManagement.action.close=Zru\u0161it
-UIGadgetContainerManagement.action.save=#{word.save}
-UIGadgetContainerManagement.confirm.DeleteContainer=P\u0159ejete si smazat tento kontejner?
-UIGadgetContainerManagement.confirm.DeleteGadget=P\u0159ejete si smazat tento gadget?
-UIGadgetContainerManagement.label.description=Popis kontejneru:
-UIGadgetContainerManagement.label.label=Popisek kontejneru:
-UIGadgetContainerManagement.msg.emptyList=V t\u00E9to kategorii nen\u00ED \u017E\u00E1dn\u00FD kontejner.
-UIGadgetContainerManagement.msg.noSelected=\u017D\u00E1dn\u00FD kontejner nen\u00ED vybr\u00E1m
-UIGadgetContainerManagement.title.containers=Kontejnery
-UIGadgetContainerManagement.title.manager=Spr\u00E1va kontejner\u016F pro gadgety
-UIGadgetContainerManagement.title.selectedContainer=Informace o vybran\u00E9m kontejneru pro gadget:
-UIGadgetContainerManagement.tooltip.addnew=P\u0159idat nov\u00FD kontejner pro gadget
-UIGadgetContainerManagement.tooltip.edit=Upravit vybran\u00FD kontejner pro gadget
-UIGadgetContainerManagement.tooltip.remove=Odstranit vybran\u00FD kontejner pro gradget
-
-UIGrid.msg.empty=Pr\u00E1zdn\u00E9 \u00FAdaje
-
-UIGroupManagement.msg.Delete=Nem\u016F\u017Eete smazat tuto skupinu, proto\u017Ee je pr\u00E1v\u011B pou\u017E\u00EDv\u00E1na jin\u00FDm programem.
-UIGroupManagement.msg.DeleteMandatory=Nem\u016F\u017Eete smazat tuto skupinu, proto\u017Ee je (nebo jej\u00ED potomci) povinn\u00E1.
-UIGroupManagement.msg.Edit=Mus\u00EDte vybrat skupinu.
-
-UIGroupMembershipForm.msg.Invalid-char=Pole "{0}" mus\u00ED obsahovat jen p\u00EDsmena, \u010D\u00EDslice, \u010D\u00E1rku a pomlu\u010Dku. Prvn\u00ED a posledn\u00ED znak mus\u00ED b\u00FDt p\u00EDsmeno.
-UIGroupMembershipForm.msg.duplicate-user=N\u011Bkte\u0159\u00ED u\u017Eivatel\u00E9 jsou duplicitn\u00ED. Pros\u00EDm zkontrolujte!
-UIGroupMembershipForm.msg.group-not-select=Zvolte pros\u00EDm skupinu.
-UIGroupMembershipForm.msg.membership-exist=U\u017Eivatel "{0}" ji\u017E m\u00E1 stejn\u00E9 \u010Dlenstv\u00ED ve skupin\u011B "{1}", zvolte pros\u00EDm jin\u00FD typ \u010Dlenstv\u00ED.
-UIGroupMembershipForm.msg.user-not-empty=U\u017Eivatelsk\u00E9 jm\u00E9no nesm\u00ED b\u00FDt pr\u00E1zdn\u00E9.
-UIGroupMembershipForm.msg.user-not-exist=U\u017Eivatel "{0}" neexistuje.
-
-UIGroupMembershipSelector.label.selectGroup=Proj\u00EDt a vybrat skupinu
-UIGroupMembershipSelector.label.selectMembership=Vybrat \u010Dlenstv\u00ED
-UIGroupMembershipSelector.label.selectPermission=Vybrat pr\u00E1vo
-UIGroupMembershipSelector.msg.selectGroup=Nejd\u0159\u00EDve mus\u00EDte vybrat skupinu.
-UIGroupMembershipSelector.title=V\u00FDb\u011Br \u010Dlenstv\u00ED ve skupin\u011B
-UIGroupMembershipSelector.title.ListPermissionSelector=V\u00FDb\u011Br skupiny a \u010Dlenstv\u00ED
-UIGroupMembershipSelector.tooltip.selectMembership=Klikn\u011Bte zde pro v\u00FDb\u011Br \u010Dlenstv\u00ED
-
-UIGroupNavigationManagement.Action.Add=P\u0159idat navigaci
-UIGroupNavigationManagement.Delete.Confirm=P\u0159ejete si smazat tuto navigaci?
-UIGroupNavigationManagement.Label.DeleteNavigation=Smazat navigaci
-UIGroupNavigationManagement.Label.Description=Popis
-UIGroupNavigationManagement.Label.EditNavigation=Upravit navigaci
-UIGroupNavigationManagement.Label.EditProperties=Upravit vlastnosti
-UIGroupNavigationManagement.msg.Invalid-deletePermission=U\u017Eivatel nem\u00E1 pr\u00E1vo pro smaz\u00E1n\u00ED t\u00E9to navigace.
-UIGroupNavigationManagement.msg.Invalid-editPermission=U\u017Eivatel nem\u00E1 pr\u00E1vo pro editaci t\u00E9to navigace
-UIGroupNavigationManagement.msg.navigation-not-exist=Navigace neexistuje nebo byla smaz\u00E1na
-
-UIGroupSelector.action.done=Hotovo
-UIGroupSelector.lable.description=Popis:
-UIGroupSelector.lable.groupId=Identifik\u00E1tor skupiny:
-UIGroupSelector.lable.name=N\u00E1zev:
-UIGroupSelector.title.UIGroupMembershipSelector=V\u00FDb\u011Br \u010Dlenstv\u00ED
-UIGroupSelector.title.addGroupButton=Vybrat tuto skupinu
-UIGroupSelector.title.selectChildGroup=Vybrat podskupinu
-UIGroupSelector.title.selectGroup=Proj\u00EDt a vybrat skupinu
-UIGroupSelector.title.selectGroupInfo=Informace o vybran\u00E9 skupin\u011B
-UIGroupSelector.title.selectGroupMember=Vybrat skupinu
-
-UIItemSelector.lable.ItemDetailTitle=N\u00E1hled vzorov\u00FDch \u0161ablon rozvr\u017Een\u00ED str\u00E1nky
-
-UIListPermissionSelector.action.addPermission=P\u0159idat pr\u00E1vo
-UIListPermissionSelector.action.title.Delete=Smazat
-UIListPermissionSelector.header.action=Akce
-UIListPermissionSelector.header.groupId=Identifik\u00E1tor skupiny
-UIListPermissionSelector.header.membership=Typ \u010Dlenstv\u00ED
-UIListPermissionSelector.label.publicMode=Nastavit jako ve\u0159ejn\u00FD (v\u0161ichni mohou p\u0159istupovat):
-
-UIListPermissionSelectorPopup.title.ListPermissionSelector=Vybrat pr\u00E1vo
-
-UILogged.action.Youhave=M\u00E1te:
-UILogged.action.logout=Odhl\u00E1sit
-UILogged.action.signout=Odhl\u00E1sit
-UILogged.label.Abort=P\u0159eru\u0161it
-UILogged.label.DownloadNow=St\u00E1hnout nyn\u00ED
-UILogged.label.Finish=Dokon\u010Dit
-UILogged.label.RollBack=Vr\u00E1tit zp\u011Bt
-UILogged.label.Save=Ulo\u017Eit
-UILogged.label.Workableon=Tak\u00E9 mo\u017En\u00E9
-UILogged.label.Workbeston=Nejl\u00E9pe funguje na
-UILogged.note.ItemContainer=Tato komponenta je ve v\u00FDvoji.
-UILogged.note.loggedUser=V\u00EDtejte
-UILogged.title.BrowsersSupport=Podpora prohl\u00ED\u017Ee\u010D\u016F
-UILogged.title.widgetCategory=Kategorie gadget\u016F
-UILogged.title.widgetItem=Gadgety
-UILogged.title.widgetNews=GateIn gadgety
-
-UILoginForm.label.Copyright=Copyright © 2010. V\u0161echna pr\u00E1va vyhrazena, Red Hat, Inc a eXo Platform SAS
-UILoginForm.label.Discard=Zru\u0161it
-UILoginForm.label.ForAccount=Registrovat nov\u00FD \u00FA\u010Det nyn\u00ED
-UILoginForm.label.NotMember=Nejste \u010Dlenem?
-UILoginForm.label.RememberOnComputer=Zapamatovat moje p\u0159ihl\u00E1\u0161en\u00ED
-UILoginForm.label.Signin=P\u0159ihl\u00E1sit
-UILoginForm.label.SigninFail=P\u0159ihl\u00E1\u0161en\u00ED se nezda\u0159ilo. \u0160patn\u00E9 u\u017Eivatelsk\u00E9 jm\u00E9no nebo heslo.
-UILoginForm.label.Signup=Registrace
-UILoginForm.label.UserName=U\u017Eivatelsk\u00E9 jm\u00E9no
-UILoginForm.label.forgot=Zapomn\u011Bl jste u\u017Eivatelsk\u00E9 jm\u00E9no/heslo?
-UILoginForm.label.login=P\u0159ihl\u00E1\u0161en\u00ED
-UILoginForm.label.password=Heslo
-UILoginForm.label.user=U\u017Eivatel
-UILoginForm.label.welcome=V\u00EDtejte
-UILoginForm.msg.Invalid-account=U\u017Eivatelsk\u00E9 jm\u00E9no a/nebo heslo jsou neplatn\u00E9 nebo pr\u00E1zdn\u00E9. Zkuste to pros\u00EDm znovu.
-
-UINavigationManagement.action.Save=Ulo\u017Eit
-UINavigationManagement.action.addNode=P\u0159idat uzel
-UINavigationManagement.msg.NavigationNotExistAnymore=Navigace byla nejsp\u00ED\u0161 smaz\u00E1na.
-
-UINavigationNodeSelector.msg.systemnode-delete=Nelze smazat syst\u00E9mov\u00FD uzel
-UINavigationNodeSelector.msg.systemnode-move=Nelze vyjmout syst\u00E9mov\u00FD uzel
-
-UINavigationNodeSelectorPopupMenu.event.AddNode=P\u0159idat nov\u00FD uzel
-UINavigationNodeSelectorPopupMenu.event.PasteNode=Vlo\u017Eit uzel
-
-UIOwnerIdSelector.title.OwnerIdSelector=V\u00FDb\u011Br identifik\u00E1toru vlastn\u00EDka
-
-UIPage.label.pageContent=Popis str\u00E1nky
-UIPage.msg.EditPermission.null=Nem\u00E1te pr\u00E1vo pro editaci t\u00E9to str\u00E1nky.
-
-UIPageBody.label.description=T\u011Blo str\u00E1nky port\u00E1lu
-UIPageBody.msg.pageNotFoundLine1=Str\u00E1nka nebyla nalezena.
-UIPageBody.msg.pageNotFoundLine2=Nem\u00E1te pr\u00E1vo pro zobrazen\u00ED t\u00E9to str\u00E1nky.
-UIPageBody.msg.pageNotFoundLine3=Str\u00E1nka nem\u016F\u017Ee b\u00FDt smaz\u00E1na.
-UIPageBody.msg.pageNotFoundLine4=Tento uzel nem\u00E1 \u017E\u00E1dn\u00E9 str\u00E1nky.
-
-UIPageBrowse.deletePage=P\u0159ejete ji smazat tuto str\u00E1nku?
-
-UIPageBrowser.action.addNewPage=P\u0159idat novou str\u00E1nku
-UIPageBrowser.action.title.Delete=Smazat str\u00E1nku
-UIPageBrowser.action.title.EditInfo=Upravit str\u00E1nku
-UIPageBrowser.action.title.Preview=N\u00E1hled str\u00E1nky
-UIPageBrowser.action.title.SelectPage=Vybrat str\u00E1nku
-UIPageBrowser.label.option.owner=#{word.owner}
-UIPageBrowser.msg.Invalid-Preview=Toto je str\u00E1nka plochy. Nem\u016F\u017Eete zobrazit n\u00E1hledy str\u00E1nek tohoto typu.
-UIPageBrowser.msg.Invalid-deletePermission=Nem\u00E1te pr\u00E1ve ke smaz\u00E1n\u00ED str\u00E1nky {0}.
-UIPageBrowser.msg.Invalid-editPermission=Nem\u00E1te pr\u00E1vo editace str\u00E1nky {0}.
-UIPageBrowser.msg.Invalid-viewPermission=Nem\u00E1te pr\u00E1vo p\u0159\u00EDstupu ke str\u00E1nce {0}.
-UIPageBrowser.msg.InvalidQueryException=Neplatn\u00FD doraz.
-UIPageBrowser.msg.NoPermission=Nem\u00E1te pr\u00E1ve pro p\u0159\u00EDstup k t\u00E9to str\u00E1nce.
-UIPageBrowser.msg.NotViewPage=Nem\u00E1te pr\u00E1vo k zobrazen\u00ED t\u00E9to str\u00E1nky.
-UIPageBrowser.msg.PageNotExist=Str\u00E1nka neexistuje.
-UIPageBrowser.msg.UserNotPermission=Nem\u00E1te pr\u00E1vo pro p\u0159\u00EDstup ke str\u00E1nce uzlu.
-UIPageBrowser.msg.delete.NotDelete=Nem\u00E1te pr\u00E1vo ke smaz\u00E1n\u00ED t\u00E9to str\u00E1nky.
-UIPageBrowser.msg.edit.NotEditPage=Nem\u00E1te pr\u00E1vo k editaci t\u00E9to str\u00E1nky.
-UIPageBrowser.selectItem.name=N\u00E1zev
-UIPageBrowser.selectItem.ownerId=Identifik\u00E1tor vlastn\u00EDka
-UIPageBrowser.selectItem.ownerType=Typ vlastn\u00EDka
-
-UIPageCreationWizard.label.abort=#{word.abort}
-UIPageCreationWizard.label.back=#{word.back}
-UIPageCreationWizard.label.done=#{word.save}
-UIPageCreationWizard.label.next=#{word.next}
-UIPageCreationWizard.label.nextStep=N\u00E1sleduj\u00EDc\u00ED krok
-UIPageCreationWizard.label.pageCreateWizard=Pr\u016Fvodce vytvo\u0159en\u00EDm str\u00E1nky
-UIPageCreationWizard.label.previousStep=P\u0159edchoz\u00ED krok
-UIPageCreationWizard.label.step=Krok
-UIPageCreationWizard.label.step1.title=Vybrat naviga\u010Dn\u00ED uzel a vytvo\u0159it str\u00E1nku
-UIPageCreationWizard.label.step2.title=Vybrat \u0161ablonu rozlo\u017Een\u00ED str\u00E1nky
-UIPageCreationWizard.label.step3.title=P\u0159izp\u016Fsobit rozlo\u017Een\u00ED str\u00E1nky a p\u0159idat portlety na str\u00E1nku
-UIPageCreationWizard.label.wizardSteps=Kroky pr\u016Fvodce
-UIPageCreationWizard.msg.NameNotSame=Tento n\u00E1zev ji\u017E existuje.
-UIPageCreationWizard.msg.StepByStep=Nejprve mus\u00EDte proj\u00EDt v\u0161echny kroky.
-UIPageCreationWizard.msg.notSelectedPageNavigation=Mus\u00EDte vybrat navigaci.
-
-UIPageCreationWizardStepForm.label.pageName=N\u00E1zev str\u00E1nky
-
-UIPageDesktop.Default.img.location=/eXoResources/skin/DefaultSkin/portal/webui/component/view/UIPageDesktop/icons/80x80
-UIPageDesktop.Mac.img.location=/eXoResources/skin/DefaultSkin/portal/webui/component/view/UIPageDesktop/icons/80x80
-UIPageDesktop.Vista.img.location=/eXoResources/skin/DefaultSkin/portal/webui/component/view/UIPageDesktop/icons/80x80
-UIPageDesktop.action.Close=Odebrat tuto aplikaci z li\u0161ty
-UIPageDesktop.action.Quit=Konec
-UIPageDesktop.action.action.Open=Otev\u0159\u00EDt
-UIPageDesktop.label.Done=Hotovo
-UIPageDesktop.label.Edit=Upravit
-UIPageDesktop.label.PageContent=Obsah str\u00E1nky
-UIPageDesktop.label.View=Zobrazit
-UIPageDesktop.label.pagebody=T\u011Blo str\u00E1nky port\u00E1lu
-UIPageDesktop.msg.hasNotPermission=Nem\u00E1te pr\u00E1vo pro editaci t\u00E9to str\u00E1nky.
-UIPageDesktop.title.AddApplication=P\u0159idat aplikace
-UIPageDesktop.title.PageNavigation=Navigace str\u00E1nky
-UIPageDesktop.title.PortalPage=Str\u00E1nka port\u00E1lu
-UIPageDesktop.title.SaveToDatabase=Ulo\u017Eit do datab\u00E1ze
-UIPageDesktop.title.ShowPortletDesktop=Zobrazit/skr\u00FDt portlety
-UIPageDesktop.title.ShowWidgetDesktop=Zobrazit/skr\u00FDt gadgety
-UIPageDesktop.title.SignIn=P\u0159ihl\u00E1sit
-UIPageDesktop.title.SignOut=Odhl\u00E1sit
-UIPageDesktop.title.eXoBrowser=Prohl\u00ED\u017Ee\u010D
-UIPageDesktop.title.pageNavigation=Navigace str\u00E1nky
-
-UIPageEditBar.tooltip.Decorator=Dekor\u00E1tor
-UIPageEditBar.tooltip.EditContainer=Zobrazit ovl\u00E1d\u00E1n\u00ED kontejneru
-UIPageEditBar.tooltip.EditPage=Upravit vlastnosti str\u00E1nky
-UIPageEditBar.tooltip.EditPortlet=Zobrazit ovl\u00E1d\u00E1n\u00ED porletu
-UIPageEditBar.tooltip.PagePreview=N\u00E1hled str\u00E1nky
-UIPageEditBar.tooltip.SavePage=Ulo\u017Eit str\u00E1nku
-UIPageEditBar.tooltip.SharedNavigation=Konfigurace komunitn\u00ED navigace
-UIPageEditBar.tooltip.TurnOffPreview=Klikn\u011Bte zde pro vypnut\u00ED n\u00E1hledu
-
-UIPageEditor.action.Abort=P\u0159eru\u0161it
-UIPageEditor.action.Finish=Dokon\u010Dit
-UIPageEditor.action.SwitchMode=P\u0159epnout m\u00F3d zobrazen\u00ED
-UIPageEditor.action.ViewProperties=Zobrazit vlastnosti str\u00E1nky
-UIPageEditor.title.UIPageEditor=Editor str\u00E1nky
-UIPageEditor.tooltip.Decorator=Dekor\u00E1tor
-UIPageEditor.tooltip.EditContainer=Upravit kontejner
-UIPageEditor.tooltip.EditPage=Upravit str\u00E1nku
-UIPageEditor.tooltip.EditPortlet=Upravit portlet
-UIPageEditor.tooltip.PagePreview=N\u00E1hled str\u00E1nky
-UIPageEditor.tooltip.SavePage=Ulo\u017Eit str\u00E1nku
-
-UIPageForm.action.Back=Zp\u011Bt
-UIPageForm.action.Close=Zru\u0161it
-UIPageForm.action.Save=#{word.save}
-UIPageForm.label.name=N\u00E1zev str\u00E1nky:
-UIPageForm.label.ownerId=Identifik\u00E1tor vlastn\u00EDka:
-UIPageForm.label.ownerType=Typ vlastn\u00EDka:
-UIPageForm.label.pageId=Identifik\u00E1tor str\u00E1nky:
-UIPageForm.label.showMaxWindow=Zobrazit maximalizovan\u00E9 okno:
-UIPageForm.label.title=Popisek str\u00E1nky:
-UIPageForm.msg.notExistOrDeleted=Tato str\u00E1nka neexistuje nebo byla smaz\u00E1na.
-UIPageForm.msg.sameName=Str\u00E1nka s t\u00EDmto n\u00E1zvem ji\u017E existuje.
-UIPageForm.tab.label.PageSetting=Nastaven\u00ED str\u00E1nky
-UIPageForm.tab.label.PermissionSetting=Nastaven\u00ED pr\u00E1v
-UIPageForm.tab.label.Template=\u0160ablony str\u00E1nky
-UIPageForm.tab.label.UIPageTemplateOptions=Rozlo\u017Een\u00ED str\u00E1nky
-UIPageForm.title=Zobrazit/upravit str\u00E1nku
-
-UIPageFormPopupGroupMembershipSelector.title.ListPermissionSelector=V\u00FDb\u011Br skupiny a \u010Dlenstv\u00ED
-
-UIPageIterator.label.backTenPages=Zp\u011Bt o 10 str\u00E1nek
-UIPageIterator.label.next=N\u00E1sleduj\u00EDc\u00ED str\u00E1nka
-UIPageIterator.label.nextTenPages=Vp\u0159ed o 10 str\u00E1nek
-UIPageIterator.label.previous=P\u0159edchoz\u00ED str\u00E1nka
-UIPageIterator.label.totalPage=Celkem str\u00E1nek
-
-UIPageManagement.msg.Invalid-editPermission=Nem\u00E1te pr\u00E1vo pro editaci t\u00E9to str\u00E1nky.
-UIPageManagement.title.BROWSE=Spravovat str\u00E1nky
-UIPageManagement.title.EDIT=Pr\u016Fzkumn\u00EDk str\u00E1nky & navigace
-
-UIPageNavigation.label.navigation=Navigace pro {0}
-UIPageNavigation.label.titleBar=Str\u00E1nky pro {0}
-UIPageNavigation.msg.noMakablePageNavigation=Nem\u00E1te pr\u00E1vo pro vytvo\u0159en\u00ED navigace str\u00E1nky k t\u00E9to skupin\u011B.
-UIPageNavigation.tooltip.upLevel=J\u00EDt o \u00FArove\u0148 v\u00FD\u0161
-
-UIPageNavigationForm.action.Close=Zru\u0161it
-UIPageNavigationForm.action.ClosePopup=#{word.close}
-UIPageNavigationForm.action.Save=#{word.save}
-UIPageNavigationForm.label.creator=Tv\u016Frce:
-UIPageNavigationForm.label.description=#{word.description}:
-UIPageNavigationForm.label.modifier=Modifik\u00E1tor:
-UIPageNavigationForm.label.name=#{word.name}:
-UIPageNavigationForm.label.ownerId=Identifik\u00E1tor vlastn\u00EDka:
-UIPageNavigationForm.label.ownerType=Typ vlastn\u00EDka:
-UIPageNavigationForm.label.priority=Priorita:
-UIPageNavigationForm.label.uri=#{word.uri}:
-UIPageNavigationForm.msg.existPageNavigation=Navigace str\u00E1nky {0} ji\u017E existuje.
-UIPageNavigationForm.msg.selectGroup=Mus\u00EDte vybrat skupinu.
-UIPageNavigationForm.tab.label.AccessGroup=P\u0159\u00EDstupov\u00E1 skupina
-UIPageNavigationForm.tab.label.Icon=#{word.icon}
-UIPageNavigationForm.tab.label.PageNavigationSetting=Nastaven\u00ED navigace str\u00E1nky
-UIPageNavigationForm.tab.label.PermissionSetting=Nastaven\u00ED pr\u00E1v
-UIPageNavigationForm.title=Pr\u016Fzkumn\u00EDk str\u00E1nky & navigace
-
-UIPageNodeForm.Icon.title.SetDefault=Z\u00EDskat v\u00FDchoz\u00ED
-UIPageNodeForm.action.Back=#{word.back}
-UIPageNodeForm.action.Close=#{word.cancel}
-UIPageNodeForm.action.Save=#{word.save}
-UIPageNodeForm.label.creator=Tv\u016Frce str\u00E1nky
-UIPageNodeForm.label.description=#{word.description}
-UIPageNodeForm.label.endPublicationDate=Konec publika\u010Dn\u00EDho data:
-UIPageNodeForm.label.label=#{word.label}:
-UIPageNodeForm.label.modifier=Modifik\u00E1tor str\u00E1nky
-UIPageNodeForm.label.name=N\u00E1zev uzlu:
-UIPageNodeForm.label.pageName=N\u00E1zev:
-UIPageNodeForm.label.pageReference=Odkaz str\u00E1nky
-UIPageNodeForm.label.showPublicationDate=Publika\u010Dn\u00ED datum & \u010Das:
-UIPageNodeForm.label.startPublicationDate=Po\u010D\u00E1tek publika\u010Dn\u00EDho data:
-UIPageNodeForm.label.type=Typ str\u00E1nky
-UIPageNodeForm.label.uri=#{word.uri}:
-UIPageNodeForm.label.visible=Viditeln\u00FD:
-UIPageNodeForm.msg.SameName=Uzel s t\u00EDmto n\u00E1zvem ji\u017E existuje.
-UIPageNodeForm.msg.currentDateBeforeEndDate=Koncov\u00E9 datum mus\u00ED b\u00FDt po aktu\u00E1ln\u00EDm datu nebo pr\u00E1zdn\u00E9.
-UIPageNodeForm.msg.currentDateBeforeStartDate=Po\u010D\u00E1te\u010Dn\u00ED datum mus\u00ED b\u00FDt po akut\u00E1ln\u00EDm nebo nebo pr\u00E1zdn\u00E9.
-UIPageNodeForm.msg.selectPage=Mus\u00EDte vybrat str\u00E1nku.
-UIPageNodeForm.msg.startDateBeforeEndDate=Koncov\u00E9 datum mus\u00ED b\u00FDt a\u017E po po\u010D\u00E1te\u010Dn\u00EDm datumu
-UIPageNodeForm.tab.label.Icon=#{word.icon}
-UIPageNodeForm.tab.label.PageNodeSetting=Nastaven\u00ED uzlu str\u00E1nky
-UIPageNodeForm.tab.label.UIPageSelector2=V\u00FDb\u011Br str\u00E1nky
-
-UIPageNodeSelector.UIDropDown.title=Vybrat navigaci
-UIPageNodeSelector.deleteNavigation=P\u0159ejete si smazat tento uzel?
-UIPageNodeSelector.deleteNode=P\u0159ejete si smazat tuto navigaci?
-UIPageNodeSelector.msg.Invalid-editPermission=Nem\u00E1te pr\u00E1vo k editaci t\u00E9to str\u00E1nky.
-UIPageNodeSelector.msg.NoPageNavigation=Mus\u00EDte nejprve vytvo\u0159it navigaci, aby jste mohli pou\u017E\u00EDvat tyto funkce.
-UIPageNodeSelector.msg.curentPage=Nelze smazat tuto str\u00E1nku: str\u00E1nka je pou\u017E\u00EDv\u00E1na jin\u00FDm programem.
-UIPageNodeSelector.msg.deleteNav=Nem\u016F\u017Eete smazat navigaci t\u00E9to str\u00E1nky.
-UIPageNodeSelector.msg.notAvailable=Str\u00E1nka tohoto uzlu nen\u00ED dostupn\u00E1.
-UIPageNodeSelector.msg.paste.sameName=Uzel s t\u00EDmto n\u00E1zvem ji\u017E existuje.
-UIPageNodeSelector.msg.paste.sameSrcAndDes=Zdroj a c\u00EDl mus\u00ED b\u00FDt odli\u0161n\u00E9.
-UIPageNodeSelector.tooltip.newPageNavigation=Vytvo\u0159it novou navigaci str\u00E1nky
-
-UIPageNodeSelectorPopupMenu.event.AddNode=P\u0159idat nov\u00FD uzel
-UIPageNodeSelectorPopupMenu.event.AddUserNavigation=P\u0159idat navigaci
-UIPageNodeSelectorPopupMenu.event.CreateNavigation=Vytvo\u0159it navigaci
-UIPageNodeSelectorPopupMenu.event.DeleteNavigation=Smazat navigaci
-UIPageNodeSelectorPopupMenu.event.EditNavigation=Upravit navigaci
-UIPageNodeSelectorPopupMenu.event.PasteNode=Vlo\u017Eit uzel
-UIPageNodeSelectorPopupMenu.event.SaveNavigation=Ulo\u017Eit navigaci
-
-UIPageNodeWizardPreview.action.Finish=Ulo\u017Eit a dokon\u010Dit
-UIPageNodeWizardPreview.label.accessPermission=P\u0159\u00EDstupov\u00E9 pr\u00E1vo
-UIPageNodeWizardPreview.label.creator=Tv\u016Frce
-UIPageNodeWizardPreview.label.editPermission=Edita\u010Dn\u00ED pr\u00E1vo
-UIPageNodeWizardPreview.label.icon=#{word.icon}
-UIPageNodeWizardPreview.label.nodeLabel=Popisek uzlu
-UIPageNodeWizardPreview.label.nodeName=N\u00E1zev uzlu
-UIPageNodeWizardPreview.label.pageReference=Odkaz str\u00E1nky
-
-UIPagePreview.action.Back=#{word.back}
-UIPagePreview.msg.empty=Tato str\u00E1nka nem\u00E1 \u017E\u00E1dn\u00FD obsah. Klikn\u011Bte na Upravit str\u00E1nku pro p\u0159id\u00E1n\u00ED obsahu.
-
-UIPageSearch.label.option.name=N\u00E1zev
-UIPageSearch.label.option.ownerId=Identifik\u00E1tor vlastn\u00EDka
-UIPageSearch.label.option.ownerType=Typ vlastn\u00EDka
-UIPageSearch.label.option.title=#{word.title}
-
-UIPageSelector2.header.accessGroups=P\u0159\u00EDstupov\u00E9 skupiny
-UIPageSelector2.header.action=#{word.action}
-UIPageSelector2.header.id=Identifik\u00E1tor str\u00E1nky
-UIPageSelector2.header.name=N\u00E1zev
-UIPageSelector2.header.title=#{word.title}
-UIPageSelector2.label.accessGroups=P\u0159\u00EDstupov\u00E9 skupiny
-UIPageSelector2.label.clearPage=Odebrat str\u00E1nku
-UIPageSelector2.label.createPage=Vytvo\u0159it str\u00E1nku
-UIPageSelector2.label.currentSelectedPage=Informace o vybran\u00E9 str\u00E1nce
-UIPageSelector2.label.name=#{word.name}
-UIPageSelector2.label.searchandSelectPage=Naj\u00EDt a vybrat str\u00E1nku
-UIPageSelector2.label.title=Popisek
-
-UIPageTemplateOptions.UIDropDown.label.columnPageConfigs=Konfigurace sloupc\u016F str\u00E1nky
-UIPageTemplateOptions.UIDropDown.label.mixPageConfigs=Sm\u00ED\u0161en\u00E9 konfigurace str\u00E1nky
-UIPageTemplateOptions.UIDropDown.label.normalPageConfigs=Konfigurace str\u00E1nky
-UIPageTemplateOptions.UIDropDown.label.rowPageConfigs=Konfigurace \u0159\u00E1dk\u016F str\u00E1nky
-UIPageTemplateOptions.UIDropDown.label.tabsPageConfigs=Konfigurace z\u00E1lo\u017Eek str\u00E1nky
-UIPageTemplateOptions.UIDropDown.title=Konfigurace str\u00E1nky
-
-UIPageWizardHelp.title.UIPageWizardHelp=N\u00E1pov\u011Bda pro pr\u016Fvdce str\u00E1nky
-
-UIPermissionForm.label.null=Pr\u00E1vo
-
-UIPermissionSelector.action.DeletePermission=Smazat pr\u00E1vo
-UIPermissionSelector.action.SelectPermission=Vybrat pr\u00E1vo
-UIPermissionSelector.label.AccessPermission=#{word.accessPermission}
-UIPermissionSelector.label.EditPermission=#{word.editPermission}
-UIPermissionSelector.label.PermissionInfo=Informace o pr\u00E1vech
-UIPermissionSelector.label.ViewPermission=#{word.viewPermission}
-UIPermissionSelector.label.addEditPermission=Nastaven\u00ED pr\u00E1v
-UIPermissionSelector.label.currentSelectedPermissionInfo=Aktu\u00E1ln\u00ED pr\u00E1vo
-UIPermissionSelector.label.groupId=#{word.groupId}
-UIPermissionSelector.label.membershipMember=\u010Clenstv\u00ED
-UIPermissionSelector.label.permissionType=Typ pr\u00E1v
-
-UIPopupGroupMembershipSelector.title.ListPermissionSelector=V\u00FDb\u011Br skupiny a \u010Dlenstv\u00ED
-
-UIPopupGroupSelector.title.GroupSelector=V\u00FDb\u011Br skupiny
-UIPopupGroupSelector.title.UIGroupSelector=V\u00FDb\u011Br skupiny
-
-UIPopupMessages.Close=Zav\u0159\u00EDt okno
-UIPopupMessages.button.ok=OK
-UIPopupMessages.label.Error=Chyba
-UIPopupMessages.label.Info=Informace
-UIPopupMessages.label.Warning=Varov\u00E1n\u00ED
-UIPopupMessages.title.exoMessages=Zpr\u00E1vy
-
-UIPopupWindow.Close=Zav\u0159\u00EDt okno
-UIPopupWindow.title.UINavigationManagement=Spr\u00E1va navigace
-UIPopupWindow.title.UIPageNavigationForm=Formul\u00E1\u0159 navigace str\u00E1nky
-UIPopupWindow.title.UIPageNodeForm=P\u0159idat/upravit uzel str\u00E1nky
-
-UIPortalApplication.label.Abort=P\u0159eru\u0161it
-UIPortalApplication.label.Loading=Na\u010D\u00EDt\u00E1n\u00ED...
-UIPortalApplication.msg.deletePageBody=Tato komponenta obsahuje t\u011Blo str\u00E1nky. Nelze smazat!
-
-UIPortalBrowser.action.addNewPortal=Vytvo\u0159it nov\u00FD port\u00E1l
-UIPortalBrowser.action.title.DeletePortal=Smazat port\u00E1l
-UIPortalBrowser.deletePortal=P\u0159ejete si smazat tento port\u00E1l?
-UIPortalBrowser.header.accessPermissions=P\u0159\u00EDstupov\u00E1 pr\u00E1va
-UIPortalBrowser.header.action=#{word.action}
-UIPortalBrowser.header.creator=Tv\u016Frce
-UIPortalBrowser.header.editPermission=Edita\u010Dn\u00ED pr\u00E1va
-UIPortalBrowser.header.factoryId=Podnikov\u00FD identifik\u00E1tor
-UIPortalBrowser.header.name=#{word.name}
-UIPortalBrowser.header.skin=#{word.skin}
-UIPortalBrowser.msg.Invalid-createPermission=Nem\u00E1te pr\u00E1vo pro vytvo\u0159en\u00ED nov\u00E9ho port\u00E1lu. Kontaktujte administr\u00E1tora.
-UIPortalBrowser.msg.Invalid-deletePermission=Nem\u00E1te pr\u00E1vo na smaz\u00E1n\u00ED port\u00E1lu {0}.
-UIPortalBrowser.msg.Invalid-viewPermission=Port\u00E1l nepovoluje p\u0159\u00EDstup
-UIPortalBrowser.msg.PortalInUse=Port\u00E1l {0} je pr\u00E1v\u011B pou\u017E\u00EDv\u00E1n.
-
-UIPortalComponentLogin.label.password=Heslo
-UIPortalComponentLogin.label.username=U\u017Eivatelsk\u00E9 jm\u00E9no
-
-UIPortalComposer.action.Abort=P\u0159eru\u0161it
-UIPortalComposer.action.Finish=Dokon\u010Dit
-UIPortalComposer.action.SwitchMode=P\u0159epnout m\u00F3d zobrazen\u00ED
-UIPortalComposer.action.ViewProperties=Konfigurace port\u00E1lu
-UIPortalComposer.title.UIPortalComposer=P\u0159ehled komponent
-
-UIPortalForm.action.Close=Zru\u0161it
-UIPortalForm.action.Save=#{word.save}
-UIPortalForm.label.date=#{word.date} :
-UIPortalForm.label.factoryId=Typy port\u00E1l\u016F
-UIPortalForm.label.locale=#{word.locale} :
-UIPortalForm.label.name=N\u00E1zev port\u00E1lu:
-UIPortalForm.label.option.always=V\u017Edy
-UIPortalForm.label.option.never=Nikdy
-UIPortalForm.label.option.onDemand=Na vy\u017E\u00E1d\u00E1n\u00ED
-UIPortalForm.label.sessionAlive=Udr\u017Eet sezen\u00ED:
-UIPortalForm.label.skin=Skin:
-UIPortalForm.msg.notExistAnymore=Tento port\u00E1l neexistuje nebo mohl b\u00FDt smaz\u00E1n.
-UIPortalForm.msg.sameName=Tento n\u00E1zev port\u00E1lu ji\u017E existuje.
-UIPortalForm.tab.label.FactoryId=Podnikov\u00FD identifik\u00E1tor
-UIPortalForm.tab.label.PermissionSetting=Nastaven\u00ED pr\u00E1v
-UIPortalForm.tab.label.PortalSetting=Nastaven\u00ED port\u00E1lu
-UIPortalForm.tab.label.PortalTemplate=\u0160ablony port\u00E1lu
-UIPortalForm.tab.label.Properties=Vlastnosti
-UIPortalForm.title=Upravit port\u00E1l
-
-UIPortalManagement.msg.Invalid-CreatePage-Permission=Nem\u00E1te pr\u00E1vo na vytvo\u0159en\u00ED nov\u00E9 str\u00E1nky.
-UIPortalManagement.msg.Invalid-EditLayout-Permission=Nem\u00E1te pr\u00E1vo na editaci tohoto rozlo\u017Een\u00ED.
-UIPortalManagement.msg.Invalid-EditPage-Permission=Nem\u00E1te pr\u00E1vo na editaci t\u00E9to str\u00E1nky.
-UIPortalManagement.title.BROWSE=Spravovat port\u00E1ly
-UIPortalManagement.title.EDIT=Upravit aktu\u00E1ln\u00ED port\u00E1l
-
-UIPortalNavigation.Label.Next=Dal\u0161\u00ED
-UIPortalNavigation.Label.Previous=P\u0159edchoz\u00ED
-
-UIPortalToolPanel.label.companyTitleText=Red Hat, Inc a eXo Platform SAS
-UIPortalToolPanel.label.copyrightText=Copyright © 2010. V\u0161echna pr\u00E1va vyhrazena,
-
-UIPortlet.deletePortlet=P\u0159ejete si smazat tento portlet?
-UIPortlet.label.View=Zobrazit
-UIPortlet.label.portletContent=Popis portletu
-UIPortlet.label.protectedContent=Chr\u00E1n\u011Bn\u00FD obsah
-UIPortlet.lable.information=Hotovo
-UIPortlet.message.RuntimeError=V tomto portletu nastala chyba a nem\u016F\u017Ee b\u00FDt zobrazen
-UIPortlet.tooltip.DragControl=Podr\u017Ete kurzor na t\u00E9to oblasti pro uchycen\u00ED tohoto portletu
-UIPortlet.tooltip.Maximize=Maximalizovat
-UIPortlet.tooltip.MaximizeRestore=Obnovit
-UIPortlet.tooltip.Minimize=Minimalizovat
-UIPortlet.tooltip.MinimizeRestore=Obnovit
-UIPortlet.tooltip.PortletMode=M\u00F3d portletu
-UIPortlet.tooltip.ResizeWindow=Upravit velikost okna
-UIPortlet.tooltip.deletePortlet=Smazat portlet
-UIPortlet.tooltip.editPortlet=Upravit portlet
-
-UIPortletForm.Icon.title.SetDefault=Z\u00EDskat v\u00FDchoz\u00ED
-UIPortletForm.Theme.title.Preview=N\u00E1hled t\u00E9mat
-UIPortletForm.Theme.title.SetDefault=Z\u00EDskat v\u00FDchoz\u00ED
-UIPortletForm.action.Close=Zru\u0161it
-UIPortletForm.action.Save=Ulo\u017Eit a zav\u0159\u00EDt
-UIPortletForm.label.description=Popis:
-UIPortletForm.label.displayName=Zobrazovan\u00FD n\u00E1zev:
-UIPortletForm.label.height=#{word.height}:
-UIPortletForm.label.id=Identifik\u00E1tor portletu:
-UIPortletForm.label.showInfoBar=Zobrazit informa\u010Dn\u00ED li\u0161tu:
-UIPortletForm.label.showPortletMode=Zobrazit m\u00F3dy portletu:
-UIPortletForm.label.showWindowState=Zobrazit stavy okna:
-UIPortletForm.label.template=\u0160ablona
-UIPortletForm.label.title=N\u00E1zev portletu:
-UIPortletForm.label.width=#{word.width}:
-UIPortletForm.label.windowId=Identifik\u00E1tor okna:
-UIPortletForm.msg.InvalidPortletDescription=Popis portletu je neplatn\u00FD, nesm\u00ED obsahovat znaky < nebo >.
-UIPortletForm.msg.InvalidPortletTitle=N\u00E1zev portletu je neplatn\u00FD, nesm\u00ED obsahovat znaky < nebo >.
-UIPortletForm.msg.InvalidWidthHeight=Do pole "{0}" mus\u00EDte zadat hodnotu v pixelech.
-UIPortletForm.tab.label.Decorator=Dekor\u00E1tor
-UIPortletForm.tab.label.EditMode=Edita\u010Dn\u00ED m\u00F3d
-UIPortletForm.tab.label.Icon=Zvolit ikonu
-UIPortletForm.tab.label.PortletPermission=P\u0159\u00EDstupov\u00E1 pr\u00E1va
-UIPortletForm.tab.label.PortletPref=Preference
-UIPortletForm.tab.label.PortletSetting=Nastaven\u00ED portletu
-UIPortletForm.tab.label.Renderer=Vykreslova\u010D
-UIPortletForm.tab.label.Template=\u0160ablona
-UIPortletForm.tab.label.Theme=Dekora\u010Dn\u00ED t\u00E9mata
-UIPortletForm.title=Zobrazit/upravit portlet
-
-UIPortletLifecycle.msg.process-error=B\u011Bhem zpracov\u00E1n\u00ED akce se vyskytla chyba
-
-UIPortletRegistryCategory.msg.editPortlet=Mus\u00EDte vybrat portlet
-
-UIResetPassword.action.Close=Zav\u0159\u00EDt
-UIResetPassword.action.Save=Ulo\u017Eit
-UIResetPassword.label.changepass=Zm\u011Bna hesla:
-UIResetPassword.label.confirmnewpassword=Potvrzen\u00ED nov\u00E9ho hesla:
-UIResetPassword.label.newpassword=Nov\u00E9 heslo:
-UIResetPassword.label.password=Heslo:
-UIResetPassword.label.username=U\u017Eivatelsk\u00E9 jm\u00E9no:
-UIResetPassword.msg.Invalid-account=U\u017Eivatelsk\u00E9 jm\u00E9no nebo heslo je neplatn\u00E9 nebo pr\u00E1zdn\u00E9. Zkuste to pros\u00EDm znovu.
-UIResetPassword.msg.change-password-successfully=Heslo bylo zm\u011Bn\u011Bno.
-UIResetPassword.msg.password-is-not-match=Nov\u00E1 hesla se neshoduj\u00ED.
-UIResetPassword.title=Zm\u011Bnit heslo
-
-UISearch.label.AdvancedSearch=Pokro\u010Dil\u00E9 vyhled\u00E1v\u00E1n\u00ED
-UISearch.label.QuickSearch=Ryhl\u00E9 vyhled\u00E1v\u00E1n\u00ED
-UISearch.label.Search=Vyhledat
-UISearch.label.UIMetadataSearch=Hled\u00E1n\u00ED podle metadat
-UISearch.label.UISavedQuery=Ulo\u017Een\u00E9 dotazy
-UISearch.label.UISearchResult=Pokro\u010Dil\u00E9 v\u00FDsledky hled\u00E1n\u00ED
-
-UISearchForm.msg.empty=Nenalezeny \u017E\u00E1dn\u00E9 v\u00FDsledky.
-
-UISharedNavigation.msg.notSelected=Mus\u00EDte vybrat skupinu.
-
-UISharedPortalResources.msg.notSelected=Mus\u00EDte vybrat skupinu.
-
-UISiteManagement.msg.Invalid-deletePermission=Tento u\u017Eivatel nem\u00E1 pr\u00E1vo pro smaz\u00E1n\u00ED tohoto port\u00E1lu.
-UISiteManagement.msg.Invalid-editPermission=Tento u\u017Eivatel nem\u00E1 pr\u00E1vo pro editaci tohoto port\u00E1lu
-UISiteManagement.msg.delete-default-portal=V\u00FDchoz\u00ED port\u00E1l nem\u016F\u017Ee b\u00FDt smaz\u00E1n
-UISiteManagement.msg.portal-not-exist=Tento port\u00E1l neexistuje nebo mohl b\u00FDt smaz\u00E1n.
-
-UISitemap.label.message=Na tomto m\u00EDst\u011B nen\u00ED \u017E\u00E1dn\u00E1 podstr\u00E1nka.
-
-UISitemapPortlet.label.CollapseAll=Sbalit v\u0161e
-UISitemapPortlet.label.ExpandAll=Rozbalit v\u0161e
-
-UITabContainer.tab=Z\u00E1lo\u017Eka
-
-UITabPane.title.UIAccountChangePass=Zm\u011Bnit heslo
-UITabPane.title.UIAccountProfiles=Profily \u00FA\u010Dt\u016F
-UITabPane.title.UIApplicationList=Aplikace
-UITabPane.title.UIContainerList=Kontejnery
-UITabPane.title.UIListPermissionSelector=Nastaven\u00ED p\u0159\u00EDstupov\u00FDch pr\u00E1v
-UITabPane.title.UIPermissionSelector=Nastaven\u00ED edita\u010Dn\u00EDch pr\u00E1v
-
-UITableColumnContainer.title.Container=Tabulkov\u00FD kontejner
-UITableColumnContainer.title.DragControlArea=Podr\u017Ete kurzor na t\u00E9to oblasti pro uchycen\u00ED t\u00E9to tabulky
-UITableColumnContainer.tooltip.closeContainer=Smazat tabulku
-UITableColumnContainer.tooltip.editContainer=Upravit tabulku
-
-UITestForm.label.UIAddApplication=P\u0159idat aplikaci
-
-UITree.tooltip.UpLevel=O \u00FArove\u0148 v\u00FD\u0161
-
-UIUserMembershipSelector.action.SelectPermission=Vybrat pr\u00E1vo
-UIUserMembershipSelector.action.title.DeleteMembership=Smazat \u010Dlenstv\u00ED
-UIUserMembershipSelector.header.action=#{word.action}
-UIUserMembershipSelector.header.groupId=#{word.groupId}
-UIUserMembershipSelector.header.membershipType=Typ \u010Dlenstv\u00ED
-UIUserMembershipSelector.header.userName=U\u017Eivatelsk\u00E9 jm\u00E9no
-
-UIUserProfileInputSet.label.BusinessInfo=Pracovn\u00ED informace
-UIUserProfileInputSet.label.HomeInfo=Informace o domov\u011B
-UIUserProfileInputSet.label.Profile=Profil
-UIUserProfileInputSet.msg.sucsesful.update.userprofile=Tento u\u017Eivatelsk\u00FD \u00FA\u010Det byl zm\u011Bn\u011Bn.
-UIUserProfileInputSet.title=Osobn\u00ED informace
-
-UIUserSelector.label.Add=P\u0159idat
-UIUserSelector.label.Close=Zav\u0159\u00EDt
-UIUserSelector.label.action=Akce
-UIUserSelector.label.email=E-mail
-UIUserSelector.label.firstName=K\u0159estn\u00ED jm\u00E9no
-UIUserSelector.label.group=Skupina:
-UIUserSelector.label.lastName=P\u0159\u00EDjmen\u00ED
-UIUserSelector.label.option.email=E-mailov\u00E1 adresa
-UIUserSelector.label.option.firstName=K\u0159estn\u00ED jm\u00E9no
-UIUserSelector.label.option.lastName=P\u0159\u00EDjmen\u00ED
-UIUserSelector.label.option.userName=U\u017Eivatelsk\u00E9 jm\u00E9no
-UIUserSelector.label.searchUser=Vyhledat:
-UIUserSelector.label.userName=U\u017Eivatelsk\u00E9 jm\u00E9no
-UIUserSelector.msg.empty=Pr\u00E1zdn\u00E9 \u00FAdaje
-UIUserSelector.msg.user-required=Za\u0161krtn\u011Bte pros\u00EDm alespo\u0148 jednoho u\u017Eivatele.
-
-UIUserToolBarDashboard.page.Tab_Default=Klikn\u011Bte & upravte n\u00E1zev str\u00E1nky
-
-UIVTabInputSet.label.personalInfo=Osobn\u00ED informace
-
-UIVirtualList.header.accessGroups=P\u0159\u00EDstupov\u00E9 skupiny
-UIVirtualList.header.accessPermissions=P\u0159\u00EDstupov\u00E1 pr\u00E1va
-UIVirtualList.header.action=#{word.action}
-UIVirtualList.header.editPermission=Edita\u010Dn\u00ED pr\u00E1va
-UIVirtualList.header.name=N\u00E1zev str\u00E1nky
-UIVirtualList.header.ownerId=Identifik\u00E1tor vlastn\u00EDka
-UIVirtualList.header.ownerType=Typ vlastn\u00EDka
-UIVirtualList.header.pageId=Identifik\u00E1tor str\u00E1nky
-UIVirtualList.header.title=Popisek
-
-UIWidgetContainer.tooltip.addWidget=P\u0159idat gadget
-UIWidgetContainer.tooltip.scrollDown=Skrolovat dol\u016F
-UIWidgetContainer.tooltip.scrollUp=Skrolovat nahoru
-
-UIWizardPageSelectLayoutForm.label.UIPageTemplateOptions=null
-UIWizardPageSelectLayoutForm.label.columnPage.ThreeColumnsLayout=Rozlo\u017Een\u00ED na t\u0159i sloupce
-UIWizardPageSelectLayoutForm.label.columnPage.TwoColumnsLayout=Rozlo\u017Een\u00ED na dva sloupce
-UIWizardPageSelectLayoutForm.label.mixPage.OneRowTwoColumnsLayout=Rozlo\u017Een\u00ED na jeden \u0159\u00E1dek a dva sloupce
-UIWizardPageSelectLayoutForm.label.mixPage.ThreeRowsTwoColumnsLayout=Rozlo\u017Een\u00ED na dva sloupce a t\u0159i \u0159\u00E1dky
-UIWizardPageSelectLayoutForm.label.mixPage.TwoColumnsOneRowLayout=Rozlo\u017Een\u00ED na dva sloupce a jeden \u0159\u00E1dek
-UIWizardPageSelectLayoutForm.label.normalPage.CurrentLayout=Aktu\u00E1ln\u00ED rozlo\u017Een\u00ED
-UIWizardPageSelectLayoutForm.label.normalPage.DashboardLayout=Rozlo\u017Een\u00ED n\u00E1st\u011Bnky
-UIWizardPageSelectLayoutForm.label.normalPage.DesktopImage=Rozlo\u017Een\u00ED plochy
-UIWizardPageSelectLayoutForm.label.normalPage.EmptyLayout=Pr\u00E1zdn\u00E9 rozlo\u017Een\u00ED
-UIWizardPageSelectLayoutForm.label.rowPage.ThreeRowsLayout=Rozlo\u017Een\u00ED na t\u0159i \u0159\u00E1dky
-UIWizardPageSelectLayoutForm.label.rowPage.TwoRowsLayout=Rozlo\u017Een\u00ED na dva \u0159\u00E1dky
-UIWizardPageSelectLayoutForm.label.tabsPage.ThreeTabsLayout=Rozlo\u017Een\u00ED na t\u0159i z\u00E1lo\u017Eky
-UIWizardPageSelectLayoutForm.label.tabsPage.TwoTabsLayout=Rozlo\u017Een\u00ED na dv\u011B z\u00E1lo\u017Eky
-UIWizardPageSelectLayoutForm.tab.label.UIPageTemplateOptions=Mo\u017Enosti \u0161ablon str\u00E1nky
-
-UIWizardPageSetInfo.action.Save=#{word.save}
-UIWizardPageSetInfo.label.curentSelectedNodeInfo=Vybran\u00FD uzel str\u00E1nky
-UIWizardPageSetInfo.label.endPublicationDate=Konec publika\u010Dn\u00EDho data
-UIWizardPageSetInfo.label.pageDisplayName=Zobrazovan\u00FD n\u00E1zev
-UIWizardPageSetInfo.label.pageName=N\u00E1zev uzlu
-UIWizardPageSetInfo.label.showPublicationDate=Publika\u010Dn\u00ED datum & \u010Das
-UIWizardPageSetInfo.label.startPublicationDate=Po\u010D\u00E1tek publika\u010Dn\u00EDho data
-UIWizardPageSetInfo.label.visible=Viditeln\u00FD
-UIWizardPageSetInfo.msg.null=Nebyla nalezena \u017E\u00E1dn\u00E1 str\u00E1nka.
-UIWizardPageSetInfo.title=P\u0159idat novou str\u00E1nku
-
-URLValidator.msg.invalid-url=Pole "{0}" neobsahuje platnou URL.
-
-UserPermissionSelector.title.UIGroupMembershipSelector=V\u00FDb\u011Br \u010Dlenstv\u00ED skupiny
-
-WebOSPortal.label=WebOS port\u00E1l
-
-WorkingPopup.title.WorkingPopup=Pracovn\u00ED popup
-# Copyright (C) 2010 eXo Platform SAS.
-#
-# This is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2.1 of
-# the License, or (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this software; if not, write to the Free
-# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-#
-
-\#{0}=input field name
-
AccountTemplate.left.title=N\u00e1hled vzorov\u00e9 \u0161ablony \u00fa\u010dtu
AccountTemplate.title=\u0160ablony \u00fa\u010dt\u016f
@@ -1304,7 +223,6 @@
UIAccountProfiles.label.email=E-mail :
UIAccountProfiles.label.firstName=K\u0159estn\u00ed jm\u00e9no:
UIAccountProfiles.label.lastName=P\u0159\u00edjmen\u00ed:
-UIAccountProfiles.label.displayName=Zobrazovan\u00E9 jm\u00E9no:
UIAccountProfiles.label.userName=U\u017eivatelsk\u00e9 jm\u00e9no:
UIAccountProfiles.msg.NotExistingAccount=V\u00e1\u0161 \u00fa\u010det neexistuje, mo\u017en\u00fd byl smaz\u00e1n jin\u00fdm u\u017eivatelem!
UIAccountProfiles.msg.update.success=Informace o \u00fa\u010dtu byly aktualizov\u00e1ny.
12 years, 5 months
gatein SVN: r8776 - in epp/docs/branches/5.2/Reference_Guide/en-US: code_samples and 2 other directories.
by do-not-reply@jboss.org
Author: jaredmorgs
Date: 2012-07-06 01:01:52 -0400 (Fri, 06 Jul 2012)
New Revision: 8776
Added:
epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/
epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/jcr-configuration.xml_code
epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_cluster-config/indexer-config.xml_code
epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_lock-manager-config/lock-config.xml_code
Log:
BZ#812412 cumulative minor corrections
Added: epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/jcr-configuration.xml_code
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/jcr-configuration.xml_code (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/code_samples/jcr-configuration.xml_code 2012-07-06 05:01:52 UTC (rev 8776)
@@ -0,0 +1,83 @@
+ <component>
+ <key>org.exoplatform.services.jcr.RepositoryService</key>
+ <type>org.exoplatform.services.jcr.impl.RepositoryServiceImpl</type>
+ <component-plugins>
+ <component-plugin>
+ <name>add.namespaces</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.jcr.impl.AddNamespacesPlugin</type>
+ <init-params>
+ <properties-param>
+ <name>namespaces</name>
+ <property name="test" value="http://www.apache.org/jackrabbit/test"/>
+ <property name="exojcrtest" value="http://www.exoplatform.org/jcr/test/1.0"/>
+ <property name="rma" value="http://www.rma.com/jcr/"/>
+ <property name="metadata" value="http://www.exoplatform.com/jcr/metadata/1.1/"/>
+ <property name="dc" value="http://purl.org/dc/elements/1.1/"/>
+ <property name="publication" value="http://www.exoplatform.com/jcr/publication/1.1/"/>
+ </properties-param>
+ </init-params>
+ </component-plugin>
+ <component-plugin>
+ <name>add.nodeType</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.jcr.impl.AddNodeTypePlugin</type>
+ <init-params>
+ <values-param>
+ <name>autoCreatedInNewRepository</name>
+ <description>Node types configuration file</description>
+ <value>jar:/conf/test/nodetypes-tck.xml</value>
+ <value>jar:/conf/test/nodetypes-impl.xml</value>
+ <value>jar:/conf/test/nodetypes-usecase.xml</value>
+ <value>jar:/conf/test/nodetypes-config.xml</value>
+ <value>jar:/conf/test/nodetypes-config-extended.xml</value>
+ <value>jar:/conf/test/wcm-nodetypes.xml</value>
+ <value>jar:/conf/test/nodetypes-publication-config.xml</value>
+ <value>jar:/conf/test/publication-plugins-nodetypes-config.xml</value>
+ </values-param>
+
+ <values-param>
+ <name>testInitNodeTypesRepository</name>
+ <description>
+ Node types configuration file for repository with name testInitNodeTypesRepository
+ </description>
+ <value>jar:/conf/test/nodetypes-test.xml</value>
+ </values-param>
+
+ <values-param>
+ <name>testInitNodeTypesRepositoryTest2</name>
+ <description>
+ Node types configuration file for repository with name testInitNodeTypesRepositoryTest2
+ </description>
+ <value>jar:/conf/test/nodetypes-test2.xml</value>
+ </values-param>
+
+ <!--values-param>
+ <name>testInitNodeTypesRepositoryTest3</name>
+ <description>Node types from ext. Needed bacause core starup earlie than ext</description>
+ <value>jar:/conf/test/nodetypes-test3_ext.xml</value>
+ </values-param-->
+
+ </init-params>
+ </component-plugin>
+ </component-plugins>
+ </component>
+
+ <component>
+ <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
+ <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
+ <init-params>
+ <value-param>
+ <name>conf-path</name>
+ <description>JCR configuration file</description>
+ <value>jar:/conf/standalone/test-jcr-config-jbc.xml</value>
+ </value-param>
+ <properties-param>
+ <name>working-conf</name>
+ <description>working-conf</description>
+ <property name="dialect" value="auto" />
+ <property name="source-name" value="jdbcjcr"/>
+ <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister"/>
+ </properties-param>
+ </init-params>
+ </component>
Added: epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_cluster-config/indexer-config.xml_code
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_cluster-config/indexer-config.xml_code (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_cluster-config/indexer-config.xml_code 2012-07-06 05:01:52 UTC (rev 8776)
@@ -0,0 +1,12 @@
+<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
+
+ <locking useLockStriping="false" concurrencyLevel="500" lockParentForChildInsertRemove="false"
+ lockAcquisitionTimeout="20000" />
+ <!-- Configure the TransactionManager -->
+ <transaction transactionManagerLookupClass="org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup" />
+
+ <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
+ <stateRetrieval timeout="20000" fetchInMemoryState="false" />
+ <sync />
+ </clustering>
+</jbosscache>
Added: epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_lock-manager-config/lock-config.xml_code
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_lock-manager-config/lock-config.xml_code (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_lock-manager-config/lock-config.xml_code 2012-07-06 05:01:52 UTC (rev 8776)
@@ -0,0 +1,31 @@
+<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
+
+ <locking useLockStriping="false" concurrencyLevel="500" lockParentForChildInsertRemove="false"
+ lockAcquisitionTimeout="20000" />
+
+ <loaders passivation="false" shared="true">
+ <!-- All the data of the JCR locks needs to be loaded at startup -->
+ <preload>
+ <node fqn="/" />
+ </preload>
+ <!--
+For another cache-loader class you should use another template with
+cache-loader specific parameters
+-->
+ <loader class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.JDBCCacheLoader" async="false" fetchPersistentState="false"
+ ignoreModifications="false" purgeOnStartup="false">
+ <properties>
+ cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
+ cache.jdbc.table.create=${jbosscache-cl-cache.jdbc.table.create}
+ cache.jdbc.table.drop=${jbosscache-cl-cache.jdbc.table.drop}
+ cache.jdbc.table.primarykey=${jbosscache-cl-cache.jdbc.table.primarykey}
+ cache.jdbc.fqn.column=${jbosscache-cl-cache.jdbc.fqn.column}
+ cache.jdbc.fqn.type=${jbosscache-cl-cache.jdbc.fqn.type}
+ cache.jdbc.node.column=${jbosscache-cl-cache.jdbc.node.column}
+ cache.jdbc.node.type=${jbosscache-cl-cache.jdbc.node.type}
+ cache.jdbc.parent.column=${jbosscache-cl-cache.jdbc.parent.column}
+ cache.jdbc.datasource=${jbosscache-cl-cache.jdbc.datasource}
+</properties>
+ </loader>
+ </loaders>
+</jbosscache>
12 years, 5 months
gatein SVN: r8775 - in epp/docs/branches/5.2/Reference_Guide/en-US: extras/Advanced_Development_JCR_Configuration and 8 other directories.
by do-not-reply@jboss.org
Author: jaredmorgs
Date: 2012-07-06 01:00:36 -0400 (Fri, 06 Jul 2012)
New Revision: 8775
Modified:
epp/docs/branches/5.2/Reference_Guide/en-US/Author_Group.xml
epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.xml
epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml
epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/example-1.xml
epp/docs/branches/5.2/Reference_Guide/en-US/images/AuthenticationAndIdentity/Overview/loginScreen.png
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Advanced_Concepts.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Profiles.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Specific_Services.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/CoreOrganizationInitializer.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DataImportStrategy.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/workspace-persistence-storage.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/data-container.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml
Log:
BZ#812412 cumulative minor corrections
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Author_Group.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Author_Group.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Author_Group.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,67 +1,34 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<authorgroup>
- <editor>
- <firstname>Luc</firstname>
- <surname>Texier</surname>
- <affiliation>
- <shortaffil>Red Hat</shortaffil>
- <orgdiv>JBoss Engineering</orgdiv>
-
- </affiliation>
-
- </editor>
- <editor>
- <firstname>Thomas</firstname>
- <surname>Heute</surname>
- <affiliation>
- <shortaffil>Red Hat</shortaffil>
- <orgdiv>JBoss Engineering</orgdiv>
-
- </affiliation>
-
- </editor>
- <editor>
- <firstname>Wesley</firstname>
- <surname>Hales</surname>
- <affiliation>
- <shortaffil>Red Hat</shortaffil>
- <orgdiv>JBoss Engineering</orgdiv>
-
- </affiliation>
-
- </editor>
- <editor>
- <firstname>Chris</firstname>
- <surname>Laprun</surname>
- <affiliation>
- <shortaffil>Red Hat</shortaffil>
- <orgdiv>JBoss Engineering</orgdiv>
-
- </affiliation>
-
- </editor>
- <editor>
- <firstname>Scott</firstname>
- <surname>Mumford</surname>
- <affiliation>
- <shortaffil>Red Hat</shortaffil>
- <orgdiv>Engineering Content Services</orgdiv>
-
- </affiliation>
-
- </editor>
- <othercredit>
- <affiliation>
- <orgname><emphasis role="bold"><ulink type="http" url="http://www.jboss.org/gatein/">GateIn</ulink></emphasis> and <emphasis role="bold"><ulink type="http" url="http://www.exoplatform.com">eXo Platform</ulink></emphasis></orgname>
- <orgdiv>Documentation Teams</orgdiv>
-
- </affiliation>
- <contrib>Based on original product documentation by:</contrib>
-
- </othercredit>
+ <editor>
+ <firstname>Thomas</firstname>
+ <surname>Heute</surname>
+ <affiliation>
+ <shortaffil>Red Hat</shortaffil>
+ <orgdiv>JBoss Engineering</orgdiv>
+ </affiliation>
+ </editor>
+ <editor>
+ <firstname>Chris</firstname>
+ <surname>Laprun</surname>
+ <affiliation>
+ <shortaffil>Red Hat</shortaffil>
+ <orgdiv>JBoss Engineering</orgdiv>
+ </affiliation>
+ </editor>
+ <othercredit>
+ <affiliation>
+ <orgname><emphasis role="bold">
+ <ulink url="http://www.jboss.org/gatein/" type="http">GateIn</ulink>
+ </emphasis> and <emphasis role="bold">
+ <ulink url="http://www.exoplatform.com" type="http">eXo Platform</ulink>
+ </emphasis></orgname>
+ <orgdiv>Documentation Teams</orgdiv>
+ </affiliation>
+ <contrib>Based on original product documentation by:</contrib>
+ </othercredit>
</authorgroup>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -9,7 +9,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.2</edition>
- <pubsnumber>1</pubsnumber>
+ <pubsnumber>2</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.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This document was created with Syntext Serna Free. -->
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!-- This document was created with Syntext Serna Free. --><!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -8,8 +8,8 @@
<simpara>
<revhistory>
<revision>
- <revnumber>5.2.2-1</revnumber>
- <date>Tue Jul 3 2012</date>
+ <revnumber>5.2.2-2</revnumber>
+ <date>Thu Jul 5 2012</date>
<author>
<firstname>Jared</firstname>
<surname>Morgan</surname>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/example-1.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/example-1.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/Advanced_Development_JCR_Configuration/example-1.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,69 +1,59 @@
-<component>
- <key>org.exoplatform.services.naming.InitialContextInitializer</key>
- <type>org.exoplatform.services.naming.InitialContextInitializer</type>
- <component-plugins>
- <component-plugin>
- <name>bind.datasource</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.naming.BindReferencePlugin</type>
- <init-params>
- <value-param>
- <name>bind-name</name>
- <value>jdbcjcr</value>
- </value-param>
- <value-param>
- <name>class-name</name>
- <value>javax.sql.DataSource</value>
- </value-param>
- <value-param>
- <name>factory</name>
- <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
- </value-param>
- <properties-param>
- <name>ref-addresses</name>
- <description>ref-addresses</description>
- <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
- <property name="url" value="jdbc:hsqldb:file:target/temp/data/portal"/>
- <property name="username" value="sa"/>
- <property name="password" value=""/>
- </properties-param>
- </init-params>
- </component-plugin>
- <component-plugin>
- <name>bind.datasource</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.naming.BindReferencePlugin</type>
- <init-params>
- <value-param>
- <name>bind-name</name>
- <value>jdbcjcr1</value>
- </value-param>
- <value-param>
- <name>class-name</name>
- <value>javax.sql.DataSource</value>
- </value-param>
- <value-param>
- <name>factory</name>
- <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
- </value-param>
- <properties-param>
- <name>ref-addresses</name>
- <description>ref-addresses</description>
- <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://exoua.dnsalias.net/jcr"/>
- <property name="username" value="exoadmin"/>
- <property name="password" value="exo12321"/>
- <property name="maxActive" value="50"/>
- <property name="maxIdle" value="5"/>
- <property name="initialSize" value="5"/>
- </properties-param>
- </init-params>
- </component-plugin>
- <component-plugins>
- <init-params>
- <value-param>
- <name>default-context-factory</name>
- <value>org.exoplatform.services.naming.SimpleContextFactory</value>
- </value-param>
- </init-params>
- </component>
\ No newline at end of file
+ <external-component-plugins>
+ <target-component>org.exoplatform.services.naming.InitialContextInitializer</target-component>
+ <component-plugin>
+ <name>bind.datasource</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.naming.BindReferencePlugin</type>
+ <init-params>
+ <value-param>
+ <name>bind-name</name>
+ <value>jdbcjcr</value>
+ </value-param>
+ <value-param>
+ <name>class-name</name>
+ <value>javax.sql.DataSource</value>
+ </value-param>
+ <value-param>
+ <name>factory</name>
+ <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
+ </value-param>
+ <properties-param>
+ <name>ref-addresses</name>
+ <description>ref-addresses</description>
+ <property name="driverClassName" value="${all.driverClassName:org.hsqldb.jdbcDriver}"/>
+ <!-- MVCC configured to prevent possible deadlocks when a global Tx is active -->
+ <property name="url" value="${jdbcjcr.url:jdbc:hsqldb:file:target/temp/data/portal;hsqldb.tx=mvcc}"/>
+ <property name="username" value="${jdbcjcr.username:sa}"/>
+ <property name="password" value="${jdbcjcr.password:}"/>
+ </properties-param>
+ </init-params>
+ </component-plugin>
+ <component-plugin>
+ <name>bind.datasource</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.naming.BindReferencePlugin</type>
+ <init-params>
+ <value-param>
+ <name>bind-name</name>
+ <value>jdbcjcr1</value>
+ </value-param>
+ <value-param>
+ <name>class-name</name>
+ <value>javax.sql.DataSource</value>
+ </value-param>
+ <value-param>
+ <name>factory</name>
+ <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
+ </value-param>
+ <properties-param>
+ <name>ref-addresses</name>
+ <description>ref-addresses</description>
+ <property name="driverClassName" value="${all.driverClassName:org.hsqldb.jdbcDriver}"/>
+ <property name="url" value="${jdbcjcr1.url:jdbc:hsqldb:file:target/temp/data/jcr}"/>
+ <property name="username" value="${jdbcjcr1.username:sa}"/>
+ <property name="password" value="${jdbcjcr1.password:}"/>
+ </properties-param>
+ </init-params>
+ </component-plugin>
+ <!-- Unnecessary plugins not relevant to this section removed for clarity -->
+ </external-component-plugins>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/images/AuthenticationAndIdentity/Overview/loginScreen.png
===================================================================
(Binary files differ)
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Advanced_Concepts.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Advanced_Concepts.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Advanced_Concepts.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,25 +1,24 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-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">
+ <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">
<web-app>
...
<!-- ================================================================== -->
@@ -30,36 +29,30 @@
</listener>
...
</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>
+ </note>
- </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>
-
- </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>
+ </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>
<init-params>
@@ -87,10 +80,10 @@
<!-- It cans be used to avoid duplicating configuration -->
<object-param>
<name>default.portal.definition</name>
- <object type="org.exoplatform.container.definition.PortalContainerDefinition">
+ <object type="org.exoplatform.container.definition.PortalContainerDefinition">
<!-- All the dependencies of the portal container ordered by loading priority -->
- <field name="dependencies">
- <collection type="java.util.ArrayList">
+ <field name="dependencies">
+ <collection type="java.util.ArrayList">
<value>
<string>foo</string>
</value>
@@ -103,8 +96,8 @@
</collection>
</field>
<!-- A map of settings tied to the default portal container -->
- <field name="settings">
- <map type="java.util.HashMap">
+ <field name="settings">
+ <map type="java.util.HashMap">
<entry>
<key>
<string>foo5</string>
@@ -132,95 +125,60 @@
</map>
</field>
<!-- The path to the external properties file -->
- <field name="externalSettingsPath">
+ <field name="externalSettingsPath">
<string>classpath:/org/exoplatform/container/definition/default-settings.properties</string>
</field>
</object>
</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>
-
- </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>
- 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>
-
- </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>
-
- </tbody>
-
- </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>
-
- </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>
+ <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.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>
+ </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>
+ </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>
+ </tbody>
+ </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>
+ </note>
+ <para>
+ A new <envar>PortalContainerDefinition</envar> can be defined at the <envar>RootContainer</envar> level thanks to an external plug-in, 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>
<component-plugin>
@@ -233,22 +191,22 @@
<init-params>
<object-param>
<name>portal</name>
- <object type="org.exoplatform.container.definition.PortalContainerDefinition">
+ <object type="org.exoplatform.container.definition.PortalContainerDefinition">
<!-- The name of the portal container -->
- <field name="name">
+ <field name="name">
<string>myPortal</string>
</field>
<!-- The name of the context name of the rest web application -->
- <field name="restContextName">
+ <field name="restContextName">
<string>myRest</string>
</field>
<!-- The name of the realm -->
- <field name="realmName">
+ <field name="realmName">
<string>my-domain</string>
</field>
<!-- All the dependencies of the portal container ordered by loading priority -->
- <field name="dependencies">
- <collection type="java.util.ArrayList">
+ <field name="dependencies">
+ <collection type="java.util.ArrayList">
<value>
<string>foo</string>
</value>
@@ -261,8 +219,8 @@
</collection>
</field>
<!-- A map of settings tied to the portal container -->
- <field name="settings">
- <map type="java.util.HashMap">
+ <field name="settings">
+ <map type="java.util.HashMap">
<entry>
<key>
<string>foo</string>
@@ -306,7 +264,7 @@
</map>
</field>
<!-- The path to the external properties file -->
- <field name="externalSettingsPath">
+ <field name="externalSettingsPath">
<string>classpath:/org/exoplatform/container/definition/settings.properties</string>
</field>
</object>
@@ -314,403 +272,264 @@
</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 PortalContainerDefinition 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> 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>
+ </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>
+ </itemizedlist>
- </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>
+ </para>
+ </listitem>
+ </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> 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>
+ </orderedlist>
- </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>
+ </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>
+ </orderedlist></entry>
+ </row>
+ </tbody>
+ </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>
+ </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>
+ </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 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.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>
+ </orderedlist></entry>
+ </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 and the parameter <emphasis>default.realm.name</emphasis> are both empty, the default value will be <emphasis>"exo-domain".</emphasis>
+ </para>
+ </listitem>
+ </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> 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>
+ </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>
+ </orderedlist>
- </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>
- 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>
-
- </itemizedlist>
-
- </para>
-
- </listitem>
-
- </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>
- 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>
-
- </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>
-
- </orderedlist>
-
- </entry>
-
- </row>
-
- </tbody>
-
- </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>
-
- </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>
-
- </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 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.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>
-
- </orderedlist>
-
- </entry>
-
- </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 and the parameter <emphasis>default.realm.name</emphasis> are both empty, the default value will be <emphasis>"exo-domain".</emphasis>
- </para>
-
- </listitem>
-
- </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>
- 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>
-
- </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>
-
- </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>
-
- </orderedlist>
-
- </entry>
-
- </row>
-
- </tbody>
-
- </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>
-
- </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>
- 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 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>
-
- </orderedlist>
-
- </listitem>
-
- </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>
-
- </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>
-
- </tbody>
-
- </tgroup>
-
- </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_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
- xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
+ </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>
+ </orderedlist></entry>
+ </row>
+ </tbody>
+ </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>
+ </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>
+ 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 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>
+ </orderedlist>
+ </listitem>
+ </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>
+ </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>
+ </tbody>
+ </tgroup>
+ </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_2.xsd http://www.exoplaform.org/xml/ns/kernel_1_2.xsd"
+ xmlns="http://www.exoplaform.org/xml/ns/kernel_1_2.xsd">
<component>
<type>org.exoplatform.container.TestPortalContainer$MyComponent</type>
<init-params>
@@ -740,39 +559,35 @@
</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 parameters. 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 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>
+ In the external and internal settings, you can also use create variables based on value of System parameters. 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 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>
-
- </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>
+ </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>
+ <programlisting language="XML" role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
<component-plugin>
@@ -794,10 +609,10 @@
</values-param>
<object-param>
<name>change</name>
- <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependencies">
+ <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependencies">
<!-- The list of name of the dependencies to add -->
- <field name="dependencies">
- <collection type="java.util.ArrayList">
+ <field name="dependencies">
+ <collection type="java.util.ArrayList">
<value>
<string>foo</string>
</value>
@@ -808,128 +623,93 @@
</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>
-
- </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>
- <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>
-
- </tbody>
-
- </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>
-
- </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 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 not <envar>null</envar>. The corresponding changes will be applied to the given list of specific portal containers.
- </para>
-
- </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>
-
- </row>
-
- </tbody>
-
- </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>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ <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.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 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 plug-in will be ignored. The supported implementations of PortalContainerDefinitionChange are described later in this section. </entry>
+ </row>
+ </tbody>
+ </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>
+ </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 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 not <envar>null</envar>. The corresponding changes will be applied to the given list of specific portal containers.
+ </para>
+ </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>
+ </row>
+ </tbody>
+ </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>
+ <programlisting language="XML" role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
<component-plugin>
@@ -946,10 +726,10 @@
</value-param>
<object-param>
<name>change</name>
- <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependencies">
+ <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependencies">
<!-- The list of name of the dependencies to add -->
- <field name="dependencies">
- <collection type="java.util.ArrayList">
+ <field name="dependencies">
+ <collection type="java.util.ArrayList">
<value>
<string>foo</string>
</value>
@@ -960,47 +740,33 @@
</init-params>
</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>
-
- </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>
-
- </tbody>
-
- </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>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ </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>
+ </tbody>
+ </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>
+ <programlisting language="XML" role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
<component-plugin>
@@ -1017,17 +783,17 @@
</value-param>
<object-param>
<name>change</name>
- <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependenciesBefore">
+ <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependenciesBefore">
<!-- The list of name of the dependencies to add -->
- <field name="dependencies">
- <collection type="java.util.ArrayList">
+ <field name="dependencies">
+ <collection type="java.util.ArrayList">
<value>
<string>foo</string>
</value>
</collection>
</field>
<!-- The name of the target dependency -->
- <field name="target">
+ <field name="target">
<string>foo2</string>
</field>
</object>
@@ -1035,47 +801,33 @@
</init-params>
</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>
-
- </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>
-
- </tbody>
-
- </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>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ </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>
+ </tbody>
+ </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>
+ <programlisting language="XML" role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
<component-plugin>
@@ -1092,17 +844,17 @@
</value-param>
<object-param>
<name>change</name>
- <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependenciesAfter">
+ <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddDependenciesAfter">
<!-- The list of name of the dependencies to add -->
- <field name="dependencies">
- <collection type="java.util.ArrayList">
+ <field name="dependencies">
+ <collection type="java.util.ArrayList">
<value>
<string>foo</string>
</value>
</collection>
</field>
<!-- The name of the target dependency -->
- <field name="target">
+ <field name="target">
<string>foo2</string>
</field>
</object>
@@ -1110,38 +862,29 @@
</init-params>
</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>
-
- </row>
-
- </tbody>
-
- </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>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ </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>
+ </tbody>
+ </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>
+ <programlisting language="XML" role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
<component-plugin>
@@ -1158,10 +901,10 @@
</value-param>
<object-param>
<name>change</name>
- <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddSettings">
+ <object type="org.exoplatform.container.definition.PortalContainerDefinitionChange$AddSettings">
<!-- The settings to add to the to the portal containers -->
- <field name="settings">
- <map type="java.util.HashMap">
+ <field name="settings">
+ <map type="java.util.HashMap">
<entry>
<key>
<string>string</string>
@@ -1185,22 +928,15 @@
</init-params>
</component-plugin>
</external-component-plugins></programlisting>
-
- </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>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ </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>
+ <programlisting language="XML" role="XML"><external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
<component-plugin>
@@ -1219,36 +955,26 @@
</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>
-
- </row>
-
- </tbody>
-
- </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>
-
- </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>
+ <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>
+ </tbody>
+ </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>
+ </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>
</filter>
@@ -1257,16 +983,10 @@
<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>
-
- </section>
-
-
+ <note>
+ <para>
+ It is only possible to disable a portal container when at least one PortalContainerDefinition has been registered.
+ </para>
+ </note>
+ </section>
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Config_Retrieval.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,81 +1,70 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Configuration_Retrieval">
- <title>Configuration Retrieval</title>
- <para>
- The container performs the following steps for configuration retrieval, depending on the container type.
- </para>
- <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>
- <procedure>
- <step>
- <para>
- Services default <envar>RootContainer</envar> configurations from JAR files <filename><replaceable><JBOSS_HOME></replaceable>/conf/gatein/configuration.xml</filename>.
- </para>
-
- </step>
- <step>
- <para>
- External <envar>RootContainer</envar> configuration can be found at <filename><replaceable><JBOSS_HOME></replaceable>/conf/gatein/configuration.xml</filename>.
- </para>
-
- </step>
- <step>
- <para>
- Services default <envar>PortalContainer</envar> configurations from JAR files <filename>/conf/portal/configuration.xml</filename>.
- </para>
-
- </step>
- <step>
- <para>
- Web applications configurations from WAR files <filename>/WEB-INF/conf/configuration.xml</filename>
- </para>
-
- </step>
- <step>
- <para>
- External configuration for services of named portal can be found at <filename><replaceable><JBOSS_HOME></replaceable>/conf/gatein/configuration.xml</filename>.
- </para>
-
- </step>
-
- </procedure>
-
- <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 (<filename>/conf/portal/configuration.xml</filename> and <filename>/conf/configuration.xml</filename>) 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 <filename>/conf/portal/configuration.xml</filename> of a given JAR file, you must not do it from the file <filename>/conf/portal/configuration.xml</filename> of another JAR file but from another configuration file loaded after configurations from JAR files <filename>/conf/portal/configuration.xml.</filename>
- </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>
- <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 <literal>org.exoplatform.container.configuration.debug</literal> can be used.
- </para>
-
-<programlisting>java -Dorg.exoplatform.container.configuration.debug ...</programlisting>
- <para>
- If the property is enabled, the container configuration manager will log the configuration adding process at <emphasis>INFO</emphasis> level.
- </para>
-
-<programlisting>......
+ <title>Configuration Retrieval</title>
+ <para>
+ The container performs the following steps for configuration retrieval, depending on the container type.
+ </para>
+ <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>
+ <procedure>
+ <step>
+ <para>
+ Services default <envar>RootContainer</envar> configurations from JAR files <filename><replaceable><JBOSS_HOME></replaceable>/conf/gatein/configuration.xml</filename>.
+ </para>
+ </step>
+ <step>
+ <para>
+ External <envar>RootContainer</envar> configuration can be found at <filename><replaceable><JBOSS_HOME></replaceable>/conf/gatein/configuration.xml</filename>.
+ </para>
+ </step>
+ <step>
+ <para>
+ Services default <envar>PortalContainer</envar> configurations from JAR files <filename>/conf/portal/configuration.xml</filename>.
+ </para>
+ </step>
+ <step>
+ <para>
+ Web applications configurations from WAR files <filename>/WEB-INF/conf/configuration.xml</filename>
+ </para>
+ </step>
+ <step>
+ <para>
+ External configuration for services of named portal can be found at <filename><replaceable><JBOSS_HOME></replaceable>/conf/gatein/configuration.xml</filename>.
+ </para>
+ </step>
+ </procedure>
+ <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 (<filename>/conf/portal/configuration.xml</filename> and <filename>/conf/configuration.xml</filename>) 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 <filename>/conf/portal/configuration.xml</filename> of a given JAR file, you must not do it from the file <filename>/conf/portal/configuration.xml</filename> of another JAR file but from another configuration file loaded after configurations from JAR files <filename>/conf/portal/configuration.xml.</filename>
+ </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>
+ <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 <literal>org.exoplatform.container.configuration.debug</literal> can be used.
+ </para>
+ <programlisting>java -Dorg.exoplatform.container.configuration.debug ...</programlisting>
+ <para>
+ If the property is enabled, the container configuration manager will log the configuration adding process at <emphasis>INFO</emphasis> level.
+ </para>
+ <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
Add configuration jndi:/localhost/portal/WEB-INF/conf/configuration.xml
@@ -84,10 +73,7 @@
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>
- 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>
-
+ <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 plug-in has been initialized.
+ </para>
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,72 +1,68 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Configuring_Services">
- <title>Configuring Services</title>
- <para>
+ <title>Configuring Services</title>
+ <para>
The eXo Kernel uses dependency injection to create services based on <filename>configuration.xml</filename> configuration files. The location of the configuration files determines if services are placed into the <literal>RootContainer</literal> scope, or into the <literal>PortalContainer</literal> scope.
</para>
- <para>
+ <para>
When creating a service, you also should declare its existence to the <emphasis role="bold">Container</emphasis>. This fan be done by creating a simple configuration file.
</para>
- <para>
+ <para>
Copy the following code to a <filename>configuration.xml</filename> file and save this file in a <filename>/conf</filename> subdirectory of your service base folder. The container looks for a <filename>/conf/configuration.xml</filename> file in each jar-file.
</para>
- <para>
+ <para>
All <filename>configuration.xml</filename> files located at <filename>conf/configuration.xml</filename> in the classpath (any directory, or any jar in the classpath) will have their services configured in the <literal>RootContainer</literal> scope.
</para>
- <para>
+ <para>
All <filename>configuration.xml</filename> files located at <filename>conf/portal/configuration.xml</filename> in the classpath will have their services configured at the <literal>PortalContainer</literal> scope.
</para>
- <para>
+ <para>
Additionally, <emphasis role="bold">portal extensions</emphasis> can use configuration information stored in <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/configuration.xml</filename>, and will also have their services configured in the <literal>PortalContainer</literal> scope.
</para>
- <para>
+ <para>
When eXo kernel reads a configuration, it loads the file from the kernel jar using the classloader and does not use an internet connection to resolve the file.
</para>
- <note>
- <para>
+ <note>
+ <para>
<emphasis role="bold">Portal extensions</emphasis> are described later in this document.
</para>
-
- </note>
- <section id="sect-Reference_Guide-Configuring_Services-Configuration_syntax">
- <title>Configuration syntax</title>
- <section id="sect-Reference_Guide-Configuration_syntax-Components">
- <title>Components</title>
- <para>
+ </note>
+ <section id="sect-Reference_Guide-Configuring_Services-Configuration_syntax">
+ <title>Configuration syntax</title>
+ <section id="sect-Reference_Guide-Configuration_syntax-Components">
+ <title>Components</title>
+ <para>
A service component is defined in <filename>configuration.xml</filename> by using a <emphasis role="bold"><component></emphasis> element.
</para>
- <para>
+ <para>
Only one piece of information is required when defining a service; the service implementation class. This is specified using <literal><type></literal>
</para>
- <para>
+ <para>
Every component has a <literal><key></literal> that identifies it. If not explicitly set, a key defaults to the value of <literal><type></literal>. If a key can be loaded as a class, a class object is used as a key, otherwise a string is used.
</para>
- <para>
+ <para>
The usual approach is to specify an interface as a key.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_Foundations/default.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- The configuration found inside the jar file is considered as the default configuration. If you want to override this default configuration you can do it in different places outside the jar. When the container finds several configurations for the same service, the configuration which is found later replaces completely the one found previously. Let's call this the <emphasis>configuration override mechanism</emphasis>.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default.xml" parse="text"/></programlisting>
+ <para>
+ The configuration found inside the jar file is considered as the default configuration. If you want to override this default configuration you can do it in different places outside the jar. When the container finds several configurations for the same service, the configuration which is found later replaces completely the one found previously. Let's call this the <emphasis>configuration override mechanism</emphasis>.
</para>
- <para>
- After deploying you find the configuration.xml file in webapps/portal/WEB-INF/conf Use component registration tags. Let's look at the key tag that defines the interface and the type tag that defines the implementation. Note that the key tag is not mandatory, but it improves performance.
+ <para>
+ After deploying you find the configuration.xml file in webapps/portal/WEB-INF/conf Use component registration tags. Let's look at the key tag that defines the interface and the type tag that defines the implementation. Note that the key tag is not mandatory, but it improves performance.
</para>
-
-<programlisting language="XML" role="XML"><!-- Portlet container hooks -->
+ <programlisting language="XML" role="XML"><!-- Portlet container hooks -->
<component>
<key>org.exoplatform.services.portletcontainer.persistence.PortletPreferencesPersister</key>
<type>org.exoplatform.services.portal.impl.PortletPreferencesPersisterImpl</type>
</component></programlisting>
- <para>
- Register plugins that can act as listeners or external plugin to bundle some plugin classes in other jar modules. The usual example is the hibernate service to which we can add hbm mapping files even if those are deployed in an other maven artifact.
+ <para>
+ Register plug-ins that can act as listeners or external plug-in to bundle some plug-in classes in other jar modules. The usual example is the hibernate service to which we can add hbm mapping files even if those are deployed in an other maven artifact.
</para>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ <programlisting language="XML" role="XML"><external-component-plugins>
<target-component>org.exoplatform.services.database.HibernateService</target-component>
<component-plugin>
<name>add.hibernate.mapping</name>
@@ -82,17 +78,16 @@
</init-params>
</component-plugin>
</external-component-plugins></programlisting>
- <para>
+ <para>
In that sample we target the HibernateService and we will call its addPlugin() method with an argument of the type AddHibernateMappingPlugin. That object will first have been filled with the init parameters.
</para>
- <para>
- Therefore, it is possible to define services that will be able to receive plugins without implementing any framework interface.
+ <para>
+ Therefore, it is possible to define services that will be able to receive plug-ins without implementing any framework interface.
</para>
- <para>
+ <para>
Another example of use is the case of listeners as in the following code where a listener is added to the OrganisationService and will be called each time a new user is created:
</para>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ <programlisting language="XML" role="XML"><external-component-plugins>
<target-component>org.exoplatform.services.organization.OrganizationService</target-component>
<component-plugin>
<name>portal.new.user.event.listener</name>
@@ -103,9 +98,9 @@
<object-param>
<name>configuration</name>
<description>description</description>
- <object type="org.exoplatform.services.portal.impl.NewPortalConfig">
- <field name="predefinedUser">
- <collection type="java.util.HashSet">
+ <object type="org.exoplatform.services.portal.impl.NewPortalConfig">
+ <field name="predefinedUser">
+ <collection type="java.util.HashSet">
<value><string>admin</string></value>
<value><string>exo</string></value>
<value><string>company</string></value>
@@ -114,248 +109,215 @@
<value><string>exotest</string></value>
</collection>
</field>
- <field name="templateUser"><string>template</string></field>
- <field name="templateLocation"><string>war:/conf/users</string></field>
+ <field name="templateUser"><string>template</string></field>
+ <field name="templateLocation"><string>war:/conf/users</string></field>
</object>
</object-param>
</init-params>
</component-plugin>
...</programlisting>
- <para>
+ <para>
In the previous XML configuration, we refer the organization service and we will call its method addListenerPlugin with an object of type PortalUserEventListenerImpl. Each time a new user will be created (apart the predefined ones in the list above) methods of the PortalUserEventListenerImpl will be called by the service.
</para>
- <para>
+ <para>
As you can see, there are several types of init parameters, from a simple value param which binds a key with a value to a more complex object mapping that fills a JavaBean with the info defined in the XML.
</para>
- <para>
+ <para>
Many other examples exist such as for the Scheduler Service where you can add a job with a simple XML configuration or the JCR Service where you can add a NodeType from your own configuration.xml file.
</para>
- <section id="sect-Reference_Guide-Components-RootContainer">
- <title>RootContainer</title>
- <para>
+ <section id="sect-Reference_Guide-Components-RootContainer">
+ <title>RootContainer</title>
+ <para>
As PortalContainer depends on the RootContainer, we will start by looking into this one.
</para>
- <para>
+ <para>
The retrieval sequence in short:
</para>
- <orderedlist>
- <listitem>
- <para>
+ <orderedlist>
+ <listitem>
+ <para>
Services default <classname>RootContainer</classname> configurations from JAR files <emphasis>/conf/configuration.xml</emphasis>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
External <classname>RootContainer</classname> configuration, to be found at <emphasis>exo-tomcat/exo-conf/configuration.xml</emphasis>
</para>
-
- </listitem>
-
- </orderedlist>
- <note>
- <para>
+ </listitem>
+ </orderedlist>
+ <note>
+ <para>
Naturally you always have to replace <parameter>exo-tomcat</parameter> by your own folder name.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
<emphasis role="bold">HashTable</emphasis> The <classname>RootContainer</classname> creates a java <classname>HashTable</classname> which contains key-value pairs for the services. The qualified interface name of each service is used as key for the hashtable. Hopefully you still remember that the <parameter><key></parameter> tag of the configuration file contains the interface name? The value of each hashtable pair is an object that contains the service configuration (yes, this means the whole structure between the <parameter><component></parameter> tags of your <filename>configuration.xml</filename> file).
</para>
- <para>
+ <para>
The <classname>RootContainer</classname> runs over all jar files you find in <emphasis>exo-tomcat/lib</emphasis> and looks if there is a configuration file at <emphasis>/conf/configuration.xml</emphasis>, the services configured in this file are added to the hashtable. That way - at the end of this process - the default configurations for all services are stored in the hashtable.
</para>
- <note>
- <para>
+ <note>
+ <para>
What happens if the same service - recognized by the same qualified interface name - is configured in different jars? As the service only can exist one time the configuration of the jar found later overrides the previous configuration. You know that the loading <emphasis role="bold">order of the jars is unpredictable</emphasis> you <emphasis role="bold">must not depend on this</emphasis>.
</para>
-
- </note>
- <para>
- If you wish to provide your own configurations for one or several services, you can do it in a general configuration file that has to be placed at <emphasis>exo-tomcat/exo-conf/configuration.xml</emphasis>. Do not search for such a file on your computer - you won't find one, because this option is not used in the default installation. Here again the same rule applies: <emphasis>The posterior configuration replaces the previous one</emphasis>.
+ </note>
+ <para>
+ If you wish to provide your own configurations for one or several services, you can do it in a general configuration file that has to be placed at <emphasis>exo-tomcat/exo-conf/configuration.xml</emphasis>. Do not search for such a file on your computer - you won't find one, because this option is not used in the default installation. Here again the same rule applies: <emphasis>The posterior configuration replaces the previous one</emphasis>.
</para>
- <para>
+ <para>
The further configuration retrieval depends on the container type.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Components-PortalContainer">
- <title>PortalContainer</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Components-PortalContainer">
+ <title>PortalContainer</title>
+ <para>
The PortalContainer takes the hashtable filled by the RootContainer and continues to look in some more places. Here you get the opportunity to replace RootContainer configurations by those which are specific to your portal. Again, the configurations are overridden whenever necessary.
</para>
- <para>
+ <para>
In short PortalContainer configurations are retrieved in the following lookup sequence :
</para>
- <orderedlist>
- <listitem>
- <para>
+ <orderedlist>
+ <listitem>
+ <para>
Take over the configurations of the RootContainer
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Default PortalContainer configurations from all JAR files (folder <emphasis>/conf/portal/configuration.xml</emphasis>)
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Web application configurations from the portal.war file - or the <emphasis>portal</emphasis> weppapp (folder <emphasis>/WEB-INF/conf/configuration.xml</emphasis>)
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
External configuration for services of a named portal, it will be found at <emphasis>exo-tomcat/exo-conf/portal/$portal_name/configuration.xml</emphasis> (as of Portal 2.5)
</para>
-
- </listitem>
-
- </orderedlist>
- <para>
+ </listitem>
+ </orderedlist>
+ <para>
You see, here the <emphasis>/conf/portal/configuration.xml</emphasis> file of each jar enters the game, they are searched at first. Next, there is nearly always a configuration.xml in the portal.war file (or in the portal webapp folder), you find this file at <emphasis>/WEB-INF/conf/configuration.xml</emphasis>. If you open it, you will find a lot of import statements that point to other configuration files in the same portal.war (or portal webapp).
</para>
- <para>
- <emphasis role="bold">Multiple Portals</emphasis> Be aware that you might set up several different portals ("admin", "mexico", etc.), and each of these portals will use a different PortalContainer. And each of these PortalContainers can be configured separately. As of JBoss Enterprise Portal Platform &VY; you also will be able to provide configurations from outside the jars and wars or webapps. Put a configuration file in <emphasis>exo-tomcat/exo-conf/portal/$portal_name/configuration.xml</emphasis> where <parameter>$portal_name</parameter> is the name of the portal you want to configure for . But normally you only have one portal which is called "portal" so you use <emphasis>exo-tomcat/exo-conf/portal/portal/configuration.xml</emphasis>.
+ <para>
+ <emphasis role="bold">Multiple Portals</emphasis> Be aware that you might set up several different portals ("admin", "mexico", etc.), and each of these portals will use a different PortalContainer. And each of these PortalContainers can be configured separately. As of JBoss Enterprise Portal Platform &VY; you also will be able to provide configurations from outside the jars and wars or webapps. Put a configuration file in <emphasis>exo-tomcat/exo-conf/portal/$portal_name/configuration.xml</emphasis> where <parameter>$portal_name</parameter> is the name of the portal you want to configure for . But normally you only have one portal which is called "portal" so you use <emphasis>exo-tomcat/exo-conf/portal/portal/configuration.xml</emphasis>.
</para>
- <note>
- <para>
+ <note>
+ <para>
As of JBoss Enterprise Portal Platform &VY; you can override the external configuration location with the system property <emphasis>exo.conf.dir</emphasis>. If the property exists its value will be used as path to the eXo configuration directory, that means this is an alternative to <emphasis>exo-tomcat/exo-conf</emphasis>. Just put this property in the command line: <emphasis>java -Dexo.conf.dir=/path/to/exo/conf</emphasis> or use eXo.bat or eXo.sh. In this particular use case, you have no need to use any prefixes in your configuration file to import other files. For example, if your configuration file is <emphasis>exo-tomcat/exo-conf/portal/PORTAL_NAME/configuration.xml</emphasis> and you want to import the configuration file <emphasis>exo-tomcat/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>
+ </note>
+ <note>
+ <para>
Under <emphasis role="bold">JBoss</emphasis> application server <emphasis>exo-conf</emphasis> will be looked up in directory described by JBoss System property <emphasis>jboss.server.config.url</emphasis>. If the property is not found or empty <emphasis>exo-jboss/exo-conf</emphasis> will be asked (since kernel 2.0.4).
</para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-Components-External_Plug_ins">
- <title>External Plug-ins</title>
- <para>
- The eXo Kernel supports non-component objects that can be configured, instantiated, and injected into registered components using method calls. This '<emphasis>plugin</emphasis>' method allows portal extensions to add additional configurations to core services.
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Components-External_Plug_ins">
+ <title>External Plug-ins</title>
+ <para>
+ The eXo Kernel supports non-component objects that can be configured, instantiated, and injected into registered components using method calls. This '<emphasis>plugin</emphasis>' method allows portal extensions to add additional configurations to core services.
</para>
- <para>
- An external plugin is defined by using the <literal><external-component-plugin></literal> wrapper element which contains one or more <literal><component-plugin></literal> definitions.
+ <para>
+ An external plug-in is defined by using the <literal><external-component-plugin></literal> wrapper element which contains one or more <literal><component-plugin></literal> definitions.
</para>
- <para>
+ <para>
The <literal><external-component-plugin></literal> element uses <literal><target-component></literal> to specify a target service component that will receive injected objects.
</para>
- <para>
+ <para>
Every <literal><component-plugin></literal> defines an implementation type, and a method on the target component to use for injection (<literal><set-method></literal>).
</para>
- <para>
- A plugin implementation class has to implement the <emphasis role="bold">org.exoplatform.container.component. ComponentPlugin</emphasis> interface.
+ <para>
+ A plug-in implementation class has to implement the <emphasis role="bold">org.exoplatform.container.component. ComponentPlugin</emphasis> interface.
</para>
- <para>
+ <para>
In the following example the <literal>PortalContainerDefinitionPlugin</literal> implements the <literal>ComponentPlugin</literal>:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_Foundations/default1.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- The <emphasis role="bold"><target-component></emphasis> defines the service for which the plugin is defined. The configuration is injected by the container using a method that is defined in <emphasis role="bold"><set-method></emphasis>. The method has exactly one argument of the type org.exoplatform.services.cms.categories.impl.TaxonomyPlugin:
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default1.xml" parse="text"/></programlisting>
+ <para>
+ The <emphasis role="bold"><target-component></emphasis> defines the service for which the plug-in is defined. The configuration is injected by the container using a method that is defined in <emphasis role="bold"><set-method></emphasis>. The method has exactly one argument of the type org.exoplatform.services.cms.categories.impl.TaxonomyPlugin:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
addTaxonomyPlugin(org.exoplatform.services.cms.categories.impl.TaxonomyPlugin plugin)
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
The content of <emphasis role="bold"><init-params></emphasis> corresponds to the structure of the TaxonomyPlugin object.
</para>
- <note>
- <para>
+ <note>
+ <para>
You can configure the component CategoriesService using the addTaxonomyPlugin as often as you wish, you can also call addTaxonomyPlugin in different configuration files. The method addTaxonomyPlugin is then called several times, everything else depends on the implementation of the method.
</para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-Components-Service_instantiation">
- <title>Service instantiation</title>
- <para>
- As you have already learned the services are all singletons, so that the container creates only one single instance of each container. The services are created by calling the constructors (called <emphasis>constructor injection</emphasis>). If there are only zero-arguments constructors (<code>Foo public Foo(){}</code>) there are no problems to be expected. That's easy.
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Components-Service_instantiation">
+ <title>Service instantiation</title>
+ <para>
+ As you have already learned the services are all singletons, so that the container creates only one single instance of each container. The services are created by calling the constructors (called <emphasis>constructor injection</emphasis>). If there are only zero-arguments constructors (<code>Foo public Foo(){}</code>) there are no problems to be expected. That's easy.
</para>
- <para>
+ <para>
But now look at <ulink url="https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...">https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.org...</ulink>
</para>
- <para>
+ <para>
This JDBC implementation of BaseOrganizationService interface has only one constructor:
</para>
-
-<programlisting language="Java" role="Java">public OrganizationServiceImpl(ListenerService listenerService, DatabaseService dbService);</programlisting>
- <para>
+ <programlisting language="Java" role="Java">public OrganizationServiceImpl(ListenerService listenerService, DatabaseService dbService);</programlisting>
+ <para>
You see this service depends on two other services. In order to be able to call this constructor the container first needs a <classname>ListenerService</classname> and a <classname>DatabaseService</classname>. Therefore these services must be instantiated before <classname>BaseOrganizationService</classname>, because <classname>BaseOrganizationService</classname> depends on them.
</para>
- <para>
+ <para>
For this purpose the container first looks at the constructors of all services and creates a matrix of service dependencies in order to call the services in a proper order. If for any reason there are interdependencies or circular dependencies you will get a java <classname>Exception</classname>. <emphasis>In this way the dependencies are injected by the container</emphasis>.
</para>
- <note>
- <para>
+ <note>
+ <para>
What happens if one service has more than one constructor? The container always tries first to use the constructor with a maximum of arguments, if this is not possible the container continues step by step with constructors that have less arguments until arriving at the zero-argument constructor (if there is one).
</para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-Components-Service_Access">
- <title>Service Access</title>
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Components-Service_Access">
+ <title>Service Access</title>
+ <para>
As you want to follow the principle of <emphasis role="bold">Inversion of Control,</emphasis> you <emphasis role="bold">must not</emphasis> access the service directly. You need a <emphasis role="bold">Container</emphasis> to access the service.
</para>
- <para>
+ <para>
With this command you get your current container:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<emphasis role="bold">ExoContainer myContainer = ExoContainerContext.getCurrentContainer();</emphasis>
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
Whenever you need one of the services that you have configured use the method:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<emphasis role="bold">myContainer.getComponentInstance(class)</emphasis>
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
In our case:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<emphasis role="bold">ArticleStatsService statsService = (ArticleStatsService) myContainer.getComponentInstance(ArticleStatsService.class);</emphasis>
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
Recapitulation:
</para>
-
-<programlisting language="Java" role="Java">package com.laverdad.common;
+ <programlisting language="Java" role="Java">package com.laverdad.common;
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
@@ -373,175 +335,149 @@
public static void main( String args[]) {
Statistics stats = new Statistics();
- String newText = "This is a normal text. The method only counts the number of periods. "
- + "You can implement your own implementation with a more exact counting. "
- + "Let`s make a last sentence.";
- System.out.println("Number of sentences: " + stats.makeStatistics(newText));
+ String newText = "This is a normal text. The method only counts the number of periods. "
+ + "You can implement your own implementation with a more exact counting. "
+ + "Let`s make a last sentence.";
+ System.out.println("Number of sentences: " + stats.makeStatistics(newText));
}
}</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Components-Includes_and_special_URLs">
- <title>Includes, and special URLs</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Components-Includes_and_special_URLs">
+ <title>Includes, and special URLs</title>
+ <para>
It is possible to divide the <filename>configuration.xml</filename> file into many smaller files, which are then included into the main configuration file.
</para>
- <para>
+ <para>
The included files must be valid xml files; they cannot be fragments of text.
</para>
- <para>
- Below is an example <filename>configuration.xml</filename> that 'outsources' its content into several files:
+ <para>
+ Below is an example <filename>configuration.xml</filename> that 'outsources' its content into several files:
</para>
- <programlistingco>
- <areaspec>
- <area coords="6" id="area-Reference_Guide-Components-Includes_and_special_URLs-url_schema" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_Foundations/default2.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Components-Includes_and_special_URLs-url_schema">
- <para>
- This line is being used to reference another configuration file. The <code>war:</code> URL schema indicates that the following path is to be resolved relative to the current <literal>PortalContainer</literal>'s servlet context resource path, starting with <emphasis role="bold">WEB-INF</emphasis> as a root.
+ <programlistingco>
+ <areaspec>
+ <area coords="6" id="area-Reference_Guide-Components-Includes_and_special_URLs-url_schema"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default2.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Components-Includes_and_special_URLs-url_schema">
+ <para>
+ This line is being used to reference another configuration file. The <code>war:</code> URL schema indicates that the following path is to be resolved relative to the current <literal>PortalContainer</literal>'s servlet context resource path, starting with <emphasis role="bold">WEB-INF</emphasis> as a root.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <note>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <note>
+ <para>
The current <literal>PortalContainer</literal> is really a newly created <literal>PortalContainer</literal>, as <code>war:</code> URLs only make sense for <literal>PortalContainer</literal> scoped configuration.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
Through the extension mechanism the servlet context used for resource loading is a <emphasis role="bold">unified servlet context</emphasis> (this is explained in a later section).
</para>
- <para>
- To have an 'include' path resolved relative to current classpath (context classloader), use a <code>'jar:'</code> URL schema.
+ <para>
+ To have an 'include' path resolved relative to current classpath (context classloader), use a <code>'jar:'</code> URL schema.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Components-Special_variables">
- <title>Special variables</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Components-Special_variables">
+ <title>Special variables</title>
+ <para>
Configuration files may contain a <emphasis role="bold">special variable</emphasis> reference <emphasis>${container.name.suffix}</emphasis>. This variable resolves to the name of the current portal container, prefixed by underscore (_).
</para>
- <para>
+ <para>
This facilitates reuse of configuration files in situations where portal-specific unique names need to be assigned to some resources; JNDI names, Database/DataSource names and JCR repository names, for example.
</para>
- <para>
+ <para>
This variable is only defined when there is a current <literal>PortalContainer</literal> available and is only available for <literal>PortalContainer</literal> scoped services.
</para>
- <para>
+ <para>
A good example of this is the <emphasis role="bold">HibernateService</emphasis>:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_Foundations/default3.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Configuration_syntax-InitParams_configuration_element">
- <title>InitParams configuration element</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default3.xml" parse="text"/></programlisting>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Configuration_syntax-InitParams_configuration_element">
+ <title>InitParams configuration element</title>
+ <para>
<parameter>InitParams</parameter> is a configuration element that is essentially a map of key-value pairs, where <emphasis role="bold">key</emphasis> is always a <literal>String</literal>, and <emphasis role="bold">value</emphasis> can be any type that can be described using the kernel XML configuration.
</para>
- <para>
+ <para>
Service components that form the JBoss Enterprise Portal Platform infrastructure use <parameter>InitParams</parameter> elements to configure themselves. A component can have one instance of <parameter>InitParams</parameter> injected at most.
</para>
- <para>
- If the service component's constructor takes <parameter>InitParams</parameter> as any of the parameters it will automatically be injected at component instantiation time.
+ <para>
+ If the service component's constructor takes <parameter>InitParams</parameter> as any of the parameters it will automatically be injected at component instantiation time.
</para>
- <para>
+ <para>
The XML configuration for a service component that expects an <parameter>InitParams</parameter> element must have an <parameter><init-params></parameter> element present, however this element can be left empty.
</para>
- <para>
+ <para>
Below is an example of how the kernel XML configuration syntax looks when creating <parameter>InitParams</parameter> instances:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_Foundations/default4.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default4.xml" parse="text"/></programlisting>
+ <para>
An <parameter>InitParams</parameter> element description begins with an <parameter><init-params></parameter> element.
</para>
- <para>
+ <para>
It can have zero or more children elements, each of which is one of the following:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<parameter><value-param></parameter>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter><values-param></parameter>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter><properties-param></parameter>
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
or
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<parameter><object-param></parameter>
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
Each of these child elements takes a <parameter><name></parameter> that serves as a map entry key, and an optional <parameter><description></parameter>. It also takes a type-specific <emphasis role="bold">value</emphasis> specification.
</para>
- <para>
+ <para>
The value specification for the <parameter><properties-param></parameter> defines one or more <parameter><property></parameter> elements, each of which specifies two strings; a property name and a property value. This is evident in the two previous examples.
</para>
- <para>
+ <para>
Each <parameter><properties-params></parameter> defines one <literal>java.util.Properties</literal> instance.
</para>
- <para>
+ <para>
The value specification for <parameter><value-param></parameter> elements is a <parameter><value></parameter> element which defines a <literal>String</literal> instance.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_Foundations/default5.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default5.xml" parse="text"/></programlisting>
+ <para>
The value specification for <parameter><values-param></parameter> requires one or more <parameter><value></parameter> elements. Each <parameter><value></parameter> represents one <literal>String</literal> instance. All <literal>String</literal> values are then collected into a <literal>java.util.List</literal> instance.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_Foundations/default6.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_Foundations/default6.xml" parse="text"/></programlisting>
+ <para>
For <parameter><object-param></parameter> entries, the value specification consists of an <parameter><object></parameter> element which is used for plain Java style object specification (specifying an implementation <emphasis>class - <parameter><type></parameter></emphasis>, and <emphasis>property values - <parameter><field></parameter></emphasis>).
</para>
- <para>
+ <para>
The following section has an example of specifying a field of with a <literal>Collection</literal> type.
</para>
- <para>
- The <parameter>InitParams</parameter> structure (the names and types of entries) is specific for each service, as it is the code inside a service components' class that defines which entry names to look up and what types it expects to find.
+ <para>
+ The <parameter>InitParams</parameter> structure (the names and types of entries) is specific for each service, as it is the code inside a service components' class that defines which entry names to look up and what types it expects to find.
</para>
- <section id="sect-Reference_Guide-InitParams_configuration_element-Value_Param">
- <title>Value-Param</title>
- <para>
+ <section id="sect-Reference_Guide-InitParams_configuration_element-Value_Param">
+ <title>Value-Param</title>
+ <para>
There is an value-param example:
</para>
-
-<programlisting language="XML" role="XML"> <component>
+ <programlisting language="XML" role="XML"> <component>
<key>org.exoplatform.portal.config.UserACL</key>
<type>org.exoplatform.portal.config.UserACL</type>
<init-params>
@@ -553,148 +489,133 @@
</value-param>
...
</component></programlisting>
- <para>
+ <para>
The UserACL class accesses to the <emphasis role="bold">value-param</emphasis> in its constructor.
</para>
-
-<programlisting language="Java" role="Java">package org.exoplatform.portal.config;
+ <programlisting language="Java" role="Java">package org.exoplatform.portal.config;
public class UserACL {
public UserACL(InitParams params) {
UserACLMetaData md = new UserACLMetaData();
- ValueParam accessControlWorkspaceParam = params.getValueParam("access.control.workspace");
+ ValueParam accessControlWorkspaceParam = params.getValueParam("access.control.workspace");
if(accessControlWorkspaceParam != null) md.setAccessControlWorkspace(accessControlWorkspaceParam.getValue());
...</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-InitParams_configuration_element-Properties_Param">
- <title>Properties-Param</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-InitParams_configuration_element-Properties_Param">
+ <title>Properties-Param</title>
+ <para>
Properties are name-value pairs. Both the name and the value are Java Strings.
</para>
- <para>
+ <para>
Here you see the hibernate configuration example:
</para>
-
-<programlisting language="XML" role="XML"> <component>
+ <programlisting language="XML" role="XML"> <component>
<key>org.exoplatform.services.database.HibernateService</key>
<type>org.exoplatform.services.database.impl.HibernateServiceImpl</type>
<init-params>
<properties-param>
<name>hibernate.properties</name>
<description>Default Hibernate Service</description>
- <property name="hibernate.show_sql" value="false"/>
- <property name="hibernate.cglib.use_reflection_optimizer" value="true"/>
- <property name="hibernate.connection.url" value="jdbc:hsqldb:file:../temp/data/exodb"/>
- <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
+ <property name="hibernate.show_sql" value="false"/>
+ <property name="hibernate.cglib.use_reflection_optimizer" value="true"/>
+ <property name="hibernate.connection.url" value="jdbc:hsqldb:file:../temp/data/exodb"/>
+ <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
...
</properties-param>
</init-params>
</component></programlisting>
- <para>
- In the org.exoplatform.services.database.impl.HibernateServiceImpl you will find that the name "hibernate.properties" of the properties-param is used to access the properties.
+ <para>
+ In the org.exoplatform.services.database.impl.HibernateServiceImpl you will find that the name "hibernate.properties" of the properties-param is used to access the properties.
</para>
-
-<programlisting language="Java" role="Java">package org.exoplatform.services.database.impl;
+ <programlisting language="Java" role="Java">package org.exoplatform.services.database.impl;
public class HibernateServiceImpl implements HibernateService, ComponentRequestLifecycle {
public HibernateServiceImpl(InitParams initParams, CacheService cacheService) {
- PropertiesParam param = initParams.getPropertiesParam("hibernate.properties");
+ PropertiesParam param = initParams.getPropertiesParam("hibernate.properties");
...
}</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-InitParams_configuration_element-Object_Param">
- <title>Object-Param</title>
- <para>
- Let's have a look at the configuration of the LDAPService. It's not important to know LDAP, we only discuss the parameters.
+ </section>
+ <section id="sect-Reference_Guide-InitParams_configuration_element-Object_Param">
+ <title>Object-Param</title>
+ <para>
+ Let's have a look at the configuration of the LDAPService. It's not important to know LDAP, we only discuss the parameters.
</para>
-
-<programlisting language="XML" role="XML"><component>
+ <programlisting language="XML" role="XML"><component>
<key>org.exoplatform.services.LDAP.LDAPService</key>
<type>org.exoplatform.services.LDAP.impl.LDAPServiceImpl</type>
<init-params>
<object-param>
<name>LDAP.config</name>
<description>Default LDAP config</description>
- <object type="org.exoplatform.services.LDAP.impl.LDAPConnectionConfig">
- <field name="providerURL"><string>LDAPs://10.0.0.3:636</string></field>
- <field name="rootdn"><string>CN=Administrator,CN=Users,DC=exoplatform,DC=org</string></field>
- <field name="password"><string>exo</string></field>
- <field name="version"><string>3</string></field>
- <field name="minConnection"><int>5</int></field>
- <field name="maxConnection"><int>10</int></field>
- <field name="referralMode"><string>ignore</string></field>
- <field name="serverName"><string>active.directory</string></field>
+ <object type="org.exoplatform.services.LDAP.impl.LDAPConnectionConfig">
+ <field name="providerURL"><string>LDAPs://10.0.0.3:636</string></field>
+ <field name="rootdn"><string>CN=Administrator,CN=Users,DC=exoplatform,DC=org</string></field>
+ <field name="password"><string>exo</string></field>
+ <field name="version"><string>3</string></field>
+ <field name="minConnection"><int>5</int></field>
+ <field name="maxConnection"><int>10</int></field>
+ <field name="referralMode"><string>ignore</string></field>
+ <field name="serverName"><string>active.directory</string></field>
</object>
</object-param>
</init-params>
</component></programlisting>
- <para>
+ <para>
You see here an <emphasis role="bold">object-param</emphasis> is being used to pass the parameters inside an object (actually a java bean). It consists of a <emphasis role="bold">name</emphasis>, a <emphasis role="bold">description</emphasis> and exactly one <emphasis role="bold">object</emphasis>. The object defines the <emphasis role="bold">type</emphasis> and a number of <emphasis role="bold">fields</emphasis>.
</para>
- <para>
+ <para>
Here you see how the service accesses the object:
</para>
-
-<programlisting language="Java" role="Java">package org.exoplatform.services.LDAP.impl;
+ <programlisting language="Java" role="Java">package org.exoplatform.services.LDAP.impl;
public class LDAPServiceImpl implements LDAPService {
...
public LDAPServiceImpl(InitParams params) {
- LDAPConnectionConfig config = (LDAPConnectionConfig) params.getObjectParam("LDAP.config")
+ LDAPConnectionConfig config = (LDAPConnectionConfig) params.getObjectParam("LDAP.config")
.getObject();
...</programlisting>
- <para>
+ <para>
The passed object is LDAPConnectionConfig which is a classic <emphasis role="bold">java bean</emphasis>. It contains all fields and also the appropriate getters and setters (not listed here). You also can provide default values. The container creates a new instance of your bean and calls all setters whose values are configured in the configuration file.
</para>
-
-<programlisting language="Java" role="Java">package org.exoplatform.services.LDAP.impl;
+ <programlisting language="Java" role="Java">package org.exoplatform.services.LDAP.impl;
public class LDAPConnectionConfig {
- private String providerURL = "LDAP://127.0.0.1:389";
+ private String providerURL = "LDAP://127.0.0.1:389";
private String rootdn;
private String password;
private String version;
- private String authenticationType = "simple";
- private String serverName = "default";
+ private String authenticationType = "simple";
+ private String serverName = "default";
private int minConnection;
private int maxConnection;
- private String referralMode = "follow";
+ private String referralMode = "follow";
...</programlisting>
- <para>
+ <para>
You see that the types (String, int) of the fields in the configuration correspond with the bean. A short glance in the kernel_1_2.xsd file let us discover more simple types:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<emphasis role="bold">string, int, long, boolean, date, double</emphasis>
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
Have a look on this type test xml file: <ulink url="https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...">https://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk/exo.kernel.container...</ulink>.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-InitParams_configuration_element-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 will see that object-param is used again.
+ </section>
+ <section id="sect-Reference_Guide-InitParams_configuration_element-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 will see that object-param is used again.
</para>
- <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.
</para>
- <para>
+ <para>
The second collection is a <emphasis role="bold">HashSet</emphasis> that is a set of strings.
</para>
-
-<programlisting language="XML" role="XML"> <component-plugin>
+ <programlisting language="XML" role="XML"> <component-plugin>
<name>new.user.event.listener</name>
<set-method>addListenerPlugin</set-method>
<type>org.exoplatform.services.organization.impl.NewUserEventListener</type>
@@ -703,19 +624,19 @@
<object-param>
<name>configuration</name>
<description>description</description>
- <object type="org.exoplatform.services.organization.impl.NewUserConfig">
- <field name="group">
- <collection type="java.util.ArrayList">
+ <object type="org.exoplatform.services.organization.impl.NewUserConfig">
+ <field name="group">
+ <collection type="java.util.ArrayList">
<value>
- <object type="org.exoplatform.services.organization.impl.NewUserConfig$JoinGroup">
- <field name="groupId"><string>/platform/users</string></field>
- <field name="membership"><string>member</string></field>
+ <object type="org.exoplatform.services.organization.impl.NewUserConfig$JoinGroup">
+ <field name="groupId"><string>/platform/users</string></field>
+ <field name="membership"><string>member</string></field>
</object>
</value>
</collection>
</field>
- <field name="ignoredUser">
- <collection type="java.util.HashSet">
+ <field name="ignoredUser">
+ <collection type="java.util.HashSet">
<value><string>root</string></value>
<value><string>john</string></value>
<value><string>marry</string></value>
@@ -727,11 +648,10 @@
</object-param>
</init-params>
</component-plugin></programlisting>
- <para>
- Let's look at the org.exoplatform.services.organization.impl.NewUserConfig bean:
+ <para>
+ Let's look at the org.exoplatform.services.organization.impl.NewUserConfig bean:
</para>
-
-<programlisting language="Java" role="Java">public class NewUserConfig {
+ <programlisting language="Java" role="Java">public class NewUserConfig {
private List role;
private List group;
private HashSet ignoredUser;
@@ -748,28 +668,23 @@
public String membership;
...
}</programlisting>
- <para>
- You see the values of the HashSet are set one by one by the container, and it's the responsibility of the bean to add these values to its HashSet.
+ <para>
+ You see the values of the HashSet are set one by one by the container, and it's the responsibility of the bean to add these values to its HashSet.
</para>
- <para>
+ <para>
The JoinGroup object is just an inner class and implements a bean of its own. It can be accessed like any other inner class using NewUserConfig.JoinGroup.
</para>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Configuration_syntax-Component_Plugin_Priority">
- <title>Component Plugin Priority</title>
- <para>
- Since kernel version 2.0.6 it is possible to setup order of loading for ComponentPlugin. Use the ' <emphasis role="bold">priority</emphasis>' tag to define plugin's load priority. By <emphasis role="bold">default</emphasis> all plugins get <emphasis role="bold">priority '0'</emphasis>; they will be loaded in the container's natural way. If you want one plugin to be loaded later than the others then just set priority for it <emphasis role="bold">higher than zero</emphasis>.
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Configuration_syntax-Component_Plugin_Priority">
+ <title>Component Plug-in Priority</title>
+ <para>
+ Since kernel version 2.0.6 it is possible to setup order of loading for ComponentPlugin. Use the ' <emphasis role="bold">priority</emphasis>' tag to define plug-in's load priority. By <emphasis role="bold">default</emphasis> all plug-ins get <emphasis role="bold">priority '0'</emphasis>; they will be loaded in the container's natural way. If you want one plug-in to be loaded later than the others then just set priority for it <emphasis role="bold">higher than zero</emphasis>.
</para>
- <para>
+ <para>
Simple example of fragment of a <emphasis role="bold">configuration.xml</emphasis>.
</para>
-
-<programlisting language="XML" role="XML">...
+ <programlisting language="XML" role="XML">...
<component>
<type>org.exoplatform.services.Component1</type>
</component>
@@ -805,88 +720,73 @@
</component-plugin>
</external-component-plugins>
...</programlisting>
- <para>
- In the above example plugin 'Plugin3' will be loaded first because it has the default priority '0'. Then, plugin 'Plugin1' will be loaded and last one is plugin 'Plugin2'.
+ <para>
+ In the above example plug-in 'Plugin3' will be loaded first because it has the default priority '0'. Then, plug-in 'Plugin1' will be loaded and last one is plug-in 'Plugin2'.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Configuration_syntax-Configuration_Logging">
- <title>Configuration Logging</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Configuration_syntax-Configuration_Logging">
+ <title>Configuration Logging</title>
+ <para>
In case you need to solve problems with your service configuration, you have to know from which JAR/WAR causes your troubles. Add the JVM system property <parameter>org.exoplatform.container.configuration.debug</parameter> to your eXo.bat or eXo.sh file (exo-tomcat/bin/).
</para>
-
-<programlisting>set EXO_CONFIG_OPTS="-Dorg.exoplatform.container.configuration.debug"</programlisting>
- <para>
+ <programlisting>set EXO_CONFIG_OPTS="-Dorg.exoplatform.container.configuration.debug"</programlisting>
+ <para>
If this property is set the container configuration manager reports during startup the configuration retrieval process to the standard output (System.out).
</para>
-
-<programlisting>......
+ <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
Add configuration jndi:/localhost/portal/WEB-INF/conf/configuration.xml import jndi:/localhost/portal/WEB-INF/conf/common/common-configuration.xml
import jndi:/localhost/portal/WEB-INF/conf/database/database-configuration.xml 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>
-
- </section>
-
- <section id="sect-Reference_Guide-Configuration_syntax-Import">
- <title>Import</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Configuration_syntax-Import">
+ <title>Import</title>
+ <para>
The import tag allows to link to other configuration files. These imported files can be placed anywhere. If you write a default configuration which is part of your jar file you should not import files from outside your jar.
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<emphasis role="bold">war</emphasis>: Imports from <emphasis role="bold">portal.war/WEB-INF</emphasis>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">jar</emphasis> or <emphasis role="bold">classpath</emphasis>: Uses the <emphasis role="bold">classloader</emphasis>, you can use this prefix in the default configuration for importing an other configuration file which is accessible by the classloader.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">file</emphasis>: Uses an <emphasis role="bold">absolute path</emphasis>, you also can put a <emphasis role="bold">URL</emphasis>.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">without any prefix</emphasis>:
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- If you open the "portal/trunk/web/portal/src/main/webapp/WEB-INF/conf.configuration.xml" you will see that it consists only of imports:
+ </listitem>
+ </itemizedlist>
+ <para>
+ If you open the "portal/trunk/web/portal/src/main/webapp/WEB-INF/conf.configuration.xml" you will see that it consists only of imports:
</para>
-
-<programlisting language="XML" role="XML"><import>war:/conf/common/common-configuration.xml</import>
+ <programlisting language="XML" role="XML"><import>war:/conf/common/common-configuration.xml</import>
<import>war:/conf/common/logs-configuration.xml</import>
<import>war:/conf/database/database-configuration.xml</import>
<import>war:/conf/jcr/jcr-configuration.xml</import>
<import>war:/conf/common/portlet-container-configuration.xml</import>
...</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Configuration_syntax-System_properties">
- <title>System properties</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Configuration_syntax-System_properties">
+ <title>System properties</title>
+ <para>
Since kernel 2.0.7 and 2.1, it is possible to use system properties in literal values of component configuration meta data. This makes it possible to resolve properties at runtime instead of providing a value at packaging time.
</para>
- <para>
+ <para>
In portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/database/database-configuration.tmpl.xml you find an example for system properties:
</para>
-
-<programlisting language="XML" role="XML"> <component>
+ <programlisting language="XML" role="XML"> <component>
<key>org.exoplatform.services.database.HibernateService</key>
<jmx-name>database:type=HibernateService</jmx-name>
<type>org.exoplatform.services.database.impl.HibernateServiceImpl</type>
@@ -895,24 +795,18 @@
<name>hibernate.properties</name>
<description>Default Hibernate Service</description>
...
- <property name="hibernate.connection.url" value="${connectionUrl}"/>
- <property name="hibernate.connection.driver_class" value="${driverClass}"/>
- <property name="hibernate.connection.username" value="${username}"/>
- <property name="hibernate.connection.password" value="${password}"/>
- <property name="hibernate.dialect" value="${dialect}"/>
+ <property name="hibernate.connection.url" value="${connectionUrl}"/>
+ <property name="hibernate.connection.driver_class" value="${driverClass}"/>
+ <property name="hibernate.connection.username" value="${username}"/>
+ <property name="hibernate.connection.password" value="${password}"/>
+ <property name="hibernate.dialect" value="${dialect}"/>
...
</properties-param>
</init-params>
</component></programlisting>
- <para>
- As these are system properties you use the -D command: <emphasis role="bold">java -DconnectionUrl=jdbc:hsqldb:file:../temp/data/exodb -DdriverClass=org.hsqldb.jdbcDriver</emphasis> Or better use the parameters of eXo.bat / eXo.sh when you start JBoss Enterprise Portal Platform: <emphasis role="bold">set EXO_OPTS="-DconnectionUrl=jdbc:hsqldb:file:../temp/data/exodb -DdriverClass=org.hsqldb.jdbcDriver"</emphasis>
+ <para>
+ As these are system properties you use the -D command: <emphasis role="bold">java -DconnectionUrl=jdbc:hsqldb:file:../temp/data/exodb -DdriverClass=org.hsqldb.jdbcDriver</emphasis> Or better use the parameters of eXo.bat / eXo.sh when you start JBoss Enterprise Portal Platform: <emphasis role="bold">set EXO_OPTS="-DconnectionUrl=jdbc:hsqldb:file:../temp/data/exodb -DdriverClass=org.hsqldb.jdbcDriver"</emphasis>
</para>
- </section>
-
-
</section>
-
-
+ </section>
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Profiles.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Profiles.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Profiles.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,99 +1,85 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-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
+ <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_2.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 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>
-
- </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>
-
-<programlisting language="XML" role="XML"><component>
+ </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_2.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 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>
+ </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>
+ <programlisting language="XML" role="XML"><component>
<key>Component</key>
<type>Component</type>
</component>
-<component profiles="foo">
+<component profiles="foo">
<key>Component</key>
<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>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ </section>
+ <section id="sect-Reference_Guide-Profiles_capable_configuration_elements-Component_plugin_element">
+ <title>Component plug-in 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">
+ <component-plugin profiles="foo">
<name>foo</name>
<set-method>addPlugin</set-method>
<type>type</type>
@@ -105,28 +91,22 @@
</init-params>
</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>
-
-<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>
-
-<programlisting language="XML" role="XML"><component>
+ </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>
+ <programlisting language="XML" role="XML"><component>
<key>Component</key>
<type>ComponentImpl</type>
<init-params>
@@ -134,73 +114,58 @@
<name>param</name>
<value>empty</value>
</value-param>
- <value-param profiles="foo">
+ <value-param profiles="foo">
<name>param</name>
<value>foo</value>
</value-param>
- <value-param profiles="bar">
+ <value-param profiles="bar">
<name>param</name>
<value>bar</value>
</value-param>
</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>
-
-<programlisting language="XML" role="XML"><object type="org.exoplatform.container.configuration.ConfigParam">
- <field name="role">
- <collection type="java.util.ArrayList">
+ </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">
<value><string>manager</string></value>
- <value profiles="foo"><string>foo_manager</string></value>
- <value profiles="foo,bar"><string>foo_bar_manager</string></value>
+ <value profiles="foo"><string>foo_manager</string></value>
+ <value profiles="foo,bar"><string>foo_bar_manager</string></value>
</collection>
</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>
-
-<programlisting language="XML" role="XML"><object-param>
+ </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">
- <field name="role">
- <collection type="java.util.ArrayList">
+ <object type="org.exoplatform.container.configuration.ConfigParam">
+ <field name="role">
+ <collection type="java.util.ArrayList">
<value><string>manager</string></value>
</collection>
</field>
- <field name="role" profiles="foo,bar">
- <collection type="java.util.ArrayList">
+ <field name="role" profiles="foo,bar">
+ <collection type="java.util.ArrayList">
<value><string>foo_bar_manager</string></value>
</collection>
</field>
- <field name="role" profiles="foo">
- <collection type="java.util.ArrayList">
+ <field name="role" profiles="foo">
+ <collection type="java.util.ArrayList">
<value><string>foo_manager</string></value>
</collection>
</field>
</object>
</object-param></programlisting>
-
- </section>
-
-
- </section>
-
-
- </section>
-
-
+ </section>
+ </section>
+ </section>
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Specific_Services.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Specific_Services.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Specific_Services.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,34 +1,32 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Specific_Services">
- <title>Specific Services</title>
- <section id="sect-Reference_Guide-Specific_Services-ListenerService">
- <title>ListenerService</title>
- <section id="sect-Reference_Guide-ListenerService-Asynchronous_Event_Broadcast">
- <title>Asynchronous Event Broadcast</title>
- <para>
- Basically, 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>
-
-<programlisting language="Java" role="Java">@Asynchronous
+ <title>Specific Services</title>
+ <section id="sect-Reference_Guide-Specific_Services-ListenerService">
+ <title>ListenerService</title>
+ <section id="sect-Reference_Guide-ListenerService-Asynchronous_Event_Broadcast">
+ <title>Asynchronous Event Broadcast</title>
+ <para>
+ Basically, 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>
+ <programlisting language="Java" role="Java">@Asynchronous
class AsynchListenerWithException<S,D> extends Listener<S,D>
{
@Override
@@ -37,14 +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>
-
-<programlisting language="XML" role="XML"> <component>
+ <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>
@@ -56,45 +53,36 @@
</init-params>
</component></programlisting>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Specific_Services-Understanding_the_ListenerService">
- <title>Understanding the ListenerService</title>
- <section id="sect-Reference_Guide-Understanding_the_ListenerService-Objectives">
- <title>Objectives</title>
- <para>
- This article will first describe how the ListenerService works and then it will show you how to configure the ListenerService.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Understanding_the_ListenerService-What_is_the_ListenerService_">
- <title>What is the ListenerService ?</title>
- <para>
- Inside eXo, an event mechanism allows to trigger and listen to events under specific conditions. This mechanism is used in several places in eXo such as login/logout time.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Understanding_the_ListenerService-How_does_it_work">
- <title>How does it work?</title>
- <para>
- Listeners must be subclasses of org.exoplatform.services.listener.Listener registered by the ListenerService.
- </para>
- <section id="sect-Reference_Guide-How_does_it_work-Registering_a_listener">
- <title>Registering a listener</title>
- <para>
- To register a listener, you need to call the addListener() method.
- </para>
-
-<programlisting language="Java" role="Java">/**
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Specific_Services-Understanding_the_ListenerService">
+ <title>Understanding the ListenerService</title>
+ <section id="sect-Reference_Guide-Understanding_the_ListenerService-Objectives">
+ <title>Objectives</title>
+ <para>
+ This article will first describe how the ListenerService works and then it will show you how to configure the ListenerService.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Understanding_the_ListenerService-What_is_the_ListenerService_">
+ <title>What is the ListenerService ?</title>
+ <para>
+ Inside eXo, an event mechanism allows to trigger and listen to events under specific conditions. This mechanism is used in several places in eXo such as login/logout time.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Understanding_the_ListenerService-How_does_it_work">
+ <title>How does it work?</title>
+ <para>
+ Listeners must be subclasses of org.exoplatform.services.listener.Listener registered by the ListenerService.
+ </para>
+ <section id="sect-Reference_Guide-How_does_it_work-Registering_a_listener">
+ <title>Registering a listener</title>
+ <para>
+ To register a listener, you need to call the addListener() method.
+ </para>
+ <programlisting language="Java" role="Java">/**
* This method is used to register a listener with the service. The method
* should: 1. Check to see if there is a list of listener with the listener
- * name, create one if the listener list doesn't exit 2. Add the new listener
+ * name, create one if the listener list doesn't exit 2. Add the new listener
* to the listener list
*
* @param listener
@@ -102,19 +90,16 @@
public void addListener(Listener listener) {
...
}</programlisting>
- <para>
- By convention, we use the listener name as the name of the event to listen to.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-How_does_it_work-Triggering_an_event">
- <title>Triggering an event</title>
- <para>
- To trigger an event, an application can call one of the broadcast() methods of ListenerService.
- </para>
-
-<programlisting language="Java" role="Java">/**
+ <para>
+ By convention, we use the listener name as the name of the event to listen to.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-How_does_it_work-Triggering_an_event">
+ <title>Triggering an event</title>
+ <para>
+ To trigger an event, an application can call one of the broadcast() methods of ListenerService.
+ </para>
+ <programlisting language="Java" role="Java">/**
* This method is used to broadcast an event. This method should: 1. Check if
* there is a list of listener that listen to the event name. 2. If there is a
* list of listener, create the event object with the given name , source and
@@ -147,14 +132,13 @@
public <T extends Event> void broadcast(T event) throws Exception {
...
}</programlisting>
- <para>
- The broadcast() methods retrieve the name of the event and find the registered listeners with the same name and call the method onEvent() on each listener found.
- </para>
- <para>
- Each listener is a class that extends org.exoplatform.services.listener.Listener, as you can see below:
- </para>
-
-<programlisting language="Java" role="Java">public abstract class Listener<S, D> extends BaseComponentPlugin {
+ <para>
+ The broadcast() methods retrieve the name of the event and find the registered listeners with the same name and call the method onEvent() on each listener found.
+ </para>
+ <para>
+ Each listener is a class that extends org.exoplatform.services.listener.Listener, as you can see below:
+ </para>
+ <programlisting language="Java" role="Java">public abstract class Listener<S, D> extends BaseComponentPlugin {
/**
* This method should be invoked when an event with the same name is
@@ -162,17 +146,15 @@
*/
public abstract void onEvent(Event<S, D> event) throws Exception;
}</programlisting>
- <warning>
- <para>
- As you can see we use generics to limit the source of the event to the type 'S' and the data of the event to the type 'D', so we expect that listeners implement the method onEvent() with the corresponding types
- </para>
-
- </warning>
- <para>
- Each listener is also a ComponentPlugin with a name and a description, in other words, the name of the listener will be the name given in the configuration file, for more details see the next section.
- </para>
-
-<programlisting language="Java" role="Java">public interface ComponentPlugin {
+ <warning>
+ <para>
+ As you can see we use generics to limit the source of the event to the type 'S' and the data of the event to the type 'D', so we expect that listeners implement the method onEvent() with the corresponding types
+ </para>
+ </warning>
+ <para>
+ Each listener is also a ComponentPlugin with a name and a description, in other words, the name of the listener will be the name given in the configuration file, for more details see the next section.
+ </para>
+ <programlisting language="Java" role="Java">public interface ComponentPlugin {
public String getName();
public void setName(String name);
@@ -181,19 +163,14 @@
public void setDescription(String description);
}</programlisting>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Understanding_the_ListenerService-How_to_configure_a_listener">
- <title>How to configure a listener?</title>
- <para>
- All listeners are in fact a ComponentPlugin so it must be configured as below:
- </para>
-
-<programlisting language="XML" role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Understanding_the_ListenerService-How_to_configure_a_listener">
+ <title>How to configure a listener?</title>
+ <para>
+ All listeners are in fact a ComponentPlugin so it must be configured as below:
+ </para>
+ <programlisting language="XML" role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
<configuration>
...
<external-component-plugins>
@@ -211,24 +188,20 @@
</external-component-plugins>
</configuration></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Understanding_the_ListenerService-Concrete_Example">
- <title>Concrete Example</title>
- <para>
- The org.exoplatform.services.security.ConversationRegistry uses the ListenerService to notify that a user has just signed in or just left the application. For example, when a new user signs in, the following code is called:
- </para>
-
-<programlisting language="Java" role="Java">listenerService.broadcast("exo.core.security.ConversationRegistry.register", this, state);</programlisting>
- <para>
- This code will in fact create a new Event which name is "exo.core.security.ConversationRegistry.register", which source is the current instance of ConversationRegistry and which data is the given state. The ListenerService will call the method onEvent(Event<ConversationRegistry, ConversationState> event) on all the listeners which name is "exo.core.security.ConversationRegistry.register".
- </para>
- <para>
- In the example below, we define a Listener that will listen the event "exo.core.security.ConversationRegistry.register".
- </para>
-
-<programlisting language="XML" role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
+ </section>
+ <section id="sect-Reference_Guide-Understanding_the_ListenerService-Concrete_Example">
+ <title>Concrete Example</title>
+ <para>
+ The org.exoplatform.services.security.ConversationRegistry uses the ListenerService to notify that a user has just signed in or just left the application. For example, when a new user signs in, the following code is called:
+ </para>
+ <programlisting language="Java" role="Java">listenerService.broadcast("exo.core.security.ConversationRegistry.register", this, state);</programlisting>
+ <para>
+ This code will in fact create a new Event which name is "exo.core.security.ConversationRegistry.register", which source is the current instance of ConversationRegistry and which data is the given state. The ListenerService will call the method onEvent(Event<ConversationRegistry, ConversationState> event) on all the listeners which name is "exo.core.security.ConversationRegistry.register".
+ </para>
+ <para>
+ In the example below, we define a Listener that will listen the event "exo.core.security.ConversationRegistry.register".
+ </para>
+ <programlisting language="XML" role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
<configuration>
...
<external-component-plugins>
@@ -247,119 +220,97 @@
</external-component-plugins>
</configuration>
...</programlisting>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Specific_Services-Job_Schedule">
- <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-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>
-
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- on certain days of the month
- </para>
-
- </listitem>
- <listitem>
- <para>
- on certain days of the year
- </para>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- not on certain days listed within a registered Calendar (such as business holidays)
- </para>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- repeated a specific number of times
- </para>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- repeated until a specific time/date
- </para>
-
- </listitem>
- <listitem>
- <para>
- repeated indefinitely
- </para>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- repeated with a delay interval
- </para>
-
- </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>
-
-<programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Specific_Services-Job_Schedule">
+ <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-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>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ on certain days of the month
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ on certain days of the year
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ not on certain days listed within a registered Calendar (such as business holidays)
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ repeated a specific number of times
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ repeated until a specific time/date
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ repeated indefinitely
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ repeated with a delay interval
+ </para>
+ </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>
+ <programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
<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">
+ 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">
<component>
<type>org.exoplatform.services.scheduler.impl.QuartzSheduler</type>
@@ -375,68 +326,57 @@
</component>
</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">here</ulink>
- </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
+ </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">here</ulink>
+ </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 plug-in:
+ </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 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 package: select <emphasis role="bold">org.exoplatform.samples.scheduler</emphasis>
+ </para>
+ </listitem>
+ </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"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- </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 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>
-
- </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"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -451,24 +391,22 @@
<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>
-
-<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>
-
-<programlisting language="Java" role="Java">package org.exoplatform.samples.scheduler.jobs;
+ <para>
+ Generate an eclipse project by using maven eclipse plug-in 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>
+ <programlisting language="Java" role="Java">package org.exoplatform.samples.scheduler.jobs;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -493,27 +431,23 @@
* @throws JobExecutionException
*/
public void execute(JobExecutionContext context) throws JobExecutionException {
- LOG.info("DumbJob is executing...");
+ 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 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>
-
-<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>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ <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 plug-in:
+ </para>
+ <programlisting language="Java" role="Java">public void addPeriodJob(ComponentPlugin plugin) throws Exception;</programlisting>
+ <para>
+ The component plug-in 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>
<name>PeriodJob Plugin</name>
@@ -524,24 +458,22 @@
<properties-param>
<name>job.info</name>
<description>dumb job executed periodically</description>
- <property name="jobName" value="DumbJob"/>
- <property name="groupName" value="DumbJobGroup"/>
- <property name="job" value="org.exoplatform.samples.scheduler.jobs.DumbJob"/>
- <property name="repeatCount" value="0"/>
- <property name="period" value="60000"/>
- <property name="startTime" value="+45"/>
- <property name="endTime" value=""/>
+ <property name="jobName" value="DumbJob"/>
+ <property name="groupName" value="DumbJobGroup"/>
+ <property name="job" value="org.exoplatform.samples.scheduler.jobs.DumbJob"/>
+ <property name="repeatCount" value="0"/>
+ <property name="period" value="60000"/>
+ <property name="startTime" value="+45"/>
+ <property name="endTime" value=""/>
</properties-param>
</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>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
+ <programlisting language="Java" role="Java">public void addCronJob(ComponentPlugin plugin) throws Exception;</programlisting>
+ <para>
+ The component plug-in 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 plug-in 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>
<name>CronJob Plugin</name>
@@ -552,43 +484,36 @@
<properties-param>
<name>job.info</name>
<description>dumb job executed by cron expression</description>
- <property name="jobName" value="DumbJob"/>
- <property name="groupName" value="DumbJobGroup"/>
- <property name="job" value="org.exoplatform.samples.scheduler.jobs.DumbJob"/>
+ <property name="jobName" value="DumbJob"/>
+ <property name="groupName" value="DumbJobGroup"/>
+ <property name="job" value="org.exoplatform.samples.scheduler.jobs.DumbJob"/>
<!-- The job will be performed at 10:15am every day -->
- <property name="expression" value="0 15 10 * * ?"/>
+ <property name="expression" value="0 15 10 * * ?"/>
</properties-param>
</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>
-
-<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>
-
- </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"?>
+ <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 plug-in 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 plug-in 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>
+ <programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
<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">
+ 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">
<component>
<type>org.exoplatform.services.scheduler.impl.QuartzSheduler</type>
@@ -612,119 +537,88 @@
<properties-param>
<name>job.info</name>
<description>dumb job executed periodically</description>
- <property name="jobName" value="DumbJob"/>
- <property name="groupName" value="DumbJobGroup"/>
- <property name="job" value="org.exoplatform.samples.scheduler.jobs.DumbJob"/>
- <property name="repeatCount" value="0"/>
- <property name="period" value="60000"/>
- <property name="startTime" value="+45"/>
- <property name="endTime" value=""/>
+ <property name="jobName" value="DumbJob"/>
+ <property name="groupName" value="DumbJobGroup"/>
+ <property name="job" value="org.exoplatform.samples.scheduler.jobs.DumbJob"/>
+ <property name="repeatCount" value="0"/>
+ <property name="period" value="60000"/>
+ <property name="startTime" value="+45"/>
+ <property name="endTime" value=""/>
</properties-param>
</init-params>
</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 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-scheduler.org/</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://en.wikipedia.org/wiki/Job_scheduler">http://en.wikipedia.org/wiki/Job_scheduler</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.theserverside.com/news/1364726/Job-Scheduling-in-J2EE-Applicat...">http://www.theserverside.com/news/1364726/Job-Scheduling-in-J2EE-Applicat...</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://technet.microsoft.com/en-us/library/cc720070%28WS.10%29.aspx">http://technet.microsoft.com/en-us/library/cc720070%28WS.10%29.aspx</ulink>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+ <section id="sect-Reference_Guide-Specific_Services-The_data_source_provider">
+ <title>The data source provider</title>
+ <section id="sect-Reference_Guide-The_data_source_provider-Description">
+ <title>Description</title>
+ <para>
+ The <emphasis>DataSourceProvider</emphasis> is a service used to give access to a data source in an uniform manner in order to be able to support data sources that are managed by the application server.
+ </para>
+ <para>
+ <table id="tabl-Reference_Guide-Description-List_methods">
+ <title>List methods</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry> getDataSource(String dataSourceName) </entry>
+ <entry> Tries to get the data source from a JNDI lookup. If it can be found and the data source is defined as managed, the service will wrap the original <emphasis>DataSource</emphasis> instance in a new <emphasis>DataSource</emphasis> instance that is aware of its <emphasis>managed</emphasis> state otherwise it will return the original <emphasis>DataSource</emphasis> instance. </entry>
+ </row>
+ <row>
+ <entry> isManaged(String dataSourceName) </entry>
+ <entry> Indicates whether or not the given data source is managed. </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
- </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-scheduler.org/</ulink>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Job_scheduler">http://en.wikipedia.org/wiki/Job_scheduler</ulink>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.theserverside.com/news/1364726/Job-Scheduling-in-J2EE-Applicat...">http://www.theserverside.com/news/1364726/Job-Scheduling-in-J2EE-Applicat...</ulink>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <ulink url="http://technet.microsoft.com/en-us/library/cc720070%28WS.10%29.aspx">http://technet.microsoft.com/en-us/library/cc720070%28WS.10%29.aspx</ulink>
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Specific_Services-The_data_source_provider">
- <title>The data source provider</title>
- <section id="sect-Reference_Guide-The_data_source_provider-Description">
- <title>Description</title>
- <para>
- The <emphasis>DataSourceProvider</emphasis> is a service used to give access to a data source in an uniform manner in order to be able to support data sources that are managed by the application server.
- </para>
- <para>
- <table id="tabl-Reference_Guide-Description-List_methods">
- <title>List methods</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- getDataSource(String dataSourceName)
- </entry>
- <entry>
- Tries to get the data source from a JNDI lookup. If it can be found and the data source is defined as managed, the service will wrap the original <emphasis>DataSource</emphasis> instance in a new <emphasis>DataSource</emphasis> instance that is aware of its <emphasis>managed</emphasis> state otherwise it will return the original <emphasis>DataSource</emphasis> instance.
- </entry>
-
- </row>
- <row>
- <entry>
- isManaged(String dataSourceName)
- </entry>
- <entry>
- Indicates whether or not the given data source is managed.
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-The_data_source_provider-Configuration">
- <title>Configuration</title>
- <para>
- The configuration of the <emphasis>DataSourceProvider</emphasis> should be defined only if you use managed data sources since by default all the data sources are considered as not managed. See below the default configuration
- </para>
-
-<programlisting><configuration>
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-The_data_source_provider-Configuration">
+ <title>Configuration</title>
+ <para>
+ The configuration of the <emphasis>DataSourceProvider</emphasis> should be defined only if you use managed data sources since by default all the data sources are considered as not managed. See below the default configuration
+ </para>
+ <programlisting><configuration>
....
<component>
<key>org.exoplatform.services.jdbc.DataSourceProvider</key>
@@ -760,50 +654,31 @@
</component>
...
</configuration></programlisting>
- <table id="tabl-Reference_Guide-Configuration-Fields_description">
- <title>Fields description</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>
- <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 properly, so please ensure that the <emphasis>TransactionService</emphasis> is defined in your configuration.
- </entry>
-
- </row>
- <row>
- <entry>
- <emphasis>always-managed</emphasis>
- </entry>
- <entry>
- This parameter indicates that all the data sources are managed. If set to <emphasis>true</emphasis> the parameter <emphasis>never-managed</emphasis> and <emphasis>managed-data-sources</emphasis> will be ignored, so it will consider all the data sources as managed. By default, this parameter is set to <emphasis>false</emphasis>.
- </entry>
-
- </row>
- <row>
- <entry>
- <emphasis>managed-data-sources</emphasis>
- </entry>
- <entry>
- This parameter indicates the list of all the data sources that are managed, each value tag can contain a list of data source names separated by a comma. If <emphasis>always-managed</emphasis> and/or <emphasis>never-managed</emphasis> is set <emphasis>true</emphasis> this parameter is ignored.
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
- </section>
-
-
+ <table id="tabl-Reference_Guide-Configuration-Fields_description">
+ <title>Fields description</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ <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 properly, so please ensure that the <emphasis>TransactionService</emphasis> is defined in your configuration. </entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>always-managed</emphasis>
+ </entry>
+ <entry> This parameter indicates that all the data sources are managed. If set to <emphasis>true</emphasis> the parameter <emphasis>never-managed</emphasis> and <emphasis>managed-data-sources</emphasis> will be ignored, so it will consider all the data sources as managed. By default, this parameter is set to <emphasis>false</emphasis>. </entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>managed-data-sources</emphasis>
+ </entry>
+ <entry> This parameter indicates the list of all the data sources that are managed, each value tag can contain a list of data source names separated by a comma. If <emphasis>always-managed</emphasis> and/or <emphasis>never-managed</emphasis> is set <emphasis>true</emphasis> this parameter is ignored. </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>
+ </section>
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/AuthenticationAuthorizationOverview.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,62 +1,52 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "../../Reference_Guide.ent">
%BOOK_ENTITIES;
]>
- <section id="sect-Reference_Guide-Authentication_Authorization_Intro">
- <title>Authentication and Authorization intro</title>
-
- <section id="sect-Reference_Guide-Authentication_Authorization_Intro-Authentication">
- <title>Authentication Overview</title>
-
- <para>
- Authentication in JBoss Enterprise Portal Platform is based on <ulink type="http" url="http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASR...">JAAS</ulink> and by default it is a standard J2EE FORM based authentication.
+<section id="sect-Reference_Guide-Authentication_Authorization_Intro">
+ <title>Authentication and Authorization intro</title>
+ <section id="sect-Reference_Guide-Authentication_Authorization_Intro-Authentication">
+ <title>Authentication Overview</title>
+ <para>
+ Authentication in JBoss Enterprise Portal Platform is based on <ulink url="http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASR..." type="http">JAAS</ulink> and by default it is a standard J2EE FORM based authentication.
</para>
-
- <para>
+ <para>
JBoss Enterprise Portal Platform supports the following authentication methods:
</para>
-
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
J2EE FORM based authentication
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The <literal>RememberMe</literal> authentication method (wherein the user checks the <guilabel>Remember my login</guilabel> checkbox on the log in form).
</para>
- </listitem>
-
- <listitem>
- <para>
- SSO server integration (CAS, JOSSO, OpenSSO). Refer to <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On" /> for more information.
+ </listitem>
+ <listitem>
+ <para>
+ SSO server integration (CAS, JOSSO, OpenSSO). Refer to <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On"/> for more information.
</para>
- </listitem>
-
- <listitem>
- <para>
- SPNEGO authentication with a Kerberos ticket. Refer to <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On_-SPNEGO_Simple_and_Protected_GSSAPI_Negotiation_Mechanism" /> for more information.
+ </listitem>
+ <listitem>
+ <para>
+ SPNEGO authentication with a Kerberos ticket. Refer to <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On_-SPNEGO_Simple_and_Protected_GSSAPI_Negotiation_Mechanism"/> for more information.
</para>
- </listitem>
-
- <listitem>
- <para>
- Cluster authentication with loadbalancer or with JBoss SSO valve. Refer to <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On_-Enabling_SSO_using_JBoss_SSO_Valve" /> for more information.
+ </listitem>
+ <listitem>
+ <para>
+ Cluster authentication with loadbalancer or with JBoss SSO valve. Refer to <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On_-Enabling_SSO_using_JBoss_SSO_Valve"/> for more information.
</para>
- </listitem>
- </itemizedlist>
-
- <para>
- Authentication workflow consists of HTTP requests and redirects which include handshakes. Source code related to authentication is partially included in the WCI module, as the authentication process differs on <ulink type="http" url="http://www.jcp.org/en/jsr/detail?id=154">Servlet 2.5</ulink> containers and <ulink type="http" url="http://www.jcp.org/en/jsr/detail?id=315">Servlet 3.0</ulink> containers.
+ </listitem>
+ </itemizedlist>
+ <para>
+ Authentication workflow consists of HTTP requests and redirects which include handshakes. Source code related to authentication is partially included in the WCI module, as the authentication process differs on <ulink url="http://www.jcp.org/en/jsr/detail?id=154" type="http">Servlet 2.5</ulink> containers and <ulink url="http://www.jcp.org/en/jsr/detail?id=315" type="http">Servlet 3.0</ulink> containers.
</para>
-
- <para>
+ <para>
First you can see in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> that authentication is triggered by accessing a secured URL:
</para>
-<programlisting language="XML" role="XML">
+ <programlisting language="XML" role="XML">
<![CDATA[
<security-constraint>
<web-resource-collection>
@@ -75,17 +65,16 @@
</security-constraint>
]]>
</programlisting>
- <para>
- This means that access to some URLs (such as <ulink type="http" url="http://localhost:8080/portal/dologin">http://localhost:8080/portal/dologin</ulink>) will directly trigger J2EE authentication in the case that the user is not already logged in.
+ <para>
+ This means that access to some URLs (such as <ulink url="http://localhost:8080/portal/dologin" type="http">http://localhost:8080/portal/dologin</ulink>) will directly trigger J2EE authentication in the case that the user is not already logged in.
</para>
- <para>
+ <para>
Access to this URL also means that the user needs to be in the JAAS group <emphasis>users</emphasis>, otherwise they can authenticate but will receive an HTTP error; <emphasis>403 Forbidden</emphasis>, for example.
</para>
-
- <para>
+ <para>
In the next part of the file we can see that authentication is FORM based and it starts by redirection to <emphasis>/initiatelogin</emphasis> URL, which is actually mapped to <literal>InitiateLoginServlet</literal>.
</para>
-<programlisting language="XML" role="XML">
+ <programlisting language="XML" role="XML">
<![CDATA[
<login-config>
<auth-method>FORM</auth-method>
@@ -97,58 +86,51 @@
</login-config>
]]>
</programlisting>
- <para>
+ <para>
<literal>InitiateLoginServlet</literal> simply redirects user to login page placed in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/login/jsp/login.jsp</filename>.
<mediaobject>
- <imageobject role="html">
- <imagedata fileref="images/AuthenticationAndIdentity/Overview/loginScreen.png" format="PNG" align="center"/>
- </imageobject>
-
- <imageobject role="fo">
- <imagedata fileref="images/AuthenticationAndIdentity/Overview/loginScreen.png" scalefit="1" format="PNG" align="center"/>
- </imageobject>
- </mediaobject>
+ <imageobject role="html">
+ <imagedata align="center" fileref="images/AuthenticationAndIdentity/Overview/loginScreen.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata align="center" scalefit="1" fileref="images/AuthenticationAndIdentity/Overview/loginScreen.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
</para>
-
- <para>
+ <para>
Changes to the appearance of this login page can be made in this JSP file. You can also change image or CSS placed in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/login/skin</filename> .
</para>
-
- <para>
- After a user submits the login form, they are redirected to the login URL; <ulink type="http" url="http://localhost:8080/portal/login?username=root&password=gtn&ini...">http://localhost:8080/portal/login?username=root&password=gtn&ini...</ulink>.
+ <para>
+ After a user submits the login form, they are redirected to the login URL; <ulink url="http://localhost:8080/portal/login?username=root&password=gtn&ini..." type="http">http://localhost:8080/portal/login?username=root&password=gtn&ini...</ulink>.
</para>
- <para>
+ <para>
This URL is mapped to <literal>PortalLoginController</literal> servlet, which stores credentials and redirects again to <literal>InitiateLoginServlet</literal>, which performs a WCI login.
</para>
- <para>
+ <para>
The WCI layer can recognize the current servlet container to determine if it is the old container with Servlet API 2.5 (JBoss 5, Tomcat 6) or the newer container with Servlet API 3.0 (JBoss 6, JBoss 7, Tomcat 7).
</para>
-
- <formalpara>
- <title>Servlet 3.0</title>
- <para>
+ <formalpara>
+ <title>Servlet 3.0</title>
+ <para>
The newer servlet API supports programmatic authentication by calling method <literal>HttpServletRequest.login(String username, String password)</literal>. This will directly call JAAS authentication without needing to perform any redirects.
</para>
- </formalpara>
-
- <formalpara>
- <title>Servlet 2.5</title>
- <para>
- The older API does not support programmatic authentication, so a redirection to a URL which will trigger JAAS authentication (such as; <ulink type="http" url="http://localhost:8080/portal/j_security_check?j_username=root&j_passw..."></ulink>) is required. In this case, JAAS authentication is not triggered with a user password but with a WCI ticket which is created by <literal>InitiateLoginServlet</literal> during WCI login and saved into WCI <emphasis>TicketService</emphasis>. The purpose of this ticket is to avoid using a password during the URL redirection.
+ </formalpara>
+ <formalpara>
+ <title>Servlet 2.5</title>
+ <para>
+ The older API does not support programmatic authentication, so a redirection to a URL which will trigger JAAS authentication (such as; <ulink url="http://localhost:8080/portal/j_security_check?j_username=root&j_passw..." type="http"/>) is required. In this case, JAAS authentication is not triggered with a user password but with a WCI ticket which is created by <literal>InitiateLoginServlet</literal> during WCI login and saved into WCI <emphasis>TicketService</emphasis>. The purpose of this ticket is to avoid using a password during the URL redirection.
</para>
- </formalpara>
- </section>
-
- <section id="sect-Reference_Guide-Authentication_Authorization_Intro-LoginModules">
- <title>Login modules</title>
-
- <para>
+ </formalpara>
+ </section>
+ <section id="sect-Reference_Guide-Authentication_Authorization_Intro-LoginModules">
+ <title>Login modules</title>
+ <para>
JBoss Enterprise Portal Platform uses its own security domain (<emphasis role="bold">gatein-domain</emphasis>) with a set of predefined login modules. Login module configuration for <emphasis>gatein-domain</emphasis> is contained in the <filename>deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</filename> file.
</para>
- <para>
+ <para>
Below is the default login modules stack:
</para>
-<programlisting language="XML" role="XML"><![CDATA[
+ <programlisting language="XML" role="XML"><![CDATA[
<login-module code="org.gatein.wci.security.WCILoginModule" flag="optional">
<module-option name="portalContainerName">portal</module-option>
<module-option name="realmName">gatein-domain</module-option>
@@ -177,197 +159,173 @@
<module-option name="portalContainerName">portal</module-option>
<module-option name="realmName">gatein-domain</module-option>
</login-module>]]></programlisting>
- <para>
+ <para>
New login modules can be added or the stack completely replaced with custom modules.
</para>
- <para>
+ <para>
Some points to consider are:
</para>
-
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
It is possible to log a user in through existing login modules with their credentials (username: <literal>root</literal>/ password: <literal>gtn</literal>, for example) but also with a WCI ticket (username: <literal>root</literal>/password: <literal>wci-ticket-458791</literal>). The login modules stack supports both of these methods of authentication.
</para>
- </listitem>
-
- <listitem>
- <para>
- Authentication through a WCI ticket is used for FORM based authentication in Servlet 2.5 containers (JBoss 5 or Tomcat 6). The majority of other cases (Servlet 3.0 login, JBoss SSO valve login, login through <ulink type="http" url="http://code.google.com/p/crsh/">Crash</ulink>, BASIC authentication) are using an actual password.
+ </listitem>
+ <listitem>
+ <para>
+ Authentication through a WCI ticket is used for FORM based authentication in Servlet 2.5 containers (JBoss 5 or Tomcat 6). The majority of other cases (Servlet 3.0 login, JBoss SSO valve login, login through <ulink url="http://code.google.com/p/crsh/" type="http">Crash</ulink>, BASIC authentication) are using an actual password.
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Authentication starts with the invocation of the <emphasis>login</emphasis> method on each login module. Once all <emphasis>login</emphasis> methods are invoked, then authentication continues by invoking the <emphasis>commit</emphasis> method on each login module.
</para>
- <para>
+ <para>
Either method (<emphasis>login</emphasis> or <emphasis>commit</emphasis>) can throw <literal>LoginException</literal>. If this happens, the whole authentication process ends unsuccessfully, which in turn, invokes the <emphasis>abort</emphasis> method on each login module.
</para>
- <para>
- By returning "false" from the login method ensures that login module is ignored. This is not specific to JBoss Enterprise Portal Platform but generic to JAAS. More info about login modules in general can be found at <ulink type="http" url="http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASR..."></ulink>.
+ <para>
+ By returning "false" from the login method ensures that login module is ignored. This is not specific to JBoss Enterprise Portal Platform but generic to JAAS. More info about login modules in general can be found at <ulink url="http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASR..." type="http"/>.
</para>
- </listitem>
- </itemizedlist>
-
- <section id="sect-Authentication_Authorization_Intro-existingLM">
- <title>Existing login modules</title>
-
- <para>
+ </listitem>
+ </itemizedlist>
+ <section id="sect-Authentication_Authorization_Intro-existingLM">
+ <title>Existing login modules</title>
+ <para>
Here is a brief description of existing login modules:
</para>
- <variablelist>
- <title>Modules</title>
- <varlistentry>
- <term>WCILoginModule</term>
- <listitem>
- <para>
+ <variablelist>
+ <title>Modules</title>
+ <varlistentry>
+ <term>WCILoginModule</term>
+ <listitem>
+ <para>
This login module validates WCI login tickets and then finds the actual username and password of the user from WCI <emphasis>TicketService</emphasis>. It saves these details into <literal>sharedState</literal> map. The username is saved under the key <literal>javax.security.auth.login.name</literal> and the password is saved under the key <literal>javax.security.auth.login.password</literal>.
</para>
- <note>
- <title>Note</title>
- <para>
- If you trigger JAAS authentication with a literal username and password and not with a WCI ticket credential, the <literal>WCILoginModule</literal> throws a <literal>LoginException</literal>. However <literal>WCILoginModule</literal> is declared as "<emphasis>optional</emphasis>", meaning that a login failure in <literal>WCILoginModule</literal> is not a critical error to the full login process.
+ <note>
+ <title>Note</title>
+ <para>
+ If you trigger JAAS authentication with a literal username and password and not with a WCI ticket credential, the <literal>WCILoginModule</literal> throws a <literal>LoginException</literal>. However <literal>WCILoginModule</literal> is declared as "<emphasis>optional</emphasis>", meaning that a login failure in <literal>WCILoginModule</literal> is not a critical error to the full login process.
</para>
- </note>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>PortalLoginModule</term>
- <listitem>
- <para>
- This login module is actually used mainly in cluster environments. It uses session replication between cluster nodes. After a successful authentication on cluster <emphasis>node1</emphasis> the <emphasis>commit</emphasis> method adds a flag (with the attribute <emphasis>AUTHENTICATED_CREDENTIALS</emphasis>) to the HTTP session and this flag can then be used to re-authenticate on <emphasis>node2</emphasis> when it executes method <emphasis>login</emphasis>. Refer to <xref linkend="sect-Authentication_Authorization_Intro-ClusterLogin" /> for more information.
+ </note>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PortalLoginModule</term>
+ <listitem>
+ <para>
+ This login module is actually used mainly in cluster environments. It uses session replication between cluster nodes. After a successful authentication on cluster <emphasis>node1</emphasis> the <emphasis>commit</emphasis> method adds a flag (with the attribute <emphasis>AUTHENTICATED_CREDENTIALS</emphasis>) to the HTTP session and this flag can then be used to re-authenticate on <emphasis>node2</emphasis> when it executes method <emphasis>login</emphasis>. Refer to <xref linkend="sect-Authentication_Authorization_Intro-ClusterLogin"/> for more information.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>SharedStateLoginModule</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SharedStateLoginModule</term>
+ <listitem>
+ <para>
This login module triggers authentication using the <emphasis>Authenticator</emphasis> interface. It takes the username and password from the <literal>javax.security.auth.login.name</literal> and <literal>javax.security.auth.login.password</literal> attributes of the <literal>sharedState</literal> map.
</para>
- <para>
- Then it calls <literal>Authenticator.validateUser(Credential[] credentials)</literal>, which performs real authentication of username and password against OrganizationService and portal identity database. Result of successful authentication is object <emphasis>Identity</emphasis>, which is saved to sharedState map under key <literal>exo.security.identity</literal>. More info in <xref linkend="sect-Authentication_Authorization_Intro-authenticatorAndRolesExtractor" />.
+ <para>
+ Then it calls <literal>Authenticator.validateUser(Credential[] credentials)</literal>, which performs real authentication of username and password against OrganizationService and portal identity database. Result of successful authentication is object <emphasis>Identity</emphasis>, which is saved to sharedState map under key <literal>exo.security.identity</literal>. More info in <xref linkend="sect-Authentication_Authorization_Intro-authenticatorAndRolesExtractor"/>.
</para>
- <para>
- SharedStateLoginModule assumes that mentioned attributes for username and password are already placed in sharedState map, which was actually done by WCILoginModule. If attributes are not in sharedState map, SharedStateLoginModule is simply ignored (method "login" returns false).
+ <para>
+ SharedStateLoginModule assumes that mentioned attributes for username and password are already placed in sharedState map, which was actually done by WCILoginModule. If attributes are not in sharedState map, SharedStateLoginModule is simply ignored (method "login" returns false).
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>JbossLoginModule</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JbossLoginModule</term>
+ <listitem>
+ <para>
Previous login modules (like <literal>WCILoginModule</literal> and <literal>SharedStateLoginModule</literal>) are useful for authentication flow with WCI ticket. <literal>DefaultLoginModule</literal> (superclass of <literal>JbossLoginModule</literal>) is used for second case (authentication with real password instead of WCI ticket).
</para>
- <para>
+ <para>
First it checks if Identity object has been already created and saved into <literal>sharedState</literal> map by <literal>SharedStateLoginModule</literal>. If not, then it means that WCI ticket authentication was not successful and so it tries to login with real password of user. It also uses <literal>Authentication.validateUser(Credential[] credentials)</literal> for authentication check.
</para>
- <para>
+ <para>
In method <literal>JbossLoginModule.commit</literal>, we need to assign our Identity object to <literal>IdentityRegistry</literal>, which will be used later for authorization. We also need to create JAAS principals (<literal>UserPrincipal</literal> and <literal>RolesPrincipal</literal>) and assign them to our authenticated Subject. This is needed for JBoss AS server, so that it can properly recognize name of logged user and their role on JBoss AS level.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>CustomMembershipLoginModule</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>CustomMembershipLoginModule</term>
+ <listitem>
+ <para>
Special login module, which is disabled (commented) by default. It can be used to add user to some existing group during successful login of this user. Name of group is configurable, by default it is <emphasis>/platform/users</emphasis> group.
</para>
- <para>
+ <para>
This login module is commented because in normal environment, users are already in <emphasis>/platform/users</emphasis> group. It is useful only for some special setups like read-only LDAP, where groups of ldap user are taken from ldap tree and so that users may not be in <emphasis>/platform/users</emphasis> group, which is needed for successful authorization.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <section id="sect-Authentication_Authorization_Intro-LoginModuleLocations">
- <title>SVN location of login modules</title>
-
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <section id="sect-Authentication_Authorization_Intro-LoginModuleLocations">
+ <title>SVN location of login modules</title>
+ <para>
Some modules are specific for portal, but some are used also by eXo JCR and so they are part of eXo core module.
</para>
-
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>PortalLoginModule</emphasis> - is located in JBoss Enterprise Portal Platform sources in <ulink type="http" url="http://anonsvn.jboss.org/repos/gatein/portal/trunk/component/web/security/">http://anonsvn.jboss.org/repos/gatein/portal/trunk/component/web/security/</ulink>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>PortalLoginModule</emphasis> - is located in JBoss Enterprise Portal Platform sources in <ulink url="http://anonsvn.jboss.org/repos/gatein/portal/trunk/component/web/security/" type="http">http://anonsvn.jboss.org/repos/gatein/portal/trunk/component/web/security/</ulink>
</para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis>SharedStateLoginModule, JbossLoginModule</emphasis> - these are located in eXo core sources in <ulink type="http" url="http://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.secu...">http://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.secu...</ulink>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>SharedStateLoginModule, JbossLoginModule</emphasis> - these are located in eXo core sources in <ulink url="http://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.secu..." type="http">http://anonsvn.jboss.org/repos/exo-jcr/core/trunk/exo.core.component.secu...</ulink>
</para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis>CustomMembershipLoginModule</emphasis> - located in JBoss Enterprise Portal Platform sources in module for identity integration - <ulink type="http" url="http://anonsvn.jboss.org/repos/gatein/portal/trunk/component/identity/">http://anonsvn.jboss.org/repos/gatein/portal/trunk/component/identity/</ulink>
- </para>
- </listitem>
- </itemizedlist>
- </section>
- </section>
-<!-- Ending section with existing login modules -->
- <section id="sect-Authentication_Authorization_Intro-createNewLM">
- <title>Creating your own login module</title>
-
+ </listitem>
+ <listitem>
<para>
+ <emphasis>CustomMembershipLoginModule</emphasis> - located in JBoss Enterprise Portal Platform sources in module for identity integration - <ulink url="http://anonsvn.jboss.org/repos/gatein/portal/trunk/component/identity/" type="http">http://anonsvn.jboss.org/repos/gatein/portal/trunk/component/identity/</ulink>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+<!-- Ending section with existing login modules --> <section id="sect-Authentication_Authorization_Intro-createNewLM">
+ <title>Creating your own login module</title>
+ <para>
Before creating your own login module, it is recommended that you study the source code of existing login modules to better understand the JAAS authentication process. You need to have good knowledge so that you can properly decide where your login module should be placed and if you need to replace some existing login modules or simply attach your own module to existing chain.
</para>
-
- <para>
+ <para>
We have actually two levels of authentication and overall result of JAAS authentication should properly handle both these cases:
</para>
-
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
Authentication on application server level
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Authentication on JBoss Enterprise Portal Platform level
</para>
- </listitem>
- </itemizedlist>
-
- <formalpara id="form-Authentication_Authorization_Intro-authenticationAppServerLevel">
- <title>Authentication on application server level</title>
-
- <para>
- Application server needs to properly recognize that user is successfully logged and it has assigned his JAAS roles. Unfortunately this part is not standardized and is specific for each AS. For example in JBoss AS, you need to ensure that JAAS Subject has assigned principal with username (UserPrincipal) and also RolesPrincipal, which has name "Roles" and it contains list of JAAS roles. This part is actually done in <code>JbossLoginModule.commit()</code>. In Tomcat, this flow is little different, which means Tomcat has it is own <literal>TomcatLoginModule</literal>.
+ </listitem>
+ </itemizedlist>
+ <formalpara id="form-Authentication_Authorization_Intro-authenticationAppServerLevel">
+ <title>Authentication on application server level</title>
+ <para>
+ Application server needs to properly recognize that user is successfully logged and it has assigned his JAAS roles. Unfortunately this part is not standardized and is specific for each AS. For example in JBoss AS, you need to ensure that JAAS Subject has assigned principal with username (UserPrincipal) and also RolesPrincipal, which has name "Roles" and it contains list of JAAS roles. This part is actually done in <code>JbossLoginModule.commit()</code>. In Tomcat, this flow is little different, which means Tomcat has it is own <literal>TomcatLoginModule</literal>.
</para>
- </formalpara>
-
- <para>
- After successful authentication, user needs to be at least in JAAS role "users" because this role is declared in web.xml as you saw above. JAAS roles are extracted by special algorithm from JBoss Enterprise Portal Platform memberships. See below in section with RolesExtractor.
+ </formalpara>
+ <para>
+ After successful authentication, user needs to be at least in JAAS role "users" because this role is declared in web.xml as you saw above. JAAS roles are extracted by special algorithm from JBoss Enterprise Portal Platform memberships. See below in section with RolesExtractor.
</para>
-
-
- <formalpara id="form-Authentication_Authorization_Intro-authenticationGateInServerLevel">
- <title>Authentication on JBoss Enterprise Portal Platform level</title>
-
- <para>
+ <formalpara id="form-Authentication_Authorization_Intro-authenticationGateInServerLevel">
+ <title>Authentication on JBoss Enterprise Portal Platform level</title>
+ <para>
Login process needs to create special object <literal>org.exoplatform.services.security.Identity</literal> and register this object into JBoss Enterprise Portal Platform component <literal>IdentityRegistry</literal>. This Identity object should encapsulate username of authenticated user, Memberships of this user and also JAAS roles. Identity object can be easily created with interface <literal>Authenticator</literal> as can be seen below.
</para>
- </formalpara>
-
- <para>
+ </formalpara>
+ <para>
So have this in mind, if you will extend or replace existing login modules.
</para>
- </section>
-<!-- Ending section with your own login module -->
- <section id="sect-Authentication_Authorization_Intro-authenticatorAndRolesExtractor">
- <title>Authenticator and RolesExtractor</title>
-
- <para>
+ </section>
+<!-- Ending section with your own login module --> <section id="sect-Authentication_Authorization_Intro-authenticatorAndRolesExtractor">
+ <title>Authenticator and RolesExtractor</title>
+ <para>
Authenticator is important component in authentication process. Actually interface <emphasis>org.exoplatform.services.security.Authenticator</emphasis> looks like this:
</para>
-<programlisting language="Java" role="Java">
+ <programlisting language="Java" role="Java">
<![CDATA[
public interface Authenticator
{
@@ -390,34 +348,30 @@
}
]]>
</programlisting>
- <para>
+ <para>
Method <emphasis>validateUser</emphasis> is used to check whether given credentials (username and password) are really valid. So it performs real authentication. It returns back username if credentials are correct. Otherwise LoginException is thrown.
</para>
-
- <para>
+ <para>
Method <emphasis>createIdentity</emphasis> is used to create instance of object <emphasis>org.exoplatform.services.security.Identity</emphasis>, which encapsulates all important information about single user like:
</para>
-
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
username
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
set of Memberships (MembershipEntry objects) which user belongs to. <emphasis>Membership</emphasis> is object, which contains information about <emphasis>membershipType</emphasis> (manager, member, validator, ... ) and about <emphasis>group</emphasis> (/platform/users, /platform/administrators, /partners, /organization/management/executiveBoard, ... ).
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Set of Strings with JAAS roles of given user. JAAS roles are simple Strings, which are mapped from MembershipEntry objects. There is another special component <emphasis>org.exoplatform.services.security.RolesExtractor</emphasis>, which is used to map JAAS roles from MembershipEntry objects. RolesExtractor interface looks like this:
</para>
- </listitem>
- </itemizedlist>
-<programlisting language="Java" role="Java">
+ </listitem>
+ </itemizedlist>
+ <programlisting language="Java" role="Java">
<![CDATA[
public interface RolesExtractor
{
@@ -433,103 +387,83 @@
}
]]>
</programlisting>
- <para>
- Default implementation <emphasis>DefaultRolesExtractorImpl</emphasis> is based on special algorithm, which uses name of role from the root of the group (for example for role "/organization/management/something" we have JAAS role "organization"). Only exception is group "platform" where we use second level as name of group. For example from group "/platform/users" we have JAAS role "users".
+ <para>
+ Default implementation <emphasis>DefaultRolesExtractorImpl</emphasis> is based on special algorithm, which uses name of role from the root of the group (for example for role "/organization/management/something" we have JAAS role "organization"). Only exception is group "platform" where we use second level as name of group. For example from group "/platform/users" we have JAAS role "users".
</para>
-
- <para>
+ <para>
<emphasis role="bold">Example: </emphasis> We have user <emphasis>root</emphasis>, which has memberships <emphasis>member:/platform/users</emphasis>, <emphasis>manager:/platform/administrators</emphasis>, <emphasis>validator:/platform/managers</emphasis>, <emphasis>member:/partners</emphasis>, <emphasis>member:/customers/acme</emphasis>, <emphasis>member:/organization/management/board</emphasis>. In this case we will have JAAS roles: <emphasis>users</emphasis>, <emphasis>administrators</emphasis>, <emphasis>managers</emphasis>, <emphasis>partners</emphasis>, <emphasis>customers</emphasis>, <emphasis>organization</emphasis>.
</para>
-
- <para>
+ <para>
Default implementation of Authenticator is <emphasis>OrganizationAuthenticatorImpl</emphasis>, which is implementation based on <emphasis>OrganizationService</emphasis>. See <xref linkend="sect-Reference_Guide-Organization_API"/> .
</para>
-
- <para>
+ <para>
You can override default implementation of mentioned interfaces Authenticator and RolesExtractor if default behavior is not suitable for your needs. Consult documentation of <emphasis>eXo kernel</emphasis> for more info.
</para>
- </section>
-<!-- Ending section Authenticator and RolesExtractor -->
- </section>
-<!-- Ending section with login modules -->
- <section id="sect-Authentication_Authorization_Intro-differentAuthWorkflows">
- <title>Different authentication workflows</title>
-
- <section id="sect-Authentication_Authorization_Intro-RememberMeAuthentication">
- <title>RememberMe authentication</title>
-
- <para>
- In default login dialog, you can notice that there is "Remember my login" checkbox, which users can use to persist their login on his workstation. Default validity period of RememberMe cookie is one day (it is configurable), and so user can be logged for whole day before he need to re-authenticate again with his credentials.
+ </section>
+<!-- Ending section Authenticator and RolesExtractor --> </section>
+<!-- Ending section with login modules --> <section id="sect-Authentication_Authorization_Intro-differentAuthWorkflows">
+ <title>Different authentication workflows</title>
+ <section id="sect-Authentication_Authorization_Intro-RememberMeAuthentication">
+ <title>RememberMe authentication</title>
+ <para>
+ In default login dialog, you can notice that there is "Remember my login" checkbox, which users can use to persist their login on his workstation. Default validity period of RememberMe cookie is one day (it is configurable), and so user can be logged for whole day before he need to re-authenticate again with his credentials.
</para>
-
- <section id="sect-Authentication_Authorization_Intro-RememberMeAuthentication-howDoesItWork">
- <title>How does it work</title>
-
- <itemizedlist>
- <listitem>
- <para>
- User checks the checkbox "Remember my login" on login screen of JBoss Enterprise Portal Platform . Then submits the form.
+ <section id="sect-Authentication_Authorization_Intro-RememberMeAuthentication-howDoesItWork">
+ <title>How does it work</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ User checks the checkbox "Remember my login" on login screen of JBoss Enterprise Portal Platform . Then submits the form.
</para>
- </listitem>
-
- <listitem>
- <para>
- HTTP request like <uri>http://localhost:8080/portal/login?initialURI=/portal/classic&usernam...</uri> is sent to server.
+ </listitem>
+ <listitem>
+ <para>
+ HTTP request like <ulink url="http://localhost:8080/portal/login?initialURI=/portal/classic&amp;use..."/> is sent to server.
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Request is processed by PortalLoginController servlet. Servlet obtains instance of <emphasis>RemindPasswordTokenService</emphasis> and save user credentials into JCR. It generates and returns special token (key) for later use. Then it creates cookie called <emphasis>RememberMe</emphasis> and use returned token as value of cookie.
</para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Authentication_Authorization_Intro-RememberMeAuthentication-reauthentication">
- <title>Reauthentication</title>
-
- <itemizedlist>
- <listitem>
- <para>
- After some time, user wants to re-authenticate. Let's assume that his HTTP Session is already expired but his RememberMe cookie is still active.
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Authentication_Authorization_Intro-RememberMeAuthentication-reauthentication">
+ <title>Reauthentication</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ After some time, user wants to re-authenticate. Let's assume that his HTTP Session is already expired but his RememberMe cookie is still active.
</para>
- </listitem>
-
- <listitem>
- <para>
- User send HTTP request to some portal page (<filename>http://localhost:8080/portal/classic</filename> ).
+ </listitem>
+ <listitem>
+ <para>
+ User send HTTP request to some portal page (<ulink url="http://localhost:8080/portal/classic"/>).
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
There is special HTTP Filter <emphasis role="bold">RememberMeFilter</emphasis> configured in web.xml, which checks RememberMe cookie and then it retrieves credentials of user from RemindPasswordTokenService. Now filter redirects request to PortalLoginController and authentication process goes in same way as for normal FORM based authentication.
</para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Authentication_Authorization_Intro-RememberMeAuthentication-RemindPasswordTokenService">
- <title>RemindPasswordTokenService</title>
-
- <para>
- This is special service used during RememberMe authentication workflow. It is configurable in file <filename>deploy/gatein.ear/02portal.war/WEB-INF/conf/common/remindpwd-configuration.xml</filename> . For more info, look at section <xref linkend="sect-Reference_Guide-Authentication_Token_Configuration" />
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Authentication_Authorization_Intro-RememberMeAuthentication-RemindPasswordTokenService">
+ <title>RemindPasswordTokenService</title>
+ <para>
+ This is special service used during RememberMe authentication workflow. It is configurable in file <filename>deploy/gatein.ear/02portal.war/WEB-INF/conf/common/remindpwd-configuration.xml</filename> . For more info, look at section <xref linkend="sect-Reference_Guide-Authentication_Token_Configuration"/>
</para>
-
- <para>
- Another thing is that you can encrypt passwords before store them into JCR. More info is in section <xref linkend="sect-Reference_Guide-Authentication_and_Identity-Password_Encryption" />.
+ <para>
+ Another thing is that you can encrypt passwords before store them into JCR. More info is in section <xref linkend="sect-Reference_Guide-Authentication_and_Identity-Password_Encryption"/>.
</para>
- </section>
- </section>
-
- <section id="sect-Authentication_Authorization_Intro-BASICAuthentication">
- <title>BASIC authentication</title>
-
- <para>
+ </section>
+ </section>
+ <section id="sect-Authentication_Authorization_Intro-BASICAuthentication">
+ <title>BASIC authentication</title>
+ <para>
JBoss Enterprise Portal Platform is using FORM based authentication by default but it is not a problem with switch to different authentication type like BASIC. Only needed thing is to configure it properly in <filename>deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename> like this:
</para>
-<programlisting language="XML" role="XML">
+ <programlisting language="XML" role="XML">
<![CDATA[
<!--
<login-config>
@@ -547,164 +481,134 @@
</login-config
]]>
</programlisting>
- <para>
+ <para>
In this case user will see login dialog from browser instead of JBoss Enterprise Portal Platform login.jsp page. JAAS authentication will be performed with real credentials of user (<emphasis>root</emphasis>/<emphasis>gtn</emphasis>). WCI ticket is not used with BASIC authentication.
</para>
- </section>
-
- <section id="sect-Authentication_Authorization_Intro-ClusterLogin">
- <title>Cluster login</title>
-
- <para>
- JBoss Enterprise Portal Platform supports automatic login propagation in cluster environment. Cluster login relies on HTTP session replication. It's useful for situations like this:
+ </section>
+ <section id="sect-Authentication_Authorization_Intro-ClusterLogin">
+ <title>Cluster login</title>
+ <para>
+ JBoss Enterprise Portal Platform supports automatic login propagation in cluster environment. Cluster login relies on HTTP session replication. It's useful for situations like this:
</para>
-
- <procedure>
- <step>
- <para>
+ <procedure>
+ <step>
+ <para>
You have Apache loadbalancer and two portal nodes <emphasis>node1</emphasis> and <emphasis>node2</emphasis>
</para>
- </step>
-
- <step>
- <para>
+ </step>
+ <step>
+ <para>
User will send request to loadbalancer and he will be redirected to <emphasis>node1</emphasis>. All his requests will be then processed on <emphasis>node1</emphasis> (sticky session).
</para>
- </step>
-
- <step>
- <para>
+ </step>
+ <step>
+ <para>
User login on loadbalancer (which is redirected to <emphasis>node1</emphasis>)
</para>
- </step>
-
- <step>
- <para>
+ </step>
+ <step>
+ <para>
node1 is killed
</para>
- </step>
-
- <step>
- <para>
- User will send another HTTP request. He will now be redirected to <emphasis>node2</emphasis> because <emphasis>node1</emphasis> is killed. Now user will be automatically logged on <emphasis>node2</emphasis> as well thanks to session replication, because he still has same HTTP session, which was replicated from <emphasis>node1</emphasis> to <emphasis>node2</emphasis>. So end user shouldn't recognize any change even if his work is now done on different node of cluster.
+ </step>
+ <step>
+ <para>
+ User will send another HTTP request. He will now be redirected to <emphasis>node2</emphasis> because <emphasis>node1</emphasis> is killed. Now user will be automatically logged on <emphasis>node2</emphasis> as well thanks to session replication, because he still has same HTTP session, which was replicated from <emphasis>node1</emphasis> to <emphasis>node2</emphasis>. So end user shouldn't recognize any change even if his work is now done on different node of cluster.
</para>
- </step>
- </procedure>
-
- <para>
+ </step>
+ </procedure>
+ <para>
This login workflow works thanks to <emphasis>PortalLoginModule</emphasis>, which is able to save special attribute into HTTP session as flag that user is already logged. Then reauthentication on <emphasis>node2</emphasis> is working thanks to servlet filter <emphasis>ClusteredSSOFilter</emphasis>, which is able to automatically trigger programmatic authentication.
</para>
-
- <note>
- <title>Note</title>
- <para>
+ <note>
+ <title>Note</title>
+ <para>
<literal>ClusteredSSOFilter</literal> is using proprietary JBossWeb API for trigger programmatic authentication and so it is working only on JBoss AS. It is not working on other servers like Tomcat or Jetty.
</para>
- </note>
-
- <para>
- There is also possibility for integration with JBoss clustered SSO valve (See <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On_-Enabling_SSO_using_JBoss_SSO_Valve" />).
+ </note>
+ <para>
+ There is also possibility for integration with JBoss clustered SSO valve (See <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On_-Enabling_SSO_using_JBoss_SSO_Valve"/>).
</para>
- </section>
-
- <section id="sect-Authentication_Authorization_Intro-SSOLogin">
- <title>SSO login</title>
-
- <para>
+ </section>
+ <section id="sect-Authentication_Authorization_Intro-SSOLogin">
+ <title>SSO login</title>
+ <para>
JBoss Enterprise Portal Platform also supports integration with couple of well-known SSO frameworks (CAS, JOSSO, OpenSSO). When user wants login, he is not redirected to portal login form but to SSO server login form. After successful login with SSO server, he gains ticket represented by special cookie (name of cookie differs for each SSO server). Then user is redirected back to JBoss Enterprise Portal Platform, where we need to perform agent validation of SSO ticket against SSO server. We still need to create Identity object and bind it to IdentityRegistry (this is same as in default authentication), which is done thanks to Authenticator component.
</para>
-
- <para>
- In other words, you need to ensure that users, which are logged successfully through SSO, needs to be also in JBoss Enterprise Portal Platform identity database because SSO server is used only for authentication, but authorization is handled completely by JBoss Enterprise Portal Platform, which assumes that user exists in portal DB. If users are not in DB, Identity object won't be created and you will have 403 Forbidden errors even if you authenticate successfully. For details about SSO integration, see <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On" />.
+ <para>
+ In other words, you need to ensure that users, which are logged successfully through SSO, needs to be also in JBoss Enterprise Portal Platform identity database because SSO server is used only for authentication, but authorization is handled completely by JBoss Enterprise Portal Platform, which assumes that user exists in portal DB. If users are not in DB, Identity object won't be created and you will have 403 Forbidden errors even if you authenticate successfully. For details about SSO integration, see <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On"/>.
</para>
-
- <para>
+ <para>
Same applies for SPNEGO authentication (See <xref linkend="sect-Reference_Guide-SSO_Single_Sign_On_-SPNEGO_Simple_and_Protected_GSSAPI_Negotiation_Mechanism"/>). In this case, you need to ensure that your Kerberos users are also created in JBoss Enterprise Portal Platform database.
</para>
- </section>
- </section>
-<!-- Ending section different authentication workflows -->
- <section id="sect-Authentication_Authorization_Intro-authorization">
- <title>Authorization overview</title>
-
- <para>
+ </section>
+ </section>
+<!-- Ending section different authentication workflows --> <section id="sect-Authentication_Authorization_Intro-authorization">
+ <title>Authorization overview</title>
+ <para>
In previous section, we learned about JAAS authentication and about login modules. So we know that result of authentication are:
</para>
-
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
JAAS Subject with principals for username (UserPrincipal) and for JAAS roles (RolesPrincipal).
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Identity object, which encapsulates username, all memberships and all JAAS roles. This Identity object is bound to IdentityRegistry component.
</para>
- </listitem>
- </itemizedlist>
-
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
Authorization in JBoss Enterprise Portal Platform actually happens on two levels:
</para>
-
- <section id="sect-Authentication_Authorization_Intro-servletContainerAuthorization">
- <title>Servlet container authorization</title>
-
- <para>
+ <section id="sect-Authentication_Authorization_Intro-servletContainerAuthorization">
+ <title>Servlet container authorization</title>
+ <para>
First round of authorization is servlet container authorization based on secured URL from <filename>web.xml</filename>. We saw above in web.xml snippet that secured URL are accessible only for users from role <emphasis>users</emphasis>:
</para>
-<programlisting language="XML" role="XML"><![CDATA[
+ <programlisting language="XML" role="XML"><![CDATA[
<auth-constraint>
<role-name>users</role-name>
</auth-constraint>]]></programlisting>
- <para>
- This actually means that our user needs to be in JBoss Enterprise Portal Platform role <emphasis>/platform/users</emphasis> (For details see <xref linkend="sect-Authentication_Authorization_Intro-authenticatorAndRolesExtractor" />). In other words, if we successfully authenticate but our user is not in group <emphasis>/platform/users</emphasis>, then it means that he is not in JAAS role <emphasis>users</emphasis>, which in next turn means that he will have authorization error <emphasis role="bold">403 Forbidden</emphasis> thrown by servlet container.
+ <para>
+ This actually means that our user needs to be in JBoss Enterprise Portal Platform role <emphasis>/platform/users</emphasis> (For details see <xref linkend="sect-Authentication_Authorization_Intro-authenticatorAndRolesExtractor"/>). In other words, if we successfully authenticate but our user is not in group <emphasis>/platform/users</emphasis>, then it means that he is not in JAAS role <emphasis>users</emphasis>, which in next turn means that he will have authorization error <emphasis role="bold">403 Forbidden</emphasis> thrown by servlet container.
</para>
-
- <para>
+ <para>
You can change the behavior and possibly add some more <emphasis>auth-constraint</emphasis> elements into <filename>web.xml</filename>. However this protection of resources based on web.xml is not standard JBoss Enterprise Portal Platform way and it is mentioned here mainly for illustration purposes.
</para>
- </section>
-
- <section id="sect-Authentication_Authorization_Intro-gateInAuthorization">
- <title>Portal level authorization</title>
-
- <para>
- Second round of authorization is based on component <emphasis role="bold">UserACL</emphasis> (See <xref linkend="chap-Reference_Guide-Portal_Default_Permission_Configuration" />). We can declare access and edit permissions for portals, pages and/or portlets. UserACL is then used to check if our user has particular permissions to access or edit specified resource. Important object with information about roles of our user is mentioned <emphasis>Identity</emphasis> object created during JAAS authentication.
+ </section>
+ <section id="sect-Authentication_Authorization_Intro-gateInAuthorization">
+ <title>Portal level authorization</title>
+ <para>
+ Second round of authorization is based on component <emphasis role="bold">UserACL</emphasis> (See <xref linkend="chap-Reference_Guide-Portal_Default_Permission_Configuration"/>). We can declare access and edit permissions for portals, pages and/or portlets. UserACL is then used to check if our user has particular permissions to access or edit specified resource. Important object with information about roles of our user is mentioned <emphasis>Identity</emphasis> object created during JAAS authentication.
</para>
-
- <para>
+ <para>
Authorization on portal level looks like this:
</para>
-
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
user send HTTP request to some URL in portal
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
HTTP request is processed through <literal>SetCurrentIdentityFilter</literal>, which is declared in <filename>deploy/gatein.ear/02portal.war/WEB-INF/web.xml</filename>.
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
SetCurrentIdentityFilter reads username of current user from <emphasis>HttpServletRequest.getRemoteUser()</emphasis>. Then it looks for Identity of this user in IdentityRegistry, where Identity has been saved during authentication. Found Identity is then encapsulated into <emphasis role="bold">ConversationState</emphasis> object and bound into ThreadLocal variable.
</para>
- </listitem>
-
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
UserACL is able to obtain Identity of current user from method <emphasis>UserACL.getIdentity()</emphasis>, which simply calls <emphasis>ConversationState.getCurrent().getIdentity()</emphasis> for find current Identity bound to ThreadLocal. Now UserACL has identity of user and so that it can performs any security checks.
</para>
- </listitem>
- </itemizedlist>
- </section>
- </section>
-<!-- Ending section Authorization overview -->
- </section>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+<!-- Ending section Authorization overview --></section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/CoreOrganizationInitializer.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/CoreOrganizationInitializer.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/CoreOrganizationInitializer.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -6,7 +6,7 @@
<section id="sect-CoreOrganizationInitializer">
<title><remark>BZ#801424 </remark>Create Users and Groups without Organization API</title>
<para>CoreOrganizationInitializer is a plug-in that creates users and groups outside the portal user interface, without the Organization API. The plug-in performs the function of the Organization API with regard to triggering listeners for users and groups at creation time. The plug-in prevents issues with missing JCR objects, resulting from incorrectly provisioned users and groups.</para>
- <para>The plug-in is particularly useful when using the Site Publisher add-on, and directly adding users or groups to a LDAP server through ldif files, or into a database using SQL. </para>
+ <para>The plug-in is particularly useful when using the Site Publisher add-on, and directly adding users or groups to a LDAP server through LDIF files, or into a database using SQL. </para>
<section>
<title>Enable Initializer</title>
<para>The initializer is disabled by default. To activate it, uncomment the block containing the path to the <filename>initializer-configuration.xml</filename> file in <filename><replaceable>EPP_HOME</replaceable>/server/<replaceable>PROFILE</replaceable>/deploy/gatein.ear/02portal.war/conf/configuration.xml</filename>.
@@ -21,8 +21,8 @@
<para>There are a number of operations supported by CoreOrganizationInitializer.</para>
<table frame="all" pgwide="1" id="table-Supported_Operations">
<title>Supported Operations</title>
- <tgroup colsep="1" cols="3">
- <colspec colname="c1"/>
+ <tgroup cols="3" colsep="1">
+ <colspec colname="c1" colwidth=""/>
<colspec colname="c2"/>
<colspec colname="c3"/>
<thead>
@@ -40,13 +40,13 @@
<entry>username</entry>
<entry>
<para>String value containing the user name to query.</para>
- </entry>
+ </entry>
</row>
<row>
<entry/>
<entry>checkFolders</entry>
<entry>
- <para>Boolean value (<literal>true | false</literal>) used by <parameter>treatUser</parameter>, <parameter>treatGroup</parameter>, and <parameter>launchAll</parameter> to control when listeners are triggered for a user or group.</para>
+ <para>Boolean value (<literal>true | false</literal>) used by <parameter>treatUser</parameter>, <parameter>treatGroup</parameter>, and <parameter>launchAll</parameter> to control when listeners are triggered for a user or group.</para>
<para>Detects whether JCR folders are already present for the specified user, or group (in the case of <parameter>launchAll</parameter>). The presence of the folder indicates to the operation that listeners are already triggered for the user or group.</para>
<para>If set to true (recommended), listeners will not be triggered for the user.</para>
<para>If set to false, all listeners are re-triggered for the specified user or group.</para>
@@ -56,8 +56,11 @@
<entry>
<command>treatGroup(groupName, checkFolders)</command>
</entry>
- <entry>groupName</entry>
<entry>
+ <para>groupName</para>
+ <para>(See checkFolders above for usage.)</para>
+ </entry>
+ <entry>
<para>String value containing the group name to query.</para>
</entry>
</row>
@@ -65,20 +68,16 @@
<entry>
<command>launchAll(checkFolders)</command>
</entry>
- <entry/>
+ <entry>See checkFolders above for usage.</entry>
<entry>
<para>Finds all users and groups and triggers <parameter>treatUser</parameter> and <parameter>treatGroup</parameter> as appropriate.</para>
<para>Read the following advice for <parameter>checkFolders</parameter> when using this operation. </para>
+ <warning>
+ <para>To avoid significant performance impacts, only use <parameter>checkFolders=true</parameter> for this operation.</para>
+ <para>If this operation is used with <parameter>checkFolders=false</parameter>, all listeners will be restarted for all users and groups. This will have a definite impact on performance.</para>
+ </warning>
</entry>
</row>
- <row>
- <entry/>
- <entry>checkFolders</entry>
- <entry>
- <para>To avoid significant performance impacts, only use <parameter>checkFolder=true</parameter> for this operation.</para>
- <para>If this operation is used with <parameter>checkFolders=false</parameter>, all listeners will be restarted for all users and groups. This will have a definite impact on performance.</para>
- </entry>
- </row>
</tbody>
</tgroup>
</table>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -81,117 +81,113 @@
<procedure id="proc-Reference_Guide-LDAP_Integration-LDAP_Set_Up">
<title>LDAP Set Up</title>
<step>
- <substeps>
- <step>
- <para>
+ <para>
Install your <application>LDAP</application> server by following the installation instructions provided for the product you are using.
</para>
- <para>
+ <para>
If you are installing the <application>Red Hat Directory Server</application> (RHDS), you should refer to the Installation Guide at <ulink url="http://docs.redhat.com/docs/en-US/Red_Hat_Directory_Server/index.html" type="http"/>.
</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>
+ If you are using a third party directory server (<application>OpenDS</application>, <application>OpenLDAP</application> or <application>Microsoft Active Directory</application> (MSAD)), refer the appropriate documentation for that product.
</para>
- <para>
+ <para>
The following values provide an example of working configuration settings for the different Directory Servers:
</para>
- <table>
- <title/>
- <tgroup cols="8">
- <colspec colname="1"/>
- <colspec colname="2"/>
- <colspec colname="3"/>
- <colspec colname="4"/>
- <colspec colname="5"/>
- <colspec colname="6"/>
- <colspec colname="7"/>
- <colspec colname="8"/>
- <spanspec namest="2" nameend="8" spanname="vspan"/>
- <thead>
- <row>
- <entry> Directory Server </entry>
- <entry spanname="vspan"> Value </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <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">MSAD</emphasis>
- </entry>
- <entry> CN=Users </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/>
- <entry> dc=example,dc=com </entry>
- <entry/>
- <entry/>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>
+ <table>
+ <title/>
+ <tgroup cols="8">
+ <colspec colname="1"/>
+ <colspec colname="2"/>
+ <colspec colname="3"/>
+ <colspec colname="4"/>
+ <colspec colname="5"/>
+ <colspec colname="6"/>
+ <colspec colname="7"/>
+ <colspec colname="8"/>
+ <spanspec namest="2" nameend="8" spanname="vspan"/>
+ <thead>
+ <row>
+ <entry> Directory Server </entry>
+ <entry spanname="vspan"> Value </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <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">MSAD</emphasis>
+ </entry>
+ <entry> CN=Users </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/>
+ <entry> dc=example,dc=com </entry>
+ <entry/>
+ <entry/>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
These, and other appropriate settings, should be adjusted to suit your circumstances.
</para>
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
<emphasis role="bold">Optional</emphasis>: Import an <filename>ldif</filename> file and populate the Directory Server.
</para>
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start the Directory Server.
</para>
- </step>
- </substeps>
</step>
</procedure>
<section id="sect-Reference_Guide_eXo_JCR_1.14-LDAP_Integration-LDAP_in_Read-only_Mode">
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/PredefinedUserConfiguration.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,104 +1,81 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Predefined_User_Configuration">
- <title>Predefined User Configuration</title>
- <section id="sect-Reference_Guide-Predefined_User_Configuration-Overview">
- <title>Overview</title>
- <para>
- The initial Organization configuration should be specified by editing the content of <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</filename>. This file uses the portal XML configuration schema. It lists several configuration plug-ins.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_adding_users_groups_and_membership_types">
- <title>Plugin for adding users, groups and membership types</title>
- <para>
- The plugin type <literal>org.exoplatform.services.organization.OrganizationDatabaseInitializer</literal> is used to specify a list of membership types, a list of groups and a list of users to be created.
- </para>
- <para>
- The <emphasis role="bold">checkDatabaseAlgorithm</emphasis> initialization parameter determines how the database update is performed.
- </para>
- <para>
- If its value is set to <emphasis role="bold">entry</emphasis> it means that each user, group and membership listed in the configuration is checked each time JBoss Enterprise Portal Platform is started. If the entry does not yet exist in the database, it is created.
- </para>
- <para>
- If <emphasis role="bold">checkDatabaseAlgorithm</emphasis> parameter value is set to <emphasis role="bold">empty</emphasis>, the configuration data will be updated to the database only if the database is empty.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Predefined_User_Configuration-Membership_types">
- <title>Membership types</title>
- <para>
- The predefined membership types are specified in the <emphasis role="bold">membershipType</emphasis> field of the <emphasis role="bold">OrganizationConfig</emphasis> plugin parameter.
- </para>
- <note>
- <para>
- See <literal>02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</literal> for the full content.
- </para>
-
- </note>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity_PredefinedUserConfiguration/default98.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Predefined_User_Configuration-Groups">
- <title>Groups</title>
- <para>
- The predefined groups are specified in the <emphasis role="bold">group</emphasis> field of the <emphasis role="bold">OrganizationConfig</emphasis> plugin parameter.
- </para>
- <note>
- <para>
- See <literal>02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</literal> for the full content.
- </para>
-
- </note>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity_PredefinedUserConfiguration/default99.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Predefined_User_Configuration-Users">
- <title>Users</title>
- <para>
- The predefined users are specified in the <emphasis role="bold">user</emphasis> field of the <emphasis role="bold">OrganizationConfig</emphasis> plugin parameter.
- </para>
- <note>
- <para>
- See <literal>02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</literal> for the full content.
- </para>
-
- </note>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity_PredefinedUserConfiguration/default100.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_managing_user_creation">
- <title>Plugin for managing user creation</title>
- <para>
- The plugin type <literal>org.exoplatform.services.organization.impl.NewUserEventListener</literal> specifies which groups all newly created users should become members of.
- </para>
- <para>
- It specifies the group memberships and the membership types to use (while a <emphasis>group</emphasis> is just a set of users, a membership <emphasis>type</emphasis> represents a user's role within a group). It also specifies a list of users that should not be processed (such as administrative users like '<literal>root</literal>').
- </para>
- <note>
- <title>Terminology</title>
- <para>
- The terms '<emphasis role="bold">membership</emphasis>' and '<emphasis role="bold">membership type</emphasis>' refer to the same thing, and are used interchangeably.
- </para>
-
- </note>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity_PredefinedUserConfiguration/default101.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
+ <title>Predefined User Configuration</title>
+ <section id="sect-Reference_Guide-Predefined_User_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ The initial Organization configuration should be specified by editing the content of <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</filename>. This file uses the portal XML configuration schema. It lists several configuration plug-ins.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_adding_users_groups_and_membership_types">
+ <title>Plug-in for adding users, groups and membership types</title>
+ <para>
+ The plug-in type <literal>org.exoplatform.services.organization.OrganizationDatabaseInitializer</literal> is used to specify a list of membership types, a list of groups and a list of users to be created.
+ </para>
+ <para>
+ The <emphasis role="bold">checkDatabaseAlgorithm</emphasis> initialization parameter determines how the database update is performed.
+ </para>
+ <para>
+ If its value is set to <emphasis role="bold">entry</emphasis> it means that each user, group and membership listed in the configuration is checked each time JBoss Enterprise Portal Platform is started. If the entry does not yet exist in the database, it is created.
+ </para>
+ <para>
+ If <emphasis role="bold">checkDatabaseAlgorithm</emphasis> parameter value is set to <emphasis role="bold">empty</emphasis>, the configuration data will be updated to the database only if the database is empty.
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Predefined_User_Configuration-Membership_types">
+ <title>Membership types</title>
+ <para>
+ The predefined membership types are specified in the <emphasis role="bold">membershipType</emphasis> field of the <emphasis role="bold">OrganizationConfig</emphasis> plug-in parameter.
+ </para>
+ <note>
+ <para>
+ See <literal>02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</literal> for the full content.
+ </para>
+ </note>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_PredefinedUserConfiguration/default98.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Predefined_User_Configuration-Groups">
+ <title>Groups</title>
+ <para>
+ The predefined groups are specified in the <emphasis role="bold">group</emphasis> field of the <emphasis role="bold">OrganizationConfig</emphasis> plug-in parameter.
+ </para>
+ <note>
+ <para>
+ See <literal>02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</literal> for the full content.
+ </para>
+ </note>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_PredefinedUserConfiguration/default99.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Predefined_User_Configuration-Users">
+ <title>Users</title>
+ <para>
+ The predefined users are specified in the <emphasis role="bold">user</emphasis> field of the <emphasis role="bold">OrganizationConfig</emphasis> plug-in parameter.
+ </para>
+ <note>
+ <para>
+ See <literal>02portal.war:/WEB-INF/conf/organization/organization-configuration.xml</literal> for the full content.
+ </para>
+ </note>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_PredefinedUserConfiguration/default100.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_managing_user_creation">
+ <title>Plug-in for managing user creation</title>
+ <para>
+ The plug-in type <literal>org.exoplatform.services.organization.impl.NewUserEventListener</literal> specifies which groups all newly created users should become members of.
+ </para>
+ <para>
+ It specifies the group memberships and the membership types to use (while a <emphasis>group</emphasis> is just a set of users, a membership <emphasis>type</emphasis> represents a user's role within a group). It also specifies a list of users that should not be processed (such as administrative users like '<literal>root</literal>').
+ </para>
+ <note>
+ <title>Terminology</title>
+ <para>
+ The terms '<emphasis role="bold">membership</emphasis>' and '<emphasis role="bold">membership type</emphasis>' refer to the same thing, and are used interchangeably.
+ </para>
+ </note>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/Authentication_Identity_PredefinedUserConfiguration/default101.xml" parse="text"/></programlisting>
+ </section>
</section>
-
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -329,7 +329,7 @@
<section id="sect-Reference_Guide-SSO_Single_Sign_On_-Central_Authentication_Service">
<title>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/cas/"> here </ulink> .
+ This Single Sign On plug-in 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/cas/"> here </ulink> .
</para>
<para>
The integration consists of two parts; the first part consists of installing or configuring a CAS server, the second part consists of setting up the portal to use the CAS server.
@@ -367,10 +367,10 @@
Change the default authentication handler with the one provided by JBoss Enterprise Portal Platform.
</para>
<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.
+ The CAS Server Plug-in 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.
+ In order for the plug-in 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-Central_Authentication_Service-Modifying_CAS_server">
<title>Modifying CAS server</title>
@@ -531,7 +531,7 @@
<section id="sect-Reference_Guide-SSO_Single_Sign_On_-Java_Open_Single_Sign_On_Project">
<title>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> .
+ This Single Sign On plug-in 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.
@@ -729,10 +729,10 @@
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.
+ The plug-in 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.
+ In order for the plug-in 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-Modifying_the_OpenSSO_server-Modifying_OpenSSO_server">
<title>Modifying OpenSSO server</title>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Introduction.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,122 +1,106 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Introduction">
- <title>Introduction</title>
- <para>
- JBoss Enterprise Portal Platform is based on the GateIn project which is the merge of two mature Java projects; JBoss Portal and eXo Portal. This new community project takes the best of both offerings and incorporates them into a single portal framework. The aim is to provide an intuitive user-friendly portal, and a framework to address the needs of today's Web 2.0 applications.
- </para>
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center" fileref="images/Common/Frontpage.png" format="PNG" scale="100" width="444" />
- </imageobject>
- <imageobject role="fo">
- <imagedata align="center" contentwidth="150mm" fileref="images/Common/Frontpage.png" format="PNG" width="444" />
- </imageobject>
+ <title>Introduction</title>
+ <para>
+ JBoss Enterprise Portal Platform is based on the GateIn project, which is the merge of two mature Java projects: JBoss Portal and eXo Portal. This new community project takes the best of both offerings and incorporates them into a single portal framework. The aim is to provide an intuitive user-friendly portal, and a framework to address the needs of today's Web 2.0 applications.
+ </para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="444" align="center" scale="100" fileref="images/Common/Frontpage.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="444" contentwidth="150mm" align="center" fileref="images/Common/Frontpage.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>
+ This book provides a deep-dive information about installation and configuration of the services provided by JBoss Enterprise Portal Platform.
+ </para>
+ <note>
+ <title>Notational Devices</title>
+ <para>
+ Along with the <emphasis>Document Conventions</emphasis> outlined in the <xref linkend="pref-Reference_Guide-Preface"/>, this document will also use the following notational devices:
+ <variablelist id="vari-Reference_Guide-Introduction-Devices">
+ <title>Devices</title>
+ <varlistentry>
+ <term>
+ <replaceable><JBOSS_HOME></replaceable>
+ </term>
+ <listitem>
+ <para>
+ This device will refer to the <application>JBoss Application Server</application> (<filename>jboss-as</filename>) directory deployed in JBoss Enterprise Portal Platform by default.
+ </para>
+ <para>
+ Therefore, if your JBoss Enterprise Portal Platform instance is deployed into a directory called <filename>jboss-epp-&VY;/</filename>, your <replaceable><JBOSS_HOME></replaceable> directory would be <filename>jboss-epp-&VY;/jboss-as/</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <replaceable><PROFILE></replaceable>
+ </term>
+ <listitem>
+ <para>
+ This device will usually follow an instance of <replaceable><JBOSS_HOME></replaceable> in a file path and refers to the directory that contains the server profile your JBoss Enterprise Portal Platform instance is configured to use.
+ </para>
+ <para>
+ JBoss Enterprise Portal Platform comes with six profiles by default; <emphasis role="bold">all</emphasis>, <emphasis role="bold">default</emphasis>, <emphasis role="bold">minimal</emphasis>, <emphasis role="bold">production</emphasis>, <emphasis role="bold">standard</emphasis> and <emphasis role="bold">web</emphasis>. These profiles are found in the <filename><replaceable><JBOSS_HOME></replaceable>/server/</filename> directory.
+ </para>
+ <para>
+ Therefore, if you are using the <emphasis>default</emphasis> profile, your <replaceable><PROFILE></replaceable> directory would be <filename><replaceable><JBOSS_HOME></replaceable>/server/default/</filename>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
- </mediaobject>
- <para>
- This book provides a deep-dive information about installation and configuration of the services provided by JBoss Enterprise Portal Platform.
- </para>
- <note>
- <title>Notational Devices</title>
- <para>
- Along with the <emphasis>Document Conventions</emphasis> outlined in the <xref linkend="pref-Reference_Guide-Preface" />, this document will also use the following notational devices:
- <variablelist id="vari-Reference_Guide-Introduction-Devices">
- <title>Devices</title>
- <varlistentry>
- <term><replaceable><JBOSS_HOME></replaceable></term>
- <listitem>
- <para>
- This device will refer to the <application>JBoss Application Server</application> (<filename>jboss-as</filename>) directory deployed in JBoss Enterprise Portal Platform by default.
- </para>
- <para>
- Therefore, if your JBoss Enterprise Portal Platform instance is deployed into a directory called <filename>jboss-epp-&VY;/</filename>, your <replaceable><JBOSS_HOME></replaceable> directory would be <filename>jboss-epp-&VY;/jboss-as/</filename>.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term><replaceable><PROFILE></replaceable></term>
- <listitem>
- <para>
- This device will usually follow an instance of <replaceable><JBOSS_HOME></replaceable> in a file path and refers to the directory that contains the server profile your JBoss Enterprise Portal Platform instance is configured to use.
- </para>
- <para>
- JBoss Enterprise Portal Platform comes with six profiles by default; <emphasis role="bold">all</emphasis>, <emphasis role="bold">default</emphasis>, <emphasis role="bold">minimal</emphasis>, <emphasis role="bold">production</emphasis>, <emphasis role="bold">standard</emphasis> and <emphasis role="bold">web</emphasis>. These profiles are found in the <filename><replaceable><JBOSS_HOME></replaceable>/server/</filename> directory.
- </para>
- <para>
- Therefore, if you are using the <emphasis>default</emphasis> profile, your <replaceable><PROFILE></replaceable> directory would be <filename><replaceable><JBOSS_HOME></replaceable>/server/default/</filename>
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </para>
-
- </note>
- <section id="sect-Reference_Guide-Introduction-Related_Links">
- <title>Related Links</title>
- <variablelist>
- <varlistentry>
- <term>Technical documentation</term>
- <listitem>
- <para>
- Other technical documentation, including an <emphasis role="bold">Installation Guide</emphasis>, and a <emphasis role="bold">User Guide</emphasis> can be found at <ulink type="http" url="http://www.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform">www.redhat.com/docs</ulink>
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Non-technical documentation</term>
- <listitem>
- <para>
- Links to non-technical documents are included on the front page of the portal:
- </para>
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center" fileref="images/Common/Non-tech-docs.png" format="PNG" scale="90" width="444" />
- </imageobject>
- <imageobject role="fo">
- <imagedata align="center" contentwidth="130mm" fileref="images/Common/Non-tech-docs.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Videos</term>
- <listitem>
- <para>
- A link to <ulink type="http" url="http://vimeo.com/channels/gatein">videos</ulink> related to the JBoss Enterprise Portal Platform is also included on the front page:
- </para>
- <mediaobject>
- <imageobject role="html">
- <imagedata align="center" fileref="images/Common/Videos.png" format="PNG" scale="90" width="444" />
- </imageobject>
- <imageobject role="fo">
- <imagedata align="center" contentwidth="130mm" fileref="images/Common/Videos.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
-
+ </para>
+ </note>
+ <section id="sect-Reference_Guide-Introduction-Related_Links">
+ <title>Related Links</title>
+ <variablelist>
+ <varlistentry>
+ <term>Technical documentation</term>
+ <listitem>
+ <para>
+ Other technical documentation, including an <emphasis role="bold">Installation Guide</emphasis>, and a <emphasis role="bold">User Guide</emphasis> can be found at <ulink url="http://www.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform" type="http">www.redhat.com/docs</ulink>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Non-technical documentation</term>
+ <listitem>
+ <para>
+ Links to non-technical documents are included on the front page of the portal:
+ </para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="444" align="center" scale="90" fileref="images/Common/Non-tech-docs.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="444" contentwidth="130mm" align="center" fileref="images/Common/Non-tech-docs.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Videos</term>
+ <listitem>
+ <para>
+ A link to <ulink url="http://vimeo.com/channels/gatein" type="http">videos</ulink> related to the JBoss Enterprise Portal Platform is also included on the front page:
+ </para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata width="444" align="center" scale="90" fileref="images/Common/Videos.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="444" contentwidth="130mm" align="center" fileref="images/Common/Videos.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DataImportStrategy.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DataImportStrategy.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DataImportStrategy.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,58 +1,50 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Data_Import_Strategy">
- <title>Data Import Strategy</title>
- <section id="sect-Reference_Guide-Data_Import_Strategy-Introduction">
- <title>Introduction</title>
- <para>
+ <title>Data Import Strategy</title>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Introduction">
+ <title>Introduction</title>
+ <para>
In the Portal extension mechanism, developers can define an extension that Portal data can be customized by configurations in the extension. There are several cases which an extension developer wants to define how to customize the Portal data, for example modifying, overwriting or just inserting a bit into the data defined by the portal. Therefore, GateIn also defines several modes for each case and the only thing which a developer has to do is to clarify the usecase and reasonably configure extensions.
</para>
- <para>
+ <para>
This section shows you how data are changes in each mode.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Data_Import_Strategy-Import_Mode">
- <title>Import Mode</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Import_Mode">
+ <title>Import Mode</title>
+ <para>
In this section, the following modes for the import strategy are introduced:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<literal>CONSERVE</literal>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<literal>MERGE</literal>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<literal>INSERT</literal>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<literal>OVERWRITE</literal>
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
Each mode indicates how the Portal data are imported. The import mode value is set whenever <literal>NewPortalConfigListener</literal> is initiated. If the mode is not set, the default value will be used in this case. The default value is configurable as a UserPortalConfigService initial param. For example, the bellow configuration means that default value is <literal>MERGE</literal>.
</para>
-
-<programlisting language="XML" role="XML">
+ <programlisting language="XML" role="XML">
<component>
<key>org.exoplatform.portal.config.UserPortalConfigService</key>
<type>org.exoplatform.portal.config.UserPortalConfigService</type>
@@ -68,82 +60,69 @@
</component>
</programlisting>
- <para>
+ <para>
The way that the import strategy works with the import mode will be clearly demonstrated in next sections for each type of data.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Data_Import_Strategy-Data_Import_Strategy">
- <title>Data Import Strategy</title>
- <para>
- The 'Portal Data' term which has been referred in the previous sections can be classified into three types of object data: Portal Config, Page Data and Navigation Data; each of which has some differences in the import strategy.
+ </section>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Data_Import_Strategy">
+ <title>Data Import Strategy</title>
+ <para>
+ The 'Portal Data' term which has been referred in the previous sections can be classified into three types of object data: Portal Config, Page Data and Navigation Data; each of which has some differences in the import strategy.
</para>
- <section id="sect-Reference_Guide-Data_Import_Strategy-Navigation_Data">
- <title>Navigation Data</title>
- <para>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Navigation_Data">
+ <title>Navigation Data</title>
+ <para>
The navigation data import strategy will be processed to the import mode level as the followings:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<literal>CONSERVE</literal>: If the navigation exists, leave it untouched. Otherwise, import data.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<literal>INSERT</literal>: Insert the missing description data, but add only new nodes. Other modifications remains untouched.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<literal>MERGE</literal>: Merge the description data, add missing nodes and update same name nodes.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<literal>OVERWRITE</literal>: Always destroy the previous data and recreate it.
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
In the GateIn navigation structure, each navigation can be referred to a tree which each node links to a page content. Each node contains some description data, such as label, icon, page reference, and more. Therefore, GateIn provides a way to insert or merge new data to the initiated navigation tree or a sub-tree.
</para>
- <para>
+ <para>
The merge strategy performs the recursive comparison of child nodes between the existing persistent nodes of a navigation and the transient nodes provided by a descriptor:
</para>
- <procedure>
- <step>
- <para>
+ <procedure>
+ <step>
+ <para>
Start with the root nodes (which is the effective root node or another node if the parent URI is specified).
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Compare the set of child nodes and insert the missing nodes in the persistent nodes.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Proceed recursively for each child having the same name.
</para>
-
- </step>
-
- </procedure>
-
- <para>
- Let's see the example with two navigation nodes in each import mode. In this case, there are 2 navigation definitions:
+ </step>
+ </procedure>
+ <para>
+ Let's see the example with two navigation nodes in each import mode. In this case, there are 2 navigation definitions:
</para>
-
-<programlisting language="XML" role="XML"><node-navigation>
+ <programlisting language="XML" role="XML"><node-navigation>
<page-nodes>
<node>
<name>foo</name>
@@ -159,156 +138,126 @@
</node>
</page-nodes>
</node-navigation></programlisting>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="images/DataImportStrategy/navigation1.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
-
-<programlisting language="XML" role="XML"><node-navigation>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" align="center" fileref="images/DataImportStrategy/navigation1.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <programlisting language="XML" role="XML"><node-navigation>
<page-nodes>
<node>
<name>foo</name>
<icon>foo_icon_2</icon>
</node>
<node>
- <name>bar</name>
- <icon>bar_icon</icon>
+ <name>daa</name>
+ <icon>daa_icon</icon>
</node>
</page-nodes>
</node-navigation></programlisting>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="images/DataImportStrategy/navigation2.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" align="center" fileref="images/DataImportStrategy/navigation2.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>
For example, the <emphasis>navigation1</emphasis> is loaded before <emphasis>navigation2</emphasis>. The Navigation Importer processes on two navigation definitions, depending on the Import Mode defined in portal configuration.
</para>
- <variablelist id="vari-Reference_Guide-Navigation_Data-Import_Mode_Cases">
- <title>Import Mode Cases</title>
- <varlistentry>
- <term>Case 1: <literal>CONSERVE</literal></term>
- <listitem>
- <para>
+ <variablelist id="vari-Reference_Guide-Navigation_Data-Import_Mode_Cases">
+ <title>Import Mode Cases</title>
+ <varlistentry>
+ <term>Case 1: <literal>CONSERVE</literal></term>
+ <listitem>
+ <para>
With the <literal>CONSERVE</literal> mode, data are only imported when they do not exist. So, if the navigation has been created by the <emphasis>navigation1</emphasis> definition, the <emphasis>navigation2</emphasis> definition does not affect anything on it. We have the result as following
</para>
- <mediaobject>
- <imageobject role="html">
- <imagedata fileref="images/DataImportStrategy/navigation1.png" format="PNG" align="center"/>
- </imageobject>
- <imageobject role="fo">
- <imagedata fileref="images/DataImportStrategy/navigation1.png" format="PNG" align="center" width="100mm"/>
- </imageobject>
- </mediaobject>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Case 2: <literal>INSERT</literal></term>
- <listitem>
- <para>
+ <mediaobject>
+ <imageobject role="html">
+ <imagedata align="center" fileref="images/DataImportStrategy/navigation1.png" format="PNG"/>
+ </imageobject>
+ <imageobject role="fo">
+ <imagedata width="100mm" align="center" fileref="images/DataImportStrategy/navigation1.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Case 2: <literal>INSERT</literal></term>
+ <listitem>
+ <para>
If a node does not exist, the importer will add new nodes to the navigation tree. You will see the following result:
</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="images/DataImportStrategy/navigation_insert.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
- <para>
- Hereafter, the node 'bar' is added to the navigation tree, because it does not exist in the initiated data. Other nodes are kept in the import process.
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" align="center" fileref="images/DataImportStrategy/navigation_insert.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ <para>
+ Hereafter, the node 'bar' is added to the navigation tree, because it does not exist in the initiated data. Other nodes are kept in the import process.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Case 3: <literal>MERGE</literal></term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Case 3: <literal>MERGE</literal></term>
+ <listitem>
+ <para>
The <literal>MERGE</literal> mode indicates that a new node is added to the navigation tree, and updates the node data (such node label and node icon in the example) if it exists.
</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="images/DataImportStrategy/navigation_merge.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Case 4: <literal>OVERWRITE</literal></term>
- <listitem>
- <para>
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" align="center" fileref="images/DataImportStrategy/navigation_merge.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Case 4: <literal>OVERWRITE</literal></term>
+ <listitem>
+ <para>
Everything will be destroyed and replaced with new data if the <literal>OVERWRITE</literal> mode is used.
</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="images/DataImportStrategy/navigation2.png" format="PNG" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Data_Import_Strategy-Portal_Config">
- <title>Portal Config</title>
- <para>
- PortalConfig defines the portal name, permission, layout and some properties of a site. These information are configured in the <emphasis>portal.xml</emphasis>, <emphasis>group.xml</emphasis> or <emphasis>user.xml</emphasis>, depending on the site type. The PortalConfig importer performs a strategy that is based on the mode defined in NewPortalConfigListener, including <literal>CONSERVE</literal>, <literal>INSERT</literal>, <literal>MERGE</literal> or <literal>OVERWRITE</literal>. Let's see how the import mode affects in the process of portal data performance:
+ <mediaobject>
+ <imageobject>
+ <imagedata width="444" align="center" fileref="images/DataImportStrategy/navigation2.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Portal_Config">
+ <title>Portal Config</title>
+ <para>
+ PortalConfig defines the portal name, permission, layout and some properties of a site. These information are configured in the <emphasis>portal.xml</emphasis>, <emphasis>group.xml</emphasis> or <emphasis>user.xml</emphasis>, depending on the site type. The PortalConfig importer performs a strategy that is based on the mode defined in NewPortalConfigListener, including <literal>CONSERVE</literal>, <literal>INSERT</literal>, <literal>MERGE</literal> or <literal>OVERWRITE</literal>. Let's see how the import mode affects in the process of portal data performance:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<literal>CONSERVE</literal>: There is nothing to be imported. The existing data will be kept without any changes.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<literal>INSERT</literal>: When the portal config does not exist, create the new portal defined by the portal config definition. Otherwise, do nothing.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<literal>MERGE</literal> and <literal>OVERWRITE</literal> have the same behavior. The new portal config will be created if it does not exist or update portal properties defined by the portal config definition.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Data_Import_Strategy-Page_Data">
- <title>Page Data</title>
- <para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Data_Import_Strategy-Page_Data">
+ <title>Page Data</title>
+ <para>
The import mode affects the page data import as the same as Portal Config.
</para>
- <note>
- <para>
+ <note>
+ <para>
If the Import mode is <literal>CONSERVE</literal> or <literal>INSERT</literal>, the data import strategy always performs as the <literal>MERGE</literal> mode in the first data initialization of the Portal.
</para>
-
- </note>
-
- </section>
-
-
+ </note>
</section>
-
-
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/DefaultPortalNavigationConfiguration.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,294 +1,247 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Portal_Navigation_Configuration">
- <title>Portal Navigation Configuration</title>
- <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Overview">
- <title>Overview</title>
- <para>
+ <title>Portal Navigation Configuration</title>
+ <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Overview">
+ <title>Overview</title>
+ <para>
There are three types of navigation available to portal users:
</para>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation" />
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation"/>
</para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration-Group_Navigation" />
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration-Group_Navigation"/>
</para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration-User_Navigation" />
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration-User_Navigation"/>
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- These navigations are configured using the standard XML syntax in the file; <filename>02portal.war:/WEB-INF/conf/portal/portal-configuration.xml</filename>.
+ </listitem>
+ </itemizedlist>
+ <para>
+ These navigations are configured using the standard XML syntax in the file: <filename>02portal.war/WEB-INF/conf/portal/portal-configuration.xml</filename>.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/default144.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- This XML configuration defines where in the portal's <literal>WAR</literal> to look for configuration settings, and which portals, groups, and user specific views to include in <emphasis>portal/group/user</emphasis> navigation.
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/default144.xml" parse="text"/></programlisting>
+ <para>
+ This XML configuration defines where in the portal's <literal>WAR</literal> to look for configuration settings, and which portals, groups, and user specific views to include in <emphasis>portal/group/user</emphasis> navigation.
</para>
- <para>
+ <para>
The first time the portal is launched those files will be used to create an initial navigation. That information will then be stored in the JCR content repository and can be modified and managed from the portal UI.
</para>
- <!-- DOC NOTE: Added based on Gatein revision 6987 --> <para>
+<!-- DOC NOTE: Added based on Gatein revision 6987 --> <para>
Each portal, groups and users navigation is indicated by a configuration paragraph, for example:
</para>
- <programlistingco>
- <areaspec>
- <area coords="5" id="area-Reference_Guide-Portal_Navigation_Configuration-Overview-predifinedOwner" />
- <area coords="10" id="area-Reference_Guide-Portal_Navigation_Configuration-Overview-ownerType" />
- <area coords="13" id="area-Reference_Guide-Portal_Navigation_Configuration-Overview-templateLocation" />
- <area coords="16" id="area-Reference_Guide-Portal_Navigation_Configuration-Overview-importMode" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><object-param>
+ <programlistingco>
+ <areaspec>
+ <area coords="5" id="area-Reference_Guide-Portal_Navigation_Configuration-Overview-predifinedOwner"/>
+ <area coords="10" id="area-Reference_Guide-Portal_Navigation_Configuration-Overview-ownerType"/>
+ <area coords="13" id="area-Reference_Guide-Portal_Navigation_Configuration-Overview-templateLocation"/>
+ <area coords="16" id="area-Reference_Guide-Portal_Navigation_Configuration-Overview-importMode"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><object-param>
<name>portal.configuration</name>
<description>description</description>
- <object type="org.exoplatform.portal.config.NewPortalConfig">
- <field name="predefinedOwner">
- <collection type="java.util.HashSet">
+ <object type="org.exoplatform.portal.config.NewPortalConfig">
+ <field name="predefinedOwner">
+ <collection type="java.util.HashSet">
<value><string>classic</string></value>
</collection>
</field>
- <field name="ownerType">
+ <field name="ownerType">
<string>portal</string>
</field>
- <field name="templateLocation">
+ <field name="templateLocation">
<string>war:/conf/portal/</string>
</field>
- <field name="importMode">
+ <field name="importMode">
<string>conserve</string>
</field>
</object>
</object-param>
</programlisting>
-
- </programlistingco>
-
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Overview-predifinedOwner">
- <para>
+ </programlistingco>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Overview-predifinedOwner">
+ <para>
<parameter>predefinedOwner</parameter> defines the navigation owner, portal will look for the configuration files in folder with this name, if there is no suitable folder, a default portal will be created with name is this value.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Overview-ownerType">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Overview-ownerType">
+ <para>
<parameter>ownerType</parameter> define the type of portal navigation. It may be a portal, group or user
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Overview-templateLocation">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Overview-templateLocation">
+ <para>
<parameter>templateLocation</parameter> the classpath where contains all portal configuration files
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Overview-importMode">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Overview-importMode">
+ <para>
<parameter>importMode</parameter> The mode for navigation import. There are 4 types of import mode:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
<parameter>conserve</parameter>: Import data when it does not exist, otherwise do nothing.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>insert</parameter>: Import data when it does not exist, otherwise performs a strategy that adds new data only.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>merge</parameter>: Import data when it does not exist, update data when it exists.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<parameter>rewrite</parameter>: Overwrite data whatsoever.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </callout>
-
- </calloutlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ </callout>
+ </calloutlist>
+ <para>
Based on these parameters, the portal will look for the configuration files and create a relevant portal navigation, pages and data import strategy.
</para>
- <para>
+ <para>
The portal configuration files will be stored in folders with path look like <filename>{templateLocation}/{ownerType}/{predefinedOwner}</filename>, all navigations are defined in the <filename>navigation.xml</filename> file, pages are defined in <filename>pages.xml</filename> and portal configuration is defined in <filename>portal.xml</filename>.
</para>
- <para>
+ <para>
For example, with the above configuration, portal will look for all configuration files from <filename>war:/conf/portal/portal/classic path.</filename>
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation">
- <title>Portal Navigation</title>
- <!-- Updated based on Gatein revision 6987 --> <para>
+ </section>
+ <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation">
+ <title>Portal Navigation</title>
+<!-- Updated based on Gatein revision 6987 --> <para>
The portal navigation incorporates the pages that can be accessed even when a user is not logged in (assuming the applicable permissions allow public access). For example; several portal navigations could be used when a company has multiple trademarks, and websites are set up for each of them.
</para>
- <para>
+ <para>
The <emphasis>Classic</emphasis> portal is configured by three XML files in the <filename>02portal.war:/WEB-INF/conf/portal/portal/classic</filename> directory:
</para>
- <variablelist>
- <varlistentry>
- <term>portal.xml</term>
- <listitem>
- <para>
+ <variablelist>
+ <varlistentry>
+ <term>portal.xml</term>
+ <listitem>
+ <para>
This file describes the layout and portlets that will be shown on all pages. Usually the layout contains the banner, footer, menu and breadcrumbs portlets. JBoss Enterprise Portal Platform is extremely configurable as every view element (even the banner and footer) is a portlet.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/portal.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/portal.xml" parse="text"/></programlisting>
+ <para>
It is also possible to apply a nested container that can also contain portlets. Row, column or tab containers are then responsible for the layout of their child portlets.
</para>
- <!-- Updated based on Gatein revision 6987 --> <para>
+<!-- Updated based on Gatein revision 6987 --> <para>
Each application references a portlet using the id <literal>portal#{portalName}:/{portletWarName}/{portletName}/{uniqueId}</literal>.
</para>
- <para>
+ <para>
Use the <literal>page-body</literal> tag to define where JBoss Enterprise Portal Platform should render the current page.
</para>
- <para>
- The defined <emphasis>classic</emphasis> portal is accessible to "Everyone" (at <literal>/portal/public/classic</literal>) but only members of the group <literal>/platform/administrators</literal> can edit it.
+ <para>
+ The defined <emphasis>classic</emphasis> portal is accessible to "Everyone" (at <literal>/portal/classic</literal>) but only members of the group <literal>/platform/administrators</literal> can edit it.
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>navigation.xml</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>navigation.xml</term>
+ <listitem>
+ <para>
This file defines all the navigation nodes the portal will have. The syntax is simple and uses nested node tags. Each node references a page defined in <filename>pages.xml</filename> file.
</para>
- <!-- Updated based on Gatein revision 6987 --> <para>
+<!-- Updated based on Gatein revision 6987 --> <para>
If the administrator wants to create node labels for each language, they will have to use <literal>xml:lang</literal> attribute in the label tag with value of <literal>xml:lang</literal> is the relevant locale.
</para>
- <para>
+ <para>
Otherwise, if they want the node label is localized by resource bundle files, the <literal>#{...}</literal> syntax will be used, the enclosed property name serves as a key that is automatically passed to internationalization mechanism which replaces the literal property name with a localized value taken from the associated properties file matching the current locale.
</para>
- <!-- DOC NOTE: Replaced code navigation.xml with code from GateIn commit r3831 (as per instruction from theute) -->
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/navigation.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
+<!-- DOC NOTE: Replaced code navigation.xml with code from GateIn commit r3831 (as per instruction from theute) --> <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/navigation.xml" parse="text"/></programlisting>
+ <para>
This navigation tree can have multiple views inside portlets (such as the breadcrumbs portlet) that render the current view node, the site map or the menu portlets.
</para>
- <warning>
- <para>
+ <warning>
+ <para>
For top nodes, the <emphasis role="bold">uri</emphasis> and the <emphasis role="bold">name</emphasis> of your navigation nodes must have the <emphasis>same</emphasis> value. For other nodes the <emphasis role="bold">uri</emphasis> is a relative path.
</para>
- <para>
- For example; <emphasis><uri>contentmanagement/fileexplorer</uri></emphasis> where '<literal>contentmanagement</literal> ' is the name of the parent node and '<literal>fileexplorer</literal>' is the name of the node (<emphasis><name>fileexplorer</name> </emphasis>).
+ <para>
+ For example; <emphasis>
+ <uri>contentmanagement/fileexplorer</uri>
+ </emphasis> where '<literal>contentmanagement</literal> ' is the name of the parent node and '<literal>fileexplorer</literal>' is the name of the node (<emphasis><name>fileexplorer</name> </emphasis>).
</para>
-
- </warning>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Subnodes</term>
- <listitem>
- <para>
+ </warning>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Subnodes</term>
+ <listitem>
+ <para>
Subnodes can also be created using the following XML structure
</para>
- <programlistingco>
- <areaspec>
- <area coords="9 40" id="area-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation-subpage" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/subpage.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation-subpage">
- <para>
- This element defines the parent/child relationship between a page and a subnode.
+ <programlistingco>
+ <areaspec>
+ <area coords="9 40" id="area-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation-subpage"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/subpage.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation-subpage">
+ <para>
+ This element defines the parent/child relationship between a node and a subnode.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>pages.xml</term>
- <listitem>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>pages.xml</term>
+ <listitem>
+ <para>
This configuration file structure is very similar to <filename>portal.xml</filename> and it can also contain container tags (some usage examples of container tags can be found in <filename>02portal.war/WEB-INF/conf/portal/portal/sharedlayout.xml</filename>).
</para>
- <para>
- Each application can decide whether to render the portlet border, the window state, the icons or portlet's mode.
+ <para>
+ Each application can decide whether to render the portlet border, the window state, the icons or portlet's mode.
</para>
- <!-- DOC NOTE: look into including some actual examples of 'container tags' from sharedlayout.xml in place here. -->
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/pages.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Group_Navigation">
- <title>Group Navigation</title>
- <para>
+<!-- DOC NOTE: look into including some actual examples of 'container tags' from sharedlayout.xml in place here. --> <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/pages.xml" parse="text"/></programlisting>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Portal_Navigation_Configuration-Group_Navigation">
+ <title>Group Navigation</title>
+ <para>
Group navigations are dynamically added to the user navigation at login. This allows users to see the pages assigned to any groups they belong to in the menu.
</para>
- <para>
- The group navigation menu is configured by two XML files (<filename>navigation.xml</filename> and <filename>pages.xml</filename>). The syntax used in these files is the same as those covered in <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation" />.
+ <para>
+ The group navigation menu is configured by two XML files (<filename>navigation.xml</filename> and <filename>pages.xml</filename>). The syntax used in these files is the same as those covered in <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation"/>.
</para>
- <para>
+ <para>
They are located in <filename>02portal.war/WEB-INF/conf/portal/group<replaceable>/group-name-path/</replaceable></filename> directory (For example; <filename>02portal.war/WEB-INF/conf/portal/group/platform/administrators/</filename>).
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_Navigation_Configuration-User_Navigation">
- <title>User Navigation</title>
- <para>
- User navigation is the set of nodes and pages that are owned by a user. They are part of the user's dashboard.
+ </section>
+ <section id="sect-Reference_Guide-Portal_Navigation_Configuration-User_Navigation">
+ <title>User Navigation</title>
+ <para>
+ User navigation is the set of nodes and pages that are owned by a user. They are part of the user's dashboard.
</para>
- <!-- DOC NOTE: Get an answer on the below! --> <!-- This Paragraph: --> <para>
- Two files configure the user navigation (<filename>navigation.xml</filename> and <filename>pages.xml</filename>). They are located in the directory "<filename>02portal.war/WEB-INF/conf/portal/users/{userName}</filename>".
+<!-- DOC NOTE: Get an answer on the below! --><!-- This Paragraph: --> <para>
+ Two files configure the user navigation (<filename>navigation.xml</filename> and <filename>pages.xml</filename>). They are located in the directory "<filename>02portal.war/WEB-INF/conf/portal/users/{userName}</filename>".
</para>
- <para>
+ <para>
The file <filename>eXoGadgets.war/WEB-INF/gadget.xml</filename> defines the gadgets that will be available on a user dashboard.
</para>
- <para>
- The example below shows a dashboard with all of the default gadgets included, as well as an extra currency converter gadget sourced from <ulink type="http" url="http://www.google.com/ig/directory?synd=open">Google Gadgets</ulink>.
+ <para>
+ The example below shows a dashboard with all of the default gadgets included, as well as an extra currency converter gadget sourced from <ulink url="http://www.google.com/ig/directory?synd=open" type="http">Google Gadgets</ulink>.
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/gadgets.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
-
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../extras/PortalDevelopment_DefaultPortalNavigationConfiguration/gadgets.xml" parse="text"/></programlisting>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,86 +1,74 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Navigation_Controller_">
- <title>Navigation Controller </title>
- <section id="sect-Reference_Guide-Navigation_Controller_-Description">
- <title>Description</title>
- <para>
+ <title>Navigation Controller </title>
+ <section id="sect-Reference_Guide-Navigation_Controller_-Description">
+ <title>Description</title>
+ <para>
The navigation controller is a major enhancement of JBoss Enterprise Portal Platform that has several goals:
</para>
- <itemizedlist>
- <listitem>
- <para>
- Provide non ambiguous URLs for portal managed resources such as navigation. Previously different resources were possible for a single URL, even worse, the set of resources available for an URL was depending on one's private navigation (groups and dashboard)
+ <itemizedlist>
+ <listitem>
+ <para>
+ Provide non ambiguous URLs for portal managed resources such as navigation. Previously different resources were possible for a single URL, even worse, the set of resources available for an URL was depending on one's private navigation (groups and dashboard)
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Decouple the <literal>http</literal> request from the portal request. Previously both were tightly coupled, for instance the URL for a site had to begin with <uri>/public/{sitename}</uri> or <uri>/private/{sitename}</uri>. The navigation controller provides a flexible and configurable mapping.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Provide more friendly URL and give a degree of freedom for portal administrators by letting them configure how <literal>http</literal> request should look.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Navigation_Controller_-Controller_in_Action">
- <title>Controller in Action</title>
- <section id="sect-Reference_Guide-Controller_in_Action-Controller">
- <title>Controller</title>
- <para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Navigation_Controller_-Controller_in_Action">
+ <title>Controller in Action</title>
+ <section id="sect-Reference_Guide-Controller_in_Action-Controller">
+ <title>Controller</title>
+ <para>
The <application>WebAppController</application> is the component of JBoss Enterprise Portal Platform that process <literal>http</literal> invocations and transforms them into a portal request. It has been improved with the addition of a request mapping engine (<emphasis role="bold">controller</emphasis>) whose role is to make the decoupling of the <literal>http</literal> request and create a portal request.
</para>
- <para>
+ <para>
The mapping engine makes two essential tasks:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
Create a Map<QualifiedName, String> from an incoming <literal>http</literal> request
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Render a Map<QualifiedName, String> as an <literal>http</literal> URL
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
The goal of the controller (mapping engine) is to <emphasis role="bold">decouple</emphasis> the request processed by JBoss Enterprise Portal Platform from the incoming <literal>HTTP</literal> request.
</para>
- <para>
+ <para>
Indeed a request contain data that determines how the request will be processed and such data can be encoded in various places in the request such as the request path or a query parameter. The controller allows JBoss Enterprise Portal Platform route a request according to a set of parameters (a map) instead of the servlet request.
</para>
- <para>
+ <para>
The controller configuration is declarative in an XML file, allowing easy reconfiguration of the routing table and it is processed into an internal data structure that is used to perform resolution (routing or rendering)
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Controller_in_Action-Building_Controller">
- <title>Building Controller</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Controller_in_Action-Building_Controller">
+ <title>Building Controller</title>
+ <para>
The controller configuration that contains the routing rules is loaded from a file named <filename>controller.xml</filename> that is retrieved in the JBoss Enterprise Portal Platform configuration directory. Its location is determined by the <parameter>gatein.controller.config</parameter> property.
</para>
- <para>
- <application>WebAppController</application> loads and initializes the mapping engine
+ <para>
+ <application>WebAppController</application> loads and initializes the mapping engine.
</para>
-
-<programlisting language="XML">
+ <programlisting language="XML">
<!-- conf/portal/controller-configuration.xml of portal.war -->
<component>
<type>org.exoplatform.web.WebAppController</type>
@@ -92,686 +80,577 @@
</init-params>
</component>
</programlisting>
- <para>
- JBoss Enterprise Portal Platform's extension project can define their own routing table, because of the extension mechanism.
+ <para>
+ JBoss Enterprise Portal Platform's extension project can define their own routing table, because of the extension mechanism.
</para>
- <para>
+ <para>
The <filename>controller.xml</filename> can be changed and reloaded at runtime, this helps the testing of different configurations easily (configuration loading operations) and provide more insight into the routing engine (the <literal>findRoutes</literal> operation). see <emphasis role="bold">Rebuiding controller</emphasis> for more detail
</para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">ReBuilding controller</emphasis>
- </para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- The <application>WebAppController</application> is annotated with <code>@Managed</code> annotations and is bound under the <code>view=portal,service=controller</code> JMX name and under the "portalcontroller" REST name.
+ <para>
+ The <application>WebAppController</application> is annotated with <code>@Managed</code> annotations and is bound under the <code>view=portal,service=controller</code> JMX name and under the "portalcontroller" REST name.
</para>
- <para>
+ <para>
It provides the following attributes and operations
</para>
- <itemizedlist>
- <listitem>
- <para>
- Attribute configurationPath: the read only the configuration path of the controller xml file
+ <itemizedlist>
+ <listitem>
+ <para>
+ Attribute configurationPath: the read only configuration path of the controller xml file
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Operation loadConfiguration: load a new configuration file from a specified xml path
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Operation reloadConfiguration: reload the configuration file
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Operation findRoutes: route the request argument through the controller and returns a list of all parameter map resolution. The argument is a request uri such as <uri>/g/:platform:administrators/administration/registry</uri>. It returns a string representation (<code>List<Map></code>) of the matched routes.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Controller_in_Action-Controller_Configuration_controller.xml">
- <title>Controller Configuration (controller.xml)</title>
- <para>
- Most of the controller configuration cares about defining rules (Routing table - contains routes object) that will drive the resolution. Routes are processed during the controller initialization to give a tree of node. Each node
- </para>
- <itemizedlist>
- <listitem>
- <para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Controller_in_Action-Controller_Configuration_controller.xml">
+ <title>Controller Configuration (controller.xml)</title>
+ <para>
+ Most of the controller configuration cares about defining rules (Routing table - contains routes object) that will drive the resolution. Routes are processed during the controller initialization to give a tree of node. Each node: </para>
+ <itemizedlist>
+ <listitem>
+ <para>
is related to its parent with a matching rule that can either be an <emphasis role="bold">exact string matching</emphasis> or a <emphasis role="bold">regular expression matching</emphasis>
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
is associated with a set of parameters
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- A parameter is defined by a qualified name and there are three kind of parameters
+ </listitem>
+ </itemizedlist>
+ <para> A parameter is defined by a qualified name and there are three kind of parameters: Route, Path, and Request.
</para>
- <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-_Route_parameters_">
- <title> <emphasis role="bold">Route parameters</emphasis> </title>
- <para>
+ <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-_Route_parameters_">
+ <title>
+ <emphasis role="bold">Route parameters</emphasis>
+ </title>
+ <para>
Route parameters defines a fixed value associate with a qualified name.
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
Routing: route parameters allow the controller to distinguish branches easily and route the request accordingly.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Rendering: selection occurs when always.
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
<emphasis role="bold">Example:</emphasis>
</para>
-
-<programlisting language="XML">
-<route path="/foo">
- <route-param qname="gtn:handler">
+ <programlisting language="XML">
+<route path="/foo">
+ <route-param qname="gtn:handler">
<value>portal</value>
</route-param>
</route>
</programlisting>
- <para>
- This configuration matches the request path "/foo" to the map (gtn:handler=portal). Conversely it renders the (gtn:handler=portal) map as the "/foo" URL. In this example we see two concepts
+ <para>
+ This configuration matches the request path "/foo" to the map (gtn:handler=portal). Conversely it renders the (gtn:handler=portal) map as the "/foo" URL. In this example we see two concepts
</para>
- <itemizedlist>
- <listitem>
- <para>
- exact path matching ("/foo")
+ <itemizedlist>
+ <listitem>
+ <para>
+ exact path matching ("/foo")
</para>
-
- </listitem>
- <listitem>
- <para>
- route parameters ("gtn:handler")
+ </listitem>
+ <listitem>
+ <para>
+ route parameters ("gtn:handler")
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-_Path_parameters_Regular_expression_support_">
- <title> <emphasis role="bold">Path parameters - <emphasis role="italic">Regular expression support</emphasis> </emphasis> </title>
- <para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-_Path_parameters_Regular_expression_support_">
+ <title>
+ <emphasis role="bold">Path parameters - <emphasis role="italic">Regular expression support</emphasis></emphasis>
+ </title>
+ <para>
Path parameters allow to associate a portion of the request path with a parameter. Such parameter will match any non empty portion of text except the <emphasis role="bold">/</emphasis> character (that is the [^/]+ regular expression) otherwise they can be associated with a regular expression for matching specific patterns. Path parameters are mandatory for matching since they are part of the request path, however it is allowed to write regular expression matching an empty value.
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
Routing: route is accepted if the regular expression is matched.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Rendering: selection occurs when the regular expression matches the parameter.
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
<emphasis role="bold">Encoding</emphasis>
</para>
- <para>
- Path parameters may contain '/' character which is a reserved char for URI path. This case is specially handled by the navigation controller by using a special character to replace '/' literals. By default the character is the semi colon <emphasis role="bold">:</emphasis> and can be changed to other possible values (see controller XML schema for possible values) to give a greater amount of flexibility.
+ <para>
+ Path parameters may contain '/' character which is a reserved char for URI path. This case is specially handled by the navigation controller by using a special character to replace '/' literals. By default the character is the semi colon <emphasis role="bold">:</emphasis> and can be changed to other possible values (see controller XML schema for possible values) to give a greater amount of flexibility.
</para>
- <para>
- This encoding is applied only when the encoding performed for parameter having a mode set to the <code>default-form</code> value, for instance it does not happen for navigation node URI (for which <emphasis role="bold">/</emphasis> are encoded literally). The separator escape char can still be used but under it's percent escaped form, so by default a path parameter value containing <emphasis role="bold">:</emphasis> would be encoded as <code>%3A</code> and conversely the <code>%3A</code> value will be decoded as <emphasis role="bold">:</emphasis>.
+ <para>
+ This encoding is applied only when the encoding performed for parameter having a mode set to the <code>default-form</code> value, for instance it does not happen for navigation node URI (for which <emphasis role="bold">/</emphasis> are encoded literally). The separator escape char can still be used but under it's percent escaped form, so by default a path parameter value containing <emphasis role="bold">:</emphasis> would be encoded as <code>%3A</code> and conversely the <code>%3A</code> value will be decoded as <emphasis role="bold">:</emphasis>.
</para>
- <para>
+ <para>
<emphasis role="bold">Example:</emphasis>
</para>
-
-<programlisting language="XML">
-<route path="/{gtn:path}">
+ <programlisting language="XML">
+<route path="/{gtn:path}">
</route>
</programlisting>
- <para>
+ <para>
No pattern defined, used the default one [^/]+
</para>
-
-<programlisting>
+ <programlisting>
Routing and Rendering
-Path "/foo" <--> the map (gtn:path=foo)
+Path "/foo" <--> the map (gtn:path=foo)
-Path "/foo:bar" <--> the map (gtn:path=foo/bar)
+Path "/foo:bar" <--> the map (gtn:path=foo/bar)
</programlisting>
- <para>
- If the request path contains another "/" char it will not work,default encoding mode is: <emphasis role="bold">default-form</emphasis>. For example:"/foo/bar" --> not matched, return empty parameter map
+ <para>
+ If the request path contains another "/" char it will not work,default encoding mode is: <emphasis role="bold">default-form</emphasis>. For example:"/foo/bar" --> not matched, return empty parameter map
</para>
- <para>
+ <para>
However this could be solved with the following configuration:
</para>
-
-<programlisting language="XML">
-<route path="/{gtn:path}">
- <path-param encoding="preserve-path" qname="gtn:path">
+ <programlisting language="XML">
+<route path="/{gtn:path}">
+ <path-param encoding="preserve-path" qname="gtn:path">
<pattern>.*</pattern>
</path-param>
</route>
</programlisting>
- <orderedlist>
- <listitem>
- <para>
+ <orderedlist>
+ <listitem>
+ <para>
The .* declaration allows to match any char sequence.
</para>
-
- </listitem>
- <listitem>
- <para>
- The <emphasis role="italic">preserve-path</emphasis> <emphasis role="bold">encoding</emphasis> tells the engine that the "/" chars should be handled by the path parameter itself as they have a special meaning for the router. Without this special encoding, "/" would be rendered as the ":<emphasis role="italic">" character and conversely the ":</emphasis>" character would be matched as the "/" character.
+ </listitem>
+ <listitem>
+ <para>
+ The <emphasis role="italic">preserve-path</emphasis> <emphasis role="bold">encoding</emphasis> tells the engine that the "/" chars should be handled by the path parameter itself as they have a special meaning for the router. Without this special encoding, "/" would be rendered as the ":<emphasis role="italic">" character and conversely the ":</emphasis>" character would be matched as the "/" character.
</para>
-
- </listitem>
-
- </orderedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-Request_parameters">
- <title>Request parameters</title>
- <para>
+ </listitem>
+ </orderedlist>
+ </section>
+ <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-Request_parameters">
+ <title>Request parameters</title>
+ <para>
Request parameters are matched from the request parameters (GET or POST). The match can be optional as their representation in the request allows it.
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
Routing
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
route is accepted when a required parameter is present and matched in the request.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
route is accepted when an optional parameter is absent or matched in the request.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
Rendering:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
selection occurs for required parameters when is the parameter is present and matched in the map.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
selection occurs for optional parameters when is the parameter is absent or matched in the map.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ <para>
<emphasis role="bold">Example:</emphasis>
</para>
-
-<programlisting language="XML">
-<route path="/">
- <request-param name="path" qname="gtn:path"/>
+ <programlisting language="XML">
+<route path="/">
+ <request-param name="path" qname="gtn:path"/>
</route>
</programlisting>
- <para>
- Request parameters are declared by a <code>request-param</code> element and by default will match any value. A request like "/?path=foo" is mapped to the (gtn:path=foo) map. The <code>name</code> attribute of the <code>request-param</code> tag defines the request parameter value. This element accepts more configuration
+ <para>
+ Request parameters are declared by a <code>request-param</code> element and by default will match any value. A request like "/?path=foo" is mapped to the (gtn:path=foo) map. The <code>name</code> attribute of the <code>request-param</code> tag defines the request parameter value. This element accepts more configuration
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
a <code>value</code> or a <code>pattern</code> element a child element to match a constant or a pattern
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
a <code>control-mode</code> attribute with the value <code>optional</code> or <code>required</code> to indicate if matching is mandatory or not
</para>
-
- </listitem>
- <listitem>
- <para>
- a <code>value-mapping</code> attribute with the possible values <code>canonical</code>, <code>never-empty</code>, <code>never-null</code> can be used to filter values after matching is done. For instance a parameter configured with <code>value-mapping="never-empty"</code> and matching the empty string value will not put the empty string in the map.
+ </listitem>
+ <listitem>
+ <para>
+ a <code>value-mapping</code> attribute with the possible values <code>canonical</code>, <code>never-empty</code>, <code>never-null</code> can be used to filter values after matching is done. For instance a parameter configured with <code>value-mapping="never-empty"</code> and matching the empty string value will not put the empty string in the map.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-Route_precedence">
- <title>Route precedence</title>
- <para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-Route_precedence">
+ <title>Route precedence</title>
+ <para>
The order of route declaration is important as it influence how rules are matched. Sometimes the same request could be matched by several routes and the routing table is ambiguous.
</para>
-
-<programlisting language="XML">
-<route path="/foo">
- <route-param qname="gtn:handler">
+ <programlisting language="XML">
+<route path="/foo">
+ <route-param qname="gtn:handler">
<value>portal</value>
</route-param>
</route>
-<route path="/{gtn:path}">
- <path-param encoding="preserve-path" qname="gtn:path">
+<route path="/{gtn:path}">
+ <path-param encoding="preserve-path" qname="gtn:path">
<pattern>.*</pattern>
</path-param>
</route>
</programlisting>
- <para>
- In that case, the request path "/foo" will always be matched by the first rule before the second rule. This can be misleading since the map (gtn:path=foo) would be rendered as "/foo" as well and would not be matched by the first rule. Such ambiguity can happen, it can be desirable or not.
+ <para>
+ In that case, the request path "/foo" will always be matched by the first rule before the second rule. This can be misleading since the map (gtn:path=foo) would be rendered as "/foo" as well and would not be matched by the first rule. Such ambiguity can happen, it can be desirable or not.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-Route_nesting">
- <title>Route nesting</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Controller_Configuration_controller.xml-Route_nesting">
+ <title>Route nesting</title>
+ <para>
Route nesting is possible and often desirable as it helps to
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
factor common parameters in a common rule
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
perform more efficient matching as the match of the common rule is done once for all the sub routes
</para>
-
- </listitem>
-
- </itemizedlist>
-
-<programlisting language="XML">
-<route path="/foo">
- <route-param qname="gtn:handler">
+ </listitem>
+ </itemizedlist>
+ <programlisting language="XML">
+<route path="/foo">
+ <route-param qname="gtn:handler">
<value>portal</value>
</route-param>
- <route path="/bar">
- <route-param qname="gtn:path">
+ <route path="/bar">
+ <route-param qname="gtn:path">
<value>bar</value>
</route-param>
</route>
- <route path="/juu">
- <route-param qname="gtn:path">
+ <route path="/juu">
+ <route-param qname="gtn:path">
<value>juu</value>
</route-param>
</route>
</route>
</programlisting>
- <itemizedlist>
- <listitem>
- <para>
- The request path "/foo/bar" is mapped to the (gtn:handler=portal,gtn:path=bar) map
+ <itemizedlist>
+ <listitem>
+ <para>
+ The request path "/foo/bar" is mapped to the (gtn:handler=portal,gtn:path=bar) map
</para>
-
- </listitem>
- <listitem>
- <para>
- The request path "/foo/juu" is mapped to the (gtn:handler=portal,gtn:path=juu) map
+ </listitem>
+ <listitem>
+ <para>
+ The request path "/foo/juu" is mapped to the (gtn:handler=portal,gtn:path=juu) map
</para>
-
- </listitem>
- <listitem>
- <para>
- The request path "/foo" is not mapped as non leaf routes do not perform matches.
+ </listitem>
+ <listitem>
+ <para>
+ The request path "/foo" is not mapped as non leaf routes do not perform matches.
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
-
- </section>
-
-
+ </listitem>
+ </itemizedlist>
+ </section>
</section>
-
- <section id="sect-Reference_Guide-Navigation_Controller_-Integrate_to_JBoss_Enterprise_Portal_Platform_WebUI_framework">
- <title>Integrate to JBoss Enterprise Portal Platform WebUI framework</title>
- <section id="sect-Reference_Guide-Integrate_to_JBoss_Enterprise_Portal_Platform_WebUI_framework-Routing">
- <title>Routing</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Navigation_Controller_-Integrate_to_JBoss_Enterprise_Portal_Platform_WebUI_framework">
+ <title>Integrate to JBoss Enterprise Portal Platform WebUI framework</title>
+ <section id="sect-Reference_Guide-Integrate_to_JBoss_Enterprise_Portal_Platform_WebUI_framework-Routing">
+ <title>Routing</title>
+ <para>
JBoss Enterprise Portal Platform defines a set of parameters in its routing table, for each client request, the mapping engine processes the request path and return the defined parameters with their values as a Map<QualifiedName, String>
</para>
- <para>
+ <para>
<emphasis role="bold">gtn:handler</emphasis>
</para>
- <para>
- The gtn:handler names is one of the most important qualified name as it determines which handler will take care of the request processing just after the controller has determined the parameter map. The handler value is used to make a lookup in the handler map of the controller. An handler is a class that extends the <code>WebRequestHandler</code> class and implements the <code>execute(ControllerContext)</code> method. Several handlers are available by default:
+ <para>
+ The gtn:handler name is one of the most important qualified names as it determines which handler will take care of the request processing just after the controller has determined the parameter map. The handler value is used to make a lookup in the handler map of the controller. A handler is a class that extends the <code>WebRequestHandler</code> class and implements the <code>execute(ControllerContext)</code> method. Several handlers are available by default:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
portal: process aggregated portal requests
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
upload / download: process file upload and file download
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
legacy: handle legacy URL redirection (see <emphasis role="bold">Legacy handler</emphasis> section)
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
default: <literal>http</literal> redirection to the default portal of the container
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
staticResource: serve static resources like image, css or javascript... files in portal.war (see <emphasis role="bold">Static Resource Handler</emphasis> section)
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
<emphasis role="bold">gtn:sitetype / gtn:sitename / gtn:path</emphasis>
</para>
- <para>
+ <para>
Those qualified names drives a request for the portal handler. They are used to determine which site to show and which path to resolve against a navigation. For instance the (gtn:sitetype=portal,gtn:sitename=classic,gtn:path=home) instruct the portal handler to show the home page of the classic portal site.
</para>
- <para>
+ <para>
<emphasis role="bold">gtn:lang</emphasis>
</para>
- <para>
+ <para>
The language in the URL for the portal handler. This is a new feature offered, now language can be specified on URL. that mean user can bookmark that URL (with the information about language) or he can changed language simply by modifying the URL address
</para>
- <para>
+ <para>
<emphasis role="bold">gtn:componentid / gtn:action / gtn:objectid</emphasis>
</para>
- <para>
+ <para>
The webui parameters used by the portal handler for managing webui component URLs for portal applications (and not for portlet applications).
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Integrate_to_JBoss_Enterprise_Portal_Platform_WebUI_framework-Rendering">
- <title>Rendering</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Integrate_to_JBoss_Enterprise_Portal_Platform_WebUI_framework-Rendering">
+ <title>Rendering</title>
+ <para>
The <emphasis role="bold">controller</emphasis> is designed to render a Map<QualifiedName, String> as an <literal>http</literal> URL according to its routing table. But to integrate it for using easily in WebUI Framework of JBoss Enterprise Portal Platform, we need some more components
</para>
- <section id="sect-Reference_Guide-Rendering-_PortalURL_">
- <title> <emphasis role="bold">PortalURL</emphasis> </title>
- <para>
+ <section id="sect-Reference_Guide-Rendering-_PortalURL_">
+ <title>
+ <emphasis role="bold">PortalURL</emphasis>
+ </title>
+ <para>
<code>PortalURL</code> play a similar role at the portal level, its main role is to abstract the creation of an URL for a resource managed by the portal.
</para>
-
-<programlisting language="Java">
+ <programlisting language="Java">
public abstract class PortalURL<R, U extends PortalURL<U>>
{
...
}
</programlisting>
- <para>
- The <code>PortalURL</code> declaration may seem a bit strange at first sight with two generic types <code>U</code> and <code>R</code> and the circular recursion of the <code>U</code> generic parameter, but it's because most of the time you will not use the <code>PortalURL</code> object but instead subclasses.
+ <para>
+ The <code>PortalURL</code> declaration may seem a bit strange at first sight with two generic types <code>U</code> and <code>R</code> and the circular recursion of the <code>U</code> generic parameter, but it's because most of the time you will not use the <code>PortalURL</code> object but instead subclasses.
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
The <code>R</code> generic type represents the type of the resource managed by the portal
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The <code>U</code> generic type is also described as <emphasis role="bold">self bound generic type</emphasis>. This design pattern allows a class to return subtypes of itself in the class declaring the generic type. Java Enums are based on this principle (<code>class Enum<E extends Enum<E>></code>)
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
A portal URL has various methods but certainly the most important method is the <code>toString()</code> method that generates an URL representing that will target the resource associated with the URL. The remaining methods are getter and setter for mutating the URL configuration, those options will affect the URL representation when it is generated.
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
resource: the mandatory resource associated with the URL
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
locale: the optional locale used in the URL allowing the creation of bookmarkable URL containing a language
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
confirm: the optional confirm message displayed by the portal in the context of the portal UI
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
ajax: the optional Ajax option allowing an Ajax invocation of the URL
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
<emphasis role="bold">Obtaining a PortalURL</emphasis>
</para>
- <para>
+ <para>
<code>PortalURL</code> objects are obtained from <code>RequestContext</code> instance such as the <code>PortalRequestContext</code> or the PortletRequestContext. Usually those are obtained thanks to <code>getCurrentInstance</code> method of the <code>RequestContext</code> class:
</para>
-
-<programlisting language="Java">
+ <programlisting language="Java">
RequestContext ctx = RequestContext.getCurrentInstance();
</programlisting>
- <para>
+ <para>
<code>PortalURL</code> are created via to the <code>createURL</code> method that takes as input a resource type. A resource type is usually a constant and is a type safe object that allow to retrieve <code>PortalURL</code> subclasses:
</para>
-
-<programlisting language="Java">
+ <programlisting language="Java">
RequestContext ctx = RequestContext.getCurrentInstance();
PortalURL<R, U> URL = ctx.createURL(type);
</programlisting>
- <para>
+ <para>
In reality you will use a concrete type constant and have instead more concrete code like:
</para>
-
-<programlisting language="Java">
+ <programlisting language="Java">
RequestContext ctx = RequestContext.getCurrentInstance();
NodeURL URL = ctx.createURL(NodeURL.TYPE);
</programlisting>
- <note>
- <para>
- The <code>NodeURL.TYPE</code> is actually declared as <code>new ResourceType<NavigationResource, NodeURL>()</code> that can be described as a <emphasis role="bold">type literal</emphasis> object emulated by a Java anonymous inner class. Such literal were introduced by Neil Gafter as Super Type Token and popularized by Google Guice as Type Literal. It's an interesting way to create a literal representing a kind of Java type.
+ <note>
+ <para>
+ The <code>NodeURL.TYPE</code> is actually declared as <code>new ResourceType<NavigationResource, NodeURL>()</code> that can be described as a <emphasis role="bold">type literal</emphasis> object emulated by a Java anonymous inner class. Such literal were introduced by Neil Gafter as Super Type Token and popularized by Google Guice as Type Literal. It's an interesting way to create a literal representing a kind of Java type.
</para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-Rendering-_Node_URL_">
- <title> <emphasis role="bold">Node URL</emphasis> </title>
- <para>
+ </note>
+ </section>
+ <section id="sect-Reference_Guide-Rendering-_Node_URL_">
+ <title>
+ <emphasis role="bold">Node URL</emphasis>
+ </title>
+ <para>
The class <code>NodeURL</code> is one of the subclass of <code>PortalURL</code> that is specialized for navigation node resources:
</para>
-
-<programlisting language="Java">
+ <programlisting language="Java">
public class NodeURL extends PortalURL<NavigationResource, NodeURL>
{
...
}
</programlisting>
- <para>
+ <para>
The good news is that the NodeURL does not carry any generic type of its super class, which means that a NodeURL is type safe and one does not have to worry about generic types.
</para>
- <para>
+ <para>
Using a NodeURL is pretty straightforward:
</para>
-
-<programlisting language="Java">
+ <programlisting language="Java">
NodeURL URL = RequestContext.getCurrentInstance().createURL(NodeURL.TYPE);
-URL.setResource(new NavigationResource("portal", "classic, "home"));
+URL.setResource(new NavigationResource("portal", "classic, "home"));
String s = URL.toString();
</programlisting>
- <para>
+ <para>
The <code>NodeURL</code> subclass contains specialized setter to make its usage even easier:
</para>
-
-<programlisting language="Java">
+ <programlisting language="Java">
UserNode node = ...;
NodeURL URL = RequestContext.getCurrentInstance().createURL(NodeURL.TYPE);
URL.setNode(node);
String s = URL.toString();
</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Rendering-_Component_URL_">
- <title> <emphasis role="bold">Component URL</emphasis> </title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Rendering-_Component_URL_">
+ <title>
+ <emphasis role="bold">Component URL</emphasis>
+ </title>
+ <para>
The <code>ComponentURL</code> subclass is another specialization of <code>PortalURL</code> that allows the creation of WebUI components URLs. <code>ComponentURL</code> is commonly used to trigger WebUI events from client side:
</para>
-
-<programlisting>
+ <programlisting>
<% def componentURL = uicomponent.event(...); /*or uicomponent.URL(...) */ %>
<a href=$componentURL>Click me</a>
</programlisting>
- <para>
+ <para>
Normally you should not have to deal with it as the WebUI framework has already an abstraction for managing URL known as <code>URLBuilder</code>. The <code>URLBuilder</code> implementation delegates URL creation to <code>ComponentURL</code> objects.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Rendering-Portlet_URLs">
- <title>Portlet URLs</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Rendering-Portlet_URLs">
+ <title>Portlet URLs</title>
+ <para>
Portlet URLs API implementation delegates to the portal <code>ComponentURL</code> (via the portlet container SPI). It is possible to control the language in the URL from a <code>PortletURL</code> object by setting a property named <code>gtn:lang</code>:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
when the property value is set to a value returned by <code>Locale#toString()</code> method for locale objects having a non null language value and a null variant value, the URL generated by the <code>PortletURL#toString()</code> method will contain the locale in the URL.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
when the property value is set to an empty string, the generated URL will not contain a language. If the incoming URL was carrying a language, this language will be erased.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
when the property value is not set, it will not affect the generated URL.
</para>
-
- </listitem>
-
- </itemizedlist>
-
-<programlisting language="Java">
+ </listitem>
+ </itemizedlist>
+ <programlisting language="Java">
PortletURL URL = resp.createRenderURL();
-URL.setProperty("gtn:lang", "fr");
-writer.print("<a href='" + URL + "'>French</a>");
+URL.setProperty("gtn:lang", "fr");
+writer.print("<a href='" + URL + "'>French</a>");
</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Rendering-Webui_URLBuilder_">
- <title>Webui <code>URLBuilder</code> </title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Rendering-Webui_URLBuilder_">
+ <title>Webui <code>URLBuilder</code></title>
+ <para>
This internal API for creating URL works as before and delegates to the <code>PortletURL</code> API when the framework is executed in a portlet and to a <code>ComponentURL</code> API when the framework is executed in the portal context. The API has been modified to take in account the language in URL with two properties on the builder:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
locale: a locale for setting on the URL
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
removeLocale: a boolean for removing the locale present on the URL
</para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Rendering-Groovy_Templates">
- <title>Groovy Templates</title>
- <para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="sect-Reference_Guide-Rendering-Groovy_Templates">
+ <title>Groovy Templates</title>
+ <para>
Within a Groovy template the mechanism is the same, however a splash of integration has been done to make creation of NodeURL simpler. A closure is bound under the <code>nodeurl</code> name and is available for invocation anytime. It will simply create a NodeURL object and return it:
</para>
-
-<programlisting language="Java">
+ <programlisting language="Java">
UserNode node = ...;
NodeURL URL = nodeurl();
URL.setNode(node);
String s = URL.toString();
</programlisting>
- <para>
+ <para>
The closure <code>nodeurl</code> is bound to Groovy template in <code>WebuiBindingContext</code>
</para>
-
-<programlisting language="Java">
+ <programlisting language="Java">
// Closure nodeurl()
-put("nodeurl", new Closure(this)
+put("nodeurl", new Closure(this)
{
@Override
public Object call(Object[] args)
@@ -780,16 +659,10 @@
}
});
</programlisting>
-
- </section>
-
-
- </section>
-
-
+ </section>
</section>
-
- <!-- <section id="sect-Reference_Guide-Navigation_Controller_-Changes_and_migration_from_JBoss_Enterprise_Portal_Platform_3.1.x">
+ </section>
+<!-- <section id="sect-Reference_Guide-Navigation_Controller_-Changes_and_migration_from_JBoss_Enterprise_Portal_Platform_3.1.x">
<title>Changes and migration from JBoss Enterprise Portal Platform 5</title>
<para>
The navigation controller implies a migration of the client code that is coupled to several internal APIs of JBoss Enterprise Portal Platform. As far as we know the major impact is related to anything dealing with URL:
@@ -1069,6 +942,4 @@
</section>
- </section> -->
-</chapter>
-
+ </section> --></chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,14 +1,14 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JCR_configuration">
- <title>JCR configuration</title>
- <para>
+ <title>JCR configuration</title>
+ <para>
The JCR configuration is defined in an XML file which is constructed as per the DTD below:
</para>
-<programlisting language="XML" role="XML"><!ELEMENT repository-service (repositories)>
+ <programlisting language="XML" role="XML"><!ELEMENT repository-service (repositories)>
<!ATTLIST repository-service default-repository NMTOKEN #REQUIRED>
<!ELEMENT repositories (repository)>
<!ELEMENT repository (security-domain,access-control,session-max-age,authentication-policy,workspaces)>
@@ -48,738 +48,603 @@
<!ELEMENT persister (properties)>
<!ELEMENT properties (property+)>
<!ELEMENT property EMPTY></programlisting>
-
- <section id="sect-Reference_Guide-JCR_configuration-Portal_configuration">
- <title>Portal configuration</title>
- <para>
+ <section id="sect-Reference_Guide-JCR_configuration-Portal_configuration">
+ <title><remark>BZ#812412 </remark>Portal configuration</title>
+ <para>
JCR services are registered in the Portal container.
</para>
- <para>
+ <para>
Below is an example configuration from the <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jcr-configuration.xml</filename> file.
</para>
- <programlistingco>
- <areaspec>
- <area coords="10" id="area-Reference_Guide-JCR_configuration-conf-path" />
- <area coords="15" id="area-Reference_Guide-JCR_configuration-working-conf" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><component>
- <key>org.exoplatform.services.jcr.RepositoryService</key>
- <type>org.exoplatform.services.jcr.impl.RepositoryServiceImpl</type>
-</component>
-<component>
- <key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
- <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
- <init-params>
- <value-param>
- <name>conf-path</name>
- <description>JCR repositories configuration file</description>
- <value>jar:/conf/standalone/exo-jcr-config.xml</value>
- </value-param>
- <properties-param>
- <name>working-conf</name>
- <description>working-conf</description>
- <property name="source-name" value="jdbcjcr" />
- <property name="dialect" value="hsqldb" />
- <property name="persister-class-name" value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister" />
- </properties-param>
- </init-params>
-</component></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-JCR_configuration-conf-path">
- <para>
- A path to a RepositoryService JCR Configuration.
- </para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-JCR_configuration-working-conf">
- <para>
- JCR configuration persister configuration. If no <parameter>working-conf</parameter> is found, the persister will be disabled.
- </para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <section id="sect-Reference_Guide-Portal_configuration-JCR_Configuration">
- <title>JCR Configuration</title>
- <para>
+ <programlisting linenumbering="numbered" language="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../code_samples/jcr-configuration.xml_code" parse="text"/></programlisting>
+ <section id="sect-Reference_Guide-Portal_configuration-JCR_Configuration">
+ <title>JCR Configuration</title>
+ <para>
The JCR Service can use multiple <emphasis>Repositories</emphasis> and each repository can have multiple <emphasis>Workspaces</emphasis>.
</para>
- <para>
+ <para>
Configure the workspaces by locating the workspace you need to modify in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
</para>
- <para>
+ <para>
The repository configuration supports human-readable values. They are not case-sensitive.
</para>
- <para>
+ <para>
Complete the appropriate element fields using the following value formats:
</para>
- <variablelist>
- <varlistentry>
- <term>Number formats:</term>
- <listitem>
- <para>
+ <variablelist>
+ <varlistentry>
+ <term>Number formats:</term>
+ <listitem>
+ <para>
<itemizedlist>
- <listitem>
- <para>
+ <listitem>
+ <para>
<emphasis role="bold">K</emphasis> or <emphasis role="bold">KB</emphasis> for kilobytes.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">M</emphasis> or <emphasis role="bold">MB</emphasis> for megabytes.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">G</emphasis> or <emphasis role="bold">GB</emphasis> for gigabytes.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">T</emphasis> or <emphasis role="bold">TB</emphasis> for terabytes.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Examples: 200K or 200KB; 4M or 4MB; 1.4G or 1.4GB; 10T or 10TB.
</para>
+ </listitem>
+ </itemizedlist>
- </listitem>
-
- </itemizedlist>
-
</para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Time formats:</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Time formats:</term>
+ <listitem>
+ <para>
<itemizedlist>
- <listitem>
- <para>
+ <listitem>
+ <para>
<emphasis role="bold">ms</emphasis> for milliseconds.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">s</emphasis> for seconds.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">m</emphasis> for minutes.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">h</emphasis> for hours.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">d</emphasis> for days.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="bold">w</emphasis> for weeks.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
The default time format is seconds if no other format is specified.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
Examples: 500ms or 500 milliseconds; 20, 20s or 20 seconds; 30m or 30 minutes; 12h or 12 hours; 5d or 5 days; 4w or 4 weeks.
</para>
+ </listitem>
+ </itemizedlist>
- </listitem>
-
- </itemizedlist>
-
</para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_configuration-Repository_service_configuration_JCR_repositories_configuration">
- <title>Repository service configuration (JCR repositories configuration)</title>
- <programlistingco>
- <areaspec>
- <!-- 1 --> <area coords="1 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-default-repository" />
- <!-- 2 --> <area coords="2 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-repositories" />
- <!-- 3 --> <area coords="3 125" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-name" />
- <!-- 4 --> <area coords="3 125" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-default-workspace" />
- <!-- 5 --> <area coords="3 125" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-system-workspace" />
- <!-- 6 --> <area coords="4 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-security-domain" />
- <!-- 7 --> <area coords="5 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-access-control" />
- <!-- 8 --> <area coords="6 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-authentication-policy" />
- <!-- 9 --> <area coords="9 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-workspaces" />
- <!-- 10 --> <area coords="13 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-workspace-name" />
- <!-- 11 --> <area coords="14 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-container" />
- <!-- 12 --> <area coords="34 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_initializer" />
- <!-- 13 --> <area coords="40 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_cache" />
- <!-- 14 --> <area coords="48 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_query-handler" />
- <!-- 15 --> <area coords="61 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_lock-manager-timeout" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_Configuration/orig.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <!-- 1 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-default-repository">
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Portal_configuration-Repository_service_configuration_JCR_repositories_configuration">
+ <title>Repository service configuration (JCR repositories configuration)</title>
+ <programlistingco>
+ <areaspec>
+<!-- 1 --> <area coords="1 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-default-repository"/>
+<!-- 2 --> <area coords="2 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-repositories"/>
+<!-- 3 --> <area coords="3 125" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-name"/>
+<!-- 4 --> <area coords="3 125" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-default-workspace"/>
+<!-- 5 --> <area coords="3 125" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-system-workspace"/>
+<!-- 6 --> <area coords="4 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-security-domain"/>
+<!-- 7 --> <area coords="5 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-access-control"/>
+<!-- 8 --> <area coords="6 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-authentication-policy"/>
+<!-- 9 --> <area coords="9 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-workspaces"/>
+<!-- 10 --> <area coords="13 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-workspace-name"/>
+<!-- 11 --> <area coords="14 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-container"/>
+<!-- 12 --> <area coords="34 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_initializer"/>
+<!-- 13 --> <area coords="40 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_cache"/>
+<!-- 14 --> <area coords="48 165" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_query-handler"/>
+<!-- 15 --> <area coords="61 60" id="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_lock-manager-timeout"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../../extras/Advanced_Development_JCR_Configuration/orig.xml" parse="text"/></programlisting>
+ <calloutlist>
+<!-- 1 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-default-repository">
+ <para>
<emphasis>default-repository</emphasis>: The name of a default repository (one returned by <parameter> RepositoryService.getRepository() </parameter> ).
</para>
-
- </callout>
- <!-- 2 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-repositories">
- <para>
+ </callout>
+<!-- 2 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-repositories">
+ <para>
<emphasis>repositories</emphasis>: The list of repositories.
</para>
-
- </callout>
- <!-- 3 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-name">
- <para>
+ </callout>
+<!-- 3 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-name">
+ <para>
<emphasis>name</emphasis>: The name of a repository.
</para>
-
- </callout>
- <!-- 4 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-default-workspace">
- <para>
- <emphasis>default-workspace</emphasis>: The name of a workspace obtained using Session's login() or login(Credentials) methods (ones without an explicit workspace name).
+ </callout>
+<!-- 4 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-default-workspace">
+ <para>
+ <emphasis>default-workspace</emphasis>: The name of a workspace obtained using Session's login() or login(Credentials) methods (ones without an explicit workspace name).
</para>
-
- </callout>
- <!-- 5 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-system-workspace">
- <para>
+ </callout>
+<!-- 5 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-system-workspace">
+ <para>
<emphasis>system-workspace</emphasis>: The name of workspace where <emphasis>/jcr:system</emphasis> node is placed.
</para>
-
- </callout>
- <!-- 6 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-security-domain">
- <para>
+ </callout>
+<!-- 6 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-security-domain">
+ <para>
<emphasis>security-domain</emphasis>: The name of a security domain for JAAS authentication.
</para>
-
- </callout>
- <!-- 7 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-access-control">
- <para>
+ </callout>
+<!-- 7 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-access-control">
+ <para>
<emphasis>access-control</emphasis>: The name of an access control policy. There can be 3 types: optional - ACL is created on-demand(default), disable - no access control, mandatory - an ACL is created for each added node(not supported yet).
</para>
-
- </callout>
- <!-- 8 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-authentication-policy">
- <para>
+ </callout>
+<!-- 8 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-authentication-policy">
+ <para>
<emphasis>authentication-policy</emphasis>: The name of an authentication policy class.
</para>
-
- </callout>
- <!-- 9 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-workspaces">
- <para>
+ </callout>
+<!-- 9 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-workspaces">
+ <para>
<emphasis>workspaces</emphasis>: The list of workspaces.
</para>
-
- </callout>
- <!-- 10 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-workspace-name">
- <para>
+ </callout>
+<!-- 10 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-workspace-name">
+ <para>
The name of the workspace.
</para>
-
- </callout>
- <!-- 11 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-container">
- <para>
+ </callout>
+<!-- 11 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-container">
+ <para>
Workspace data container (physical storage) configuration.
</para>
-
- </callout>
- <!-- 12 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_initializer">
- <para>
+ </callout>
+<!-- 12 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_initializer">
+ <para>
Workspace initializer configuration.
</para>
-
- </callout>
- <!-- 13 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_cache">
- <para>
+ </callout>
+<!-- 13 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_cache">
+ <para>
Workspace storage cache configuration.
</para>
-
- </callout>
- <!-- 14 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_query-handler">
- <para>
+ </callout>
+<!-- 14 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_query-handler">
+ <para>
Query handler configuration.
</para>
-
- </callout>
- <!-- 15 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_lock-manager-timeout">
- <para>
+ </callout>
+<!-- 15 --> <callout arearefs="area-Reference_Guide-JCR_configuration-Example_of_the_portal_system_workspace-service_lock-manager-timeout">
+ <para>
The amount of time before the unused global lock is removed.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <note>
- <title><parameter> session-max-age </parameter></title>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <note>
+ <title>
+ <parameter> session-max-age </parameter>
+ </title>
+ <para>
<emphasis>session-max-age</emphasis>: This parameter is not shown in the example file above as it is not a required setting. It sets the time after which an idle session will be removed (called logout). If it is not set up, an idle session will never be removed.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
<emphasis role="bold">lock-remover-max-threads</emphasis>: Number of threads that can serve LockRemover tasks. Default value is 1. Repository may have many workspaces, each workspace have own LockManager. JCR supports Locks with defined lifetime. Such a lock must be removed is it become expired. That is what LockRemovers does. But LockRemovers is not an independent timer-threads, its a task that executed each 30 seconds. Such a task is served by ThreadPoolExecutor which may use different number of threads.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_configuration-Workspace_configuration">
- <title>Workspace configuration:</title>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>name</term>
- <listitem>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Portal_configuration-Workspace_configuration">
+ <title>Workspace configuration:</title>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+ <para>
The name of a workspace.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>auto-init-root-nodetype</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>auto-init-root-nodetype</term>
+ <listitem>
+ <para>
DEPRECATED in JCR 1.9 (use initializer). The node type for root node initialization.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>container</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>container</term>
+ <listitem>
+ <para>
Workspace data container (physical storage) configuration.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>initializer</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>initializer</term>
+ <listitem>
+ <para>
Workspace initializer configuration.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>cache</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>cache</term>
+ <listitem>
+ <para>
Workspace storage cache configuration.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>query-handler</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>query-handler</term>
+ <listitem>
+ <para>
Query handler configuration.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>auto-init-permissions</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>auto-init-permissions</term>
+ <listitem>
+ <para>
DEPRECATED in JCR 1.9 (use initializer). Default permissions of the root node. It is defined as a set of semicolon-delimited permissions containing a group of space-delimited identities and the type of permission.
</para>
- <para>
- For example, any read; <literal>:/admin read;</literal>:/admin add_node; <literal>:/admin set_property;</literal>:/admin remove means that users from group <literal>admin</literal> have all permissions and other users have only a 'read' permission.
+ <para>
+ For example, any read; <literal>:/admin read;</literal>:/admin add_node; <literal>:/admin set_property;</literal>:/admin remove means that users from group <literal>admin</literal> have all permissions and other users have only a 'read' permission.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_configuration-Workspace_data_container_configuration">
- <title>Workspace data container configuration:</title>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>class</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Portal_configuration-Workspace_data_container_configuration">
+ <title>Workspace data container configuration:</title>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
A workspace data container class name.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>properties</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
The list of properties (name-value pairs) for the concrete Workspace data container.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <table id="tabl-Reference_Guide-Workspace_data_container_configuration-Parameter_Descriptions">
- <title>Parameter Descriptions</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Parameter
- </entry>
- <entry>
- Description
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- trigger_events_for_descendents_on_rename
- </entry>
- <entry>
- indicates if need to trigger events for descendants on rename or not. It allows to increase performance on rename operation but in same time Observation is not notified, has default value true
- </entry>
-
- </row>
- <row>
- <entry>
- lazy-node-iterator-page-size
- </entry>
- <entry>
- the page size for lazy iterator. Indicates how many nodes can be retrieved from storage per request. The default value is 100
- </entry>
-
- </row>
- <row>
- <entry>
- acl-bloomfilter-false-positive-probability
- </entry>
- <entry>
- ACL Bloom-filter desired false positive probability. Range [0..1]. Default value 0.1d. (See the note below)
- </entry>
-
- </row>
- <row>
- <entry>
- acl-bloomfilter-elements-number
- </entry>
- <entry>
- Expected number of ACL-elements in the Bloom-filter. Default value 1000000. (See the note below)
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <note>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <table id="tabl-Reference_Guide-Workspace_data_container_configuration-Parameter_Descriptions">
+ <title>Parameter Descriptions</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry> Parameter </entry>
+ <entry> Description </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> trigger_events_for_descendents_on_rename </entry>
+ <entry> indicates if need to trigger events for descendants on rename or not. It allows to increase performance on rename operation but in same time Observation is not notified, has default value true </entry>
+ </row>
+ <row>
+ <entry> lazy-node-iterator-page-size </entry>
+ <entry> the page size for lazy iterator. Indicates how many nodes can be retrieved from storage per request. The default value is 100 </entry>
+ </row>
+ <row>
+ <entry> acl-bloomfilter-false-positive-probability </entry>
+ <entry> ACL Bloom-filter desired false positive probability. Range [0..1]. Default value 0.1d. (See the note below) </entry>
+ </row>
+ <row>
+ <entry> acl-bloomfilter-elements-number </entry>
+ <entry> Expected number of ACL-elements in the Bloom-filter. Default value 1000000. (See the note below) </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <note>
+ <para>
Bloom filters are not supported by all the cache implementations so far only the implementation for infinispan supports it.
</para>
-
- </note>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>value-storage</term>
- <listitem>
- <para>
- The list of value storage plugins.
+ </note>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>value-storage</term>
+ <listitem>
+ <para>
+ The list of value storage plug-ins.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_configuration-Value_Storage_plugin_configuration_for_data_container">
- <title>Value Storage plugin configuration (for data container):</title>
- <note>
- <para>
- The value-storage element is optional. If you don't include it, the values will be stored as BLOBs inside the database.
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Portal_configuration-Value_Storage_plugin_configuration_for_data_container">
+ <title>Value Storage plug-in configuration (for data container):</title>
+ <note>
+ <para>
+ The value-storage element is optional. If you don't include it, the values will be stored as BLOBs inside the database.
</para>
- </note>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>value-storage</term>
- <listitem>
- <para>
- Optional value Storage plugin definition.
+ </note>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>value-storage</term>
+ <listitem>
+ <para>
+ Optional value Storage plug-in definition.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>class</term>
- <listitem>
- <para>
- A value storage plugin class name (attribute).
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
+ A value storage plug-in class name (attribute).
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>properties</term>
- <listitem>
- <para>
- The list of properties (name-value pairs) for a concrete Value Storage plugin.
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
+ The list of properties (name-value pairs) for a concrete Value Storage plug-in.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>filters</term>
- <listitem>
- <para>
- The list of filters defining conditions when this plugin is applicable.
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>filters</term>
+ <listitem>
+ <para>
+ The list of filters defining conditions when this plug-in is applicable.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_configuration-Initializer_configuration_optional">
- <title>Initializer configuration (optional):</title>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>class</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Portal_configuration-Initializer_configuration_optional">
+ <title>Initializer configuration (optional):</title>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
Initializer implementation class.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>properties</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
The list of properties (name-value pairs). Properties are supported.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>root-nodetype</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>root-nodetype</term>
+ <listitem>
+ <para>
The node type for root node initialization.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>root-permissions</term>
- <listitem>
- <para>
- Default permissions of the root node. It is defined as a set of semicolon-delimited permissions containing a group of space-delimited identities (user, group etc, see Organization service documentation for details) and the type of permission. For example any read; <emphasis role="bold">:/admin read;</emphasis>:/admin add_node; <emphasis role="bold">:/admin set_property;</emphasis>:/admin remove means that users from group <emphasis>admin</emphasis> have all permissions and other users have only a 'read' permission.
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>root-permissions</term>
+ <listitem>
+ <para>
+ Default permissions of the root node. It is defined as a set of semicolon-delimited permissions containing a group of space-delimited identities (user, group etc, see Organization service documentation for details) and the type of permission. For example any read; <emphasis role="bold">:/admin read;</emphasis>:/admin add_node; <emphasis role="bold">:/admin set_property;</emphasis>:/admin remove means that users from group <emphasis>admin</emphasis> have all permissions and other users have only a 'read' permission.
</para>
- <para>
+ <para>
Configurable initializer adds a capability to override workspace initial startup procedure (used for Clustering). Also it replaces workspace element parameters auto-init-root-nodetype and auto-init-permissions with root-nodetype and root-permissions.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_configuration-Cache_configuration">
- <title>Cache configuration:</title>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>enabled</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Portal_configuration-Cache_configuration">
+ <title>Cache configuration:</title>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>enabled</term>
+ <listitem>
+ <para>
If workspace cache is enabled or not.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>class</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
Cache implementation class, optional from 1.9. Default value is. <literal>org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl</literal>.
</para>
- <para>
+ <para>
Cache can be configured to use concrete implementation of WorkspaceStorageCache interface. JCR core has two implementation to use:
</para>
- <itemizedlist>
- <listitem>
- <para>
+ <itemizedlist>
+ <listitem>
+ <para>
LinkedWorkspaceStorageCacheImpl - default, with configurable read behavior and statistic.
</para>
-
- </listitem>
- <listitem>
- <para>
+ </listitem>
+ <listitem>
+ <para>
WorkspaceStorageCacheImpl - pre 1.9, still can be used.
</para>
- </listitem>
- </itemizedlist>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>properties</term>
- <listitem>
- <para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
The list of properties (name-value pairs) for Workspace cache.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>max-size</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>max-size</term>
+ <listitem>
+ <para>
Cache maximum size (maxSize prior to v.1.9).
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>live-time</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>live-time</term>
+ <listitem>
+ <para>
Cached item live time (liveTime prior to v.1.9).
</para>
- <para>
+ <para>
From 1.9 <literal>LinkedWorkspaceStorageCacheImpl</literal> supports additional optional parameters.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>statistic-period</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>statistic-period</term>
+ <listitem>
+ <para>
Period (time format) of cache statistic thread execution, 5 minutes by default.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>statistic-log</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>statistic-log</term>
+ <listitem>
+ <para>
If true cache statistic will be printed to default logger (log.info), false by default or not.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>statistic-clean</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>statistic-clean</term>
+ <listitem>
+ <para>
If true cache statistic will be cleaned after was gathered, false by default or not.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>cleaner-period</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>cleaner-period</term>
+ <listitem>
+ <para>
Period of the eldest items remover execution, 20 minutes by default.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>blocking-users-count</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>blocking-users-count</term>
+ <listitem>
+ <para>
Number of concurrent users allowed to read cache storage, 0 - unlimited by default.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_configuration-Query_Handler_configuration">
- <title>Query Handler configuration:</title>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>class</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Portal_configuration-Query_Handler_configuration">
+ <title>Query Handler configuration:</title>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
A Query Handler class name.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>properties</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
The list of properties (name-value pairs) for a Query Handler (indexDir).
</para>
- <para>
+ <para>
Properties and advanced features described in Search Configuration.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-Portal_configuration-Lock_Manager_configuration">
- <title>Lock Manager configuration:</title>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>time-out</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section id="sect-Reference_Guide-Portal_configuration-Lock_Manager_configuration">
+ <title>Lock Manager configuration:</title>
+ <variablelist>
+ <title/>
+ <varlistentry>
+ <term>time-out</term>
+ <listitem>
+ <para>
Time after which the unused global lock will be removed.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>persister</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>persister</term>
+ <listitem>
+ <para>
A class for storing lock information for future use. For example, remove lock after jcr restart.
</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>path</term>
- <listitem>
- <para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>path</term>
+ <listitem>
+ <para>
A lock folder. Each workspace has its own one.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </section>
-
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
<!-- <section id="sect-Reference_Guide-Portal_configuration-Help_application_to_prohibit_the_use_of_closed_sessions">
<title>Help application to prohibit the use of closed sessions</title>
<para>
@@ -807,11 +672,5 @@
</orderedlist>
- </section> -->
-
-
- </section>
-
-
+ </section> --> </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/workspace-persistence-storage.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/workspace-persistence-storage.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/workspace-persistence-storage.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,159 +1,136 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Workspace_Data_Container">
- <title>Workspace Data Container</title>
- <para>
- Each Workspace of the JCR has its own persistent storage to hold that workspace's items data. The eXo JCR can be configured so that it can use one or more workspaces that are logical units of the repository content.
+ <title>Workspace Data Container</title>
+ <para>
+ Each Workspace of the JCR has its own persistent storage to hold that workspace's items data. The eXo JCR can be configured so that it can use one or more workspaces that are logical units of the repository content.
</para>
- <para>
+ <para>
The physical data storage mechanism is configured using mandatory element <emphasis role="bold">container</emphasis>. The type of container is described in the attribute <parameter>class = <replaceable>fully_qualified_name_of_org.exoplatform.services.jcr.storage.WorkspaceDataContainer_subclass</replaceable></parameter>. For example:
</para>
- <programlistingco>
- <areaspec>
- <area coords="3" id="area-Reference_Guide-Workspace_Data_Container-source_name" />
- <area coords="4" id="area-Reference_Guide-Workspace_Data_Container-dialect" />
- <area coords="5" id="area-Reference_Guide-Workspace_Data_Container-multidb" />
- <area coords="6" id="area-Reference_Guide-Workspace_Data_Container-maxbuffer" />
- <area coords="7" id="area-Reference_Guide-Workspace_Data_Container-swap" />
- <area coords="8" id="area-Reference_Guide-Workspace_Data_Container-lazy-node-iterator-page-size" />
- <area coords="9" id="area-Reference_Guide-Workspace_Data_Container-acl-bloomfilter-false-positive-probability" />
- <area coords="10" id="area-Reference_Guide-Workspace_Data_Container-acl-bloomfilter-elements-number" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <programlistingco>
+ <areaspec>
+ <area coords="3" id="area-Reference_Guide-Workspace_Data_Container-source_name"/>
+ <area coords="4" id="area-Reference_Guide-Workspace_Data_Container-dialect"/>
+ <area coords="5" id="area-Reference_Guide-Workspace_Data_Container-multidb"/>
+ <area coords="6" id="area-Reference_Guide-Workspace_Data_Container-maxbuffer"/>
+ <area coords="7" id="area-Reference_Guide-Workspace_Data_Container-swap"/>
+ <area coords="8" id="area-Reference_Guide-Workspace_Data_Container-lazy-node-iterator-page-size"/>
+ <area coords="9" id="area-Reference_Guide-Workspace_Data_Container-acl-bloomfilter-false-positive-probability"/>
+ <area coords="10" id="area-Reference_Guide-Workspace_Data_Container-acl-bloomfilter-elements-number"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
- <property name="source-name" value="jdbcjcr1"/>
- <property name="dialect" value="hsqldb"/>
- <property name="multi-db" value="true"/>
- <property name="max-buffer-size" value="200K"/>
- <property name="swap-directory" value="target/temp/swap/ws"/>
- <property name="lazy-node-iterator-page-size" value="50"/>
- <property name="acl-bloomfilter-false-positive-probability" value="0.1d"/>
- <property name="acl-bloomfilter-elements-number" value="1000000"/>
+ <property name="source-name" value="jdbcjcr1"/>
+ <property name="dialect" value="hsqldb"/>
+ <property name="multi-db" value="true"/>
+ <property name="max-buffer-size" value="200K"/>
+ <property name="swap-directory" value="target/temp/swap/ws"/>
+ <property name="lazy-node-iterator-page-size" value="50"/>
+ <property name="acl-bloomfilter-false-positive-probability" value="0.1d"/>
+ <property name="acl-bloomfilter-elements-number" value="1000000"/>
</properties></programlisting>
- <calloutlist>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-source_name">
- <para>
+ <calloutlist>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-source_name">
+ <para>
<literal>source-name</literal>: The JDBC data source name which is registered in JDNI by InitialContextInitializer. This was known as <literal>sourceName</literal> in versions prior to 1.9.
</para>
-
- </callout>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-dialect">
- <para>
+ </callout>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-dialect">
+ <para>
<literal>dialect</literal>: The database dialect. Must be one of the following: <literal>hsqldb</literal>, <literal>mysql</literal>, <literal>mysql-utf8</literal>, <literal>pgsql</literal>, <literal>oracle</literal>, <literal>oracle-oci</literal>, <literal>mssql</literal>, <literal>sybase</literal>, <literal>derby</literal>, <literal>db2</literal> or <literal>db2v8</literal>).
</para>
-
- </callout>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-multidb">
- <para>
+ </callout>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-multidb">
+ <para>
<literal>multi-db</literal>: This parameter, if <literal>true</literal>, enables multi-database container.
</para>
-
- </callout>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-maxbuffer">
- <para>
+ </callout>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-maxbuffer">
+ <para>
<literal>max-buffer-size</literal>: A threshold in bytes. If a value size is greater than this setting, then it will be spooled to a temporary file.
</para>
-
- </callout>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-swap">
- <para>
+ </callout>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-swap">
+ <para>
<literal>swap-directory</literal>: A location where the value will be spooled if no value storage is configured but a <literal>max-buffer-size</literal> is exceeded.
</para>
-
- </callout>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-lazy-node-iterator-page-size">
- <para>
- <emphasis role="bold">lazy-node-iterator-page-size</emphasis>: "Lazy" child nodes iterator settings. Defines size of page, the number of nodes that are retrieved from persistent storage at once.
+ </callout>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-lazy-node-iterator-page-size">
+ <para>
+ <emphasis role="bold">lazy-node-iterator-page-size</emphasis>: "Lazy" child nodes iterator settings. Defines size of page, the number of nodes that are retrieved from persistent storage at once.
</para>
-
- </callout>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-acl-bloomfilter-false-positive-probability">
- <para>
+ </callout>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-acl-bloomfilter-false-positive-probability">
+ <para>
<emphasis role="bold">acl-bloomfilter-false-positive-probability</emphasis>: ACL Bloom-filter settings. ACL Bloom-filter desired false positive probability. Range [0..1]. Default value 0.1d.
</para>
-
- </callout>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-acl-bloomfilter-elements-number">
- <para>
+ </callout>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-acl-bloomfilter-elements-number">
+ <para>
<emphasis role="bold">acl-bloomfilter-elements-number</emphasis>: ACL Bloom-filter settings. Expected number of ACL-elements in the Bloom-filter. Default value 1000000.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <note>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <note>
+ <para>
Bloom filters are not supported by all the cache implementations so far only the inplementation for infinispan supports it.
</para>
- <para>
+ <para>
Bloom-filter used to avoid read nodes that definitely do not have ACL. <emphasis role="bold">acl-bloomfilter-false-positive-probability</emphasis> and <emphasis role="bold">acl-bloomfilter-elements-number</emphasis> used to configure such filters. Bloom filters are not supported by all the cache implementations so far only the inplementation for infinispan supports it.
</para>
- <para>
+ <para>
More about Bloom filters you can read here <ulink url="http://en.wikipedia.org/wiki/Bloom_filter">http://en.wikipedia.org/wiki/Bloom_filter</ulink>.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
The eXo JCR has a JDBC-based, relational database, production ready <emphasis role="bold">Workspace Data Container</emphasis>.
</para>
- <para>
+ <para>
Workspace Data Container <emphasis>may</emphasis> support external storages for <literal>javax.jcr.Value</literal> (which can be the case for BLOB values for example) using the optional element <literal>value-storages</literal>.
</para>
- <para>
- The Data Container will try to read or write a Value using the underlying value storage plugin if the filter criteria (see below) match the current property.
+ <para>
+ The Data Container will try to read or write a Value using the underlying value storage plug-in if the filter criteria (see below) match the current property.
</para>
- <programlistingco>
- <areaspec>
- <area coords="2" id="area-Reference_Guide-Workspace_Data_Container-value_storage" />
- <area coords="6" id="area-Reference_Guide-Workspace_Data_Container-filters" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><value-storages>
- <value-storage id="Storage #1" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
+ <programlistingco>
+ <areaspec>
+ <area coords="2" id="area-Reference_Guide-Workspace_Data_Container-value_storage"/>
+ <area coords="6" id="area-Reference_Guide-Workspace_Data_Container-filters"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><value-storages>
+ <value-storage id="Storage #1" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
<properties>
- <property name="path" value="data/values"/>
+ <property name="path" value="data/values"/>
</properties>
<filters>
- <filter property-type="Binary" min-value-size="1M"/><!-- Values large of 1Mbyte -->
+ <filter property-type="Binary" min-value-size="1M"/><!-- Values large of 1Mbyte -->
</filters>
.........
</value-storages></programlisting>
- <calloutlist>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-value_storage">
- <para>
- <literal>value-storage</literal> is the subclass of <literal>org.exoplatform.services.jcr.storage.value.ValueStoragePlugin</literal> and <literal>properties</literal> are optional plugin specific parameters.
+ <calloutlist>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-value_storage">
+ <para>
+ <literal>value-storage</literal> is the subclass of <literal>org.exoplatform.services.jcr.storage.value.ValueStoragePlugin</literal> and <literal>properties</literal> are optional plug-in specific parameters.
</para>
-
- </callout>
- <!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-filters">
- <para>
+ </callout>
+<!-- # --> <callout arearefs="area-Reference_Guide-Workspace_Data_Container-filters">
+ <para>
<literal>filters</literal>: Each file value storage can have the filter(s) for incoming values. If there are several filter criteria, they all have to match (AND-Condition).
</para>
- <para>
+ <para>
A filter can match values by property type (property-type), property name (property-name), ancestor path (ancestor-path) and/or the size of values stored (min-value-size, e.g. 1M, 4.2G, 100 (bytes)).
</para>
- <para>
+ <para>
In a code sample, we use a filter with property-type and min-value-size only. That means that the storage is only for binary values whose size is greater than 1Mbyte.
</para>
- <para>
+ <para>
It is recommended that you store properties with large values in a file value storage only.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
+ </callout>
+ </calloutlist>
+ </programlistingco>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/data-container.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/data-container.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/data-container.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,588 +1,464 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JCR_Workspace_Data_Container">
- <title>JCR Workspace Data Container</title>
- <para>
- The JCR Workspace Data Container:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Covers the requirements on Workspace Data Container implementation.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Describes container life cycle.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Describes relations between container and high-level DataManagers.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <variablelist id="vari-Reference_Guide-JCR_Workspace_Data_Container-Concepts">
- <title>Concepts</title>
- <varlistentry>
- <term>Container and connection</term>
- <listitem>
- <para>
- The Workspace Data Container (container) serves Repository Workspace persistent storage.
- </para>
- <para>
- <literal>WorkspacePersistentDataManager</literal> (data manager) uses the container to perform <abbrev>CRUD</abbrev> (Create, Read, Update and Delete) operations on the persistent storage.
- </para>
- <para>
- Access to the storage in the data manager is implemented via a storage connection obtained from the container (<literal>WorkspaceDataContainer</literal> interface implementation).
- </para>
- <para>
- Each connection represents a transaction on the storage. Storage Connection (connection) should be an implementation of <literal>WorkspaceStorageConnection</literal>.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- The Container acts as a factory of a new storage connections. Usually, this method is designed to be synchronized to avoid possible concurrent issues.
- </para>
-
-<programlisting language="Java" role="Java">WorkspaceStorageConnection openConnection() throws RepositoryException;
+ <title>JCR Workspace Data Container</title>
+ <para>
+ The JCR Workspace Data Container:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Covers the requirements on Workspace Data Container implementation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Describes container life cycle.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Describes relations between container and high-level DataManagers.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <variablelist id="vari-Reference_Guide-JCR_Workspace_Data_Container-Concepts">
+ <title>Concepts</title>
+ <varlistentry>
+ <term>Container and connection</term>
+ <listitem>
+ <para>
+ The Workspace Data Container (container) serves Repository Workspace persistent storage.
+ </para>
+ <para>
+ <literal>WorkspacePersistentDataManager</literal> (data manager) uses the container to perform <abbrev>CRUD</abbrev> (Create, Read, Update and Delete) operations on the persistent storage.
+ </para>
+ <para>
+ Access to the storage in the data manager is implemented via a storage connection obtained from the container (<literal>WorkspaceDataContainer</literal> interface implementation).
+ </para>
+ <para>
+ Each connection represents a transaction on the storage. Storage Connection (connection) should be an implementation of <literal>WorkspaceStorageConnection</literal>.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The Container acts as a factory of a new storage connections. Usually, this method is designed to be synchronized to avoid possible concurrent issues.
+ </para>
+ <programlisting language="Java" role="Java">WorkspaceStorageConnection openConnection() throws RepositoryException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- The Storage connection might also be reused. This means reuse of a physical resource (JDBC Connection, for example) allocated by one connection in another.
- </para>
- <para>
- 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. If it is not used, a new connection will open.
- </para>
-
-<programlisting language="Java" role="Java">WorkspaceStorageConnection reuseConnection(WorkspaceStorageConnection original) throws RepositoryException;
+ </listitem>
+ <listitem>
+ <para>
+ The Storage connection might also be reused. This means reuse of a physical resource (JDBC Connection, for example) allocated by one connection in another.
+ </para>
+ <para>
+ 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. If it is not used, a new connection will open.
+ </para>
+ <programlisting language="Java" role="Java">WorkspaceStorageConnection reuseConnection(WorkspaceStorageConnection original) throws RepositoryException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- When checking for the existence of <literal>Same-Name Siblings</literal> (SNS), JCR Core can use either a new connection or an existing one. This behavior is defined via the Workspace Data Container configuration and is retrieved by using the special method:
- </para>
-
-<programlisting language="Java" role="Java">boolean isCheckSNSNewConnection();
+ </listitem>
+ <listitem>
+ <para>
+ When checking for the existence of <literal>Same-Name Siblings</literal> (SNS), JCR Core can use either a new connection or an existing one. This behavior is defined via the Workspace Data Container configuration and is retrieved by using the special method:
+ </para>
+ <programlisting language="Java" role="Java">boolean isCheckSNSNewConnection();
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- As container initialization is based solely on a written configuration, it is not possible to change a container's parameters after it has been created. This configuration consists of implementation class(s) and a set of properties and Value Storages configuration.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Value storages</term>
- <listitem>
- <para>
- The container provides an optional special mechanism for <emphasis role="bold">Value</emphasis> storing. It is possible to configure external Value Storages via the container configuration.
- </para>
- <para>
- Value Storage works as fully independent pluggable storage (however some storages are possible for a single container). All required parameters are obtained from the configuration, including the <literal>ValueStoragePluginimplementation</literal> class and a set of implementation specific properties and filters.
- </para>
- <para>
- Filters declare criteria which dictate what Values are stored. This means that the storage might only contain some of the Workspace content.
- </para>
- <para>
- The container obtains Values from Storages with the <literal>ValueStoragePluginProvider</literal> component. This component acts as a factory of Value channels (<literal>ValueIOChannel</literal>). Value Channels provide all CRUD operations for Value Storage, while respecting the transaction manner of work (based on implementation specifics of the storages).
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Lifecycle</term>
- <listitem>
- <para>
- The Container is used for <emphasis>read</emphasis> and <emphasis>write</emphasis> operations by the data manager.
- </para>
- <para>
- Read operations (<emphasis>getters</emphasis>) use the connection once and then closes it.
- </para>
- <para>
- Write operations use the commit method as a sequence of creating and/or updating calls and the final commit (or rollback if an error is encountered). Writes use one connection (plus one for the system workspace) per commit call. One connection guarantees transaction support for write operations. The commit or rollback action should free and/or clean all resources consumed by the container (connection).
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Value storage life-cycle</term>
- <listitem>
- <para>
- Value storage is used from within the container. <emphasis>Read</emphasis> actions are related to container reads while <emphasis>write</emphasis> actions are commit-related. The container (connection) implementation should use transaction capabilities of the storages in the same way as for other operations.
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <section id="sect-Reference_Guide-JCR_Workspace_Data_Container-Requirements">
- <title>Requirements</title>
- <para>
- Connection creation and reuse should be a thread safe operation. The connection provides <abbrev>CRUD</abbrev> operations support on the storage.
- </para>
- <itemizedlist id="item-Reference_Guide-Requirements-Read_Operations">
- <title>Read Operations</title>
- <listitem>
- <para>
- Read <literal>ItemData</literal> from the storage by item identifier:
- </para>
-
-<programlisting language="Java" role="Java">ItemData getItemData(String identifier) throws RepositoryException, IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ As container initialization is based solely on a written configuration, it is not possible to change a container's parameters after it has been created. This configuration consists of implementation class(s) and a set of properties and Value Storages configuration.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Value storages</term>
+ <listitem>
+ <para>
+ The container provides an optional special mechanism for <emphasis role="bold">Value</emphasis> storing. It is possible to configure external Value Storages via the container configuration.
+ </para>
+ <para>
+ Value Storage works as fully independent pluggable storage (however some storages are possible for a single container). All required parameters are obtained from the configuration, including the <literal>ValueStoragePluginimplementation</literal> class and a set of implementation specific properties and filters.
+ </para>
+ <para>
+ Filters declare criteria which dictate what Values are stored. This means that the storage might only contain some of the Workspace content.
+ </para>
+ <para>
+ The container obtains Values from Storages with the <literal>ValueStoragePluginProvider</literal> component. This component acts as a factory of Value channels (<literal>ValueIOChannel</literal>). Value Channels provide all CRUD operations for Value Storage, while respecting the transaction manner of work (based on implementation specifics of the storages).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Lifecycle</term>
+ <listitem>
+ <para>
+ The Container is used for <emphasis>read</emphasis> and <emphasis>write</emphasis> operations by the data manager.
+ </para>
+ <para>
+ Read operations (<emphasis>getters</emphasis>) use the connection once and then closes it.
+ </para>
+ <para>
+ Write operations use the commit method as a sequence of creating and/or updating calls and the final commit (or rollback if an error is encountered). Writes use one connection (plus one for the system workspace) per commit call. One connection guarantees transaction support for write operations. The commit or rollback action should free and/or clean all resources consumed by the container (connection).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Value storage life-cycle</term>
+ <listitem>
+ <para>
+ Value storage is used from within the container. <emphasis>Read</emphasis> actions are related to container reads while <emphasis>write</emphasis> actions are commit-related. The container (connection) implementation should use transaction capabilities of the storages in the same way as for other operations.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <section id="sect-Reference_Guide-JCR_Workspace_Data_Container-Requirements">
+ <title>Requirements</title>
+ <para>
+ Connection creation and reuse should be a thread safe operation. The connection provides <abbrev>CRUD</abbrev> operations support on the storage.
+ </para>
+ <itemizedlist id="item-Reference_Guide-Requirements-Read_Operations">
+ <title>Read Operations</title>
+ <listitem>
+ <para>
+ Read <literal>ItemData</literal> from the storage by item identifier:
+ </para>
+ <programlisting language="Java" role="Java">ItemData getItemData(String identifier) throws RepositoryException, IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Read <literal>ItemData</literal> from the storage by using the parent and name of the item, related to the parent location:
- </para>
-
-<programlisting language="Java" role="Java">ItemData getItemData(NodeData parentData, QPathEntry name) throws RepositoryException,IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Read <literal>ItemData</literal> from the storage by using the parent and name of the item, related to the parent location:
+ </para>
+ <programlisting language="Java" role="Java">ItemData getItemData(NodeData parentData, QPathEntry name) throws RepositoryException,IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Read List of <literal>NodeData</literal> from the storage by using the parent location of the item:
- </para>
-
-<programlisting language="Java" role="Java">List<NodeData> getChildNodesData(NodeData parent) throws RepositoryException, IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Read List of <literal>NodeData</literal> from the storage by using the parent location of the item:
+ </para>
+ <programlisting language="Java" role="Java">List<NodeData> getChildNodesData(NodeData parent) throws RepositoryException, IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Read List of <literal>PropertyData</literal> from the storage by using the parent location of the item:
- </para>
-
-<programlisting language="Java" role="Java">List<PropertyData> getChildPropertiesData(NodeData parent) throws RepositoryException, IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Read List of <literal>PropertyData</literal> from the storage by using the parent location of the item:
+ </para>
+ <programlisting language="Java" role="Java">List<PropertyData> getChildPropertiesData(NodeData parent) throws RepositoryException, IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Read List of <literal>PropertyData</literal> with empty <literal>ValueData</literal> from the storage by using the parent location of the item:
- </para>
- <para>
- This method is specifically dedicated to non-content modification operations (Items delete, for example).
- </para>
-
-<programlisting language="Java" role="Java">List<PropertyData> listChildPropertiesData(NodeData parent) throws RepositoryException, IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Read List of <literal>PropertyData</literal> with empty <literal>ValueData</literal> from the storage by using the parent location of the item:
+ </para>
+ <para>
+ This method is specifically dedicated to non-content modification operations (Items delete, for example).
+ </para>
+ <programlisting language="Java" role="Java">List<PropertyData> listChildPropertiesData(NodeData parent) throws RepositoryException, IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Read List of <literal>PropertyData</literal> from the storage by using the parent location of the item:
- </para>
- <para>
- It's REFERENCE type: Properties referencing Node with given <literal>nodeIdentifier</literal>. See more in <literal>javax.jcr.Node.getReferences()</literal>
- </para>
-
-<programlisting language="Java" role="Java">List<PropertyData> getReferencesData(String nodeIdentifier) throws RepositoryException,IllegalStateException,UnsupportedOperationException;
+ </listitem>
+ <listitem>
+ <para>
+ Read List of <literal>PropertyData</literal> from the storage by using the parent location of the item:
+ </para>
+ <para>
+ It's REFERENCE type: Properties referencing Node with given <literal>nodeIdentifier</literal>. See more in <literal>javax.jcr.Node.getReferences()</literal>
+ </para>
+ <programlisting language="Java" role="Java">List<PropertyData> getReferencesData(String nodeIdentifier) throws RepositoryException,IllegalStateException,UnsupportedOperationException;
</programlisting>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide-Requirements-Write_Operations">
- <title>Write Operations</title>
- <listitem>
- <para>
- Add single <literal>NodeData</literal>.
- </para>
-
-<programlisting language="Java" role="Java">void add(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
+ </listitem>
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide-Requirements-Write_Operations">
+ <title>Write Operations</title>
+ <listitem>
+ <para>
+ Add single <literal>NodeData</literal>.
+ </para>
+ <programlisting language="Java" role="Java">void add(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Add single <literal>PropertyData</literal>:
- </para>
-
-<programlisting language="Java" role="Java">void add(PropertyData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Add single <literal>PropertyData</literal>:
+ </para>
+ <programlisting language="Java" role="Java">void add(PropertyData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Update <literal>NodeData</literal>:
- </para>
-
-<programlisting language="Java" role="Java">void update(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Update <literal>NodeData</literal>:
+ </para>
+ <programlisting language="Java" role="Java">void update(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Update <literal>PropertyData</literal>:
- </para>
-
-<programlisting language="Java" role="Java">void update(PropertyData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Update <literal>PropertyData</literal>:
+ </para>
+ <programlisting language="Java" role="Java">void update(PropertyData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Rename <literal>NodeData</literal> by using Node identifier and new name and indexing from the data:
- </para>
-
-<programlisting language="Java" role="Java">void rename(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Rename <literal>NodeData</literal> by using Node identifier and new name and indexing from the data:
+ </para>
+ <programlisting language="Java" role="Java">void rename(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Delete <literal>NodeData</literal>:
- </para>
-
-<programlisting language="Java" role="Java">void delete(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Delete <literal>NodeData</literal>:
+ </para>
+ <programlisting language="Java" role="Java">void delete(NodeData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Delete <literal>PropertyData</literal>:
- </para>
-
-<programlisting language="Java" role="Java">void delete(PropertyData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
+ </listitem>
+ <listitem>
+ <para>
+ Delete <literal>PropertyData</literal>:
+ </para>
+ <programlisting language="Java" role="Java">void delete(PropertyData data) throws RepositoryException,UnsupportedOperationException,InvalidItemStateException,IllegalStateException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Persist changes and closes connection. It can be database transaction commit for instance etc.
- </para>
-
-<programlisting language="Java" role="Java">void commit() throws IllegalStateException, RepositoryException;
+ </listitem>
+ <listitem>
+ <para>
+ Persist changes and closes connection. It can be database transaction commit for instance etc.
+ </para>
+ <programlisting language="Java" role="Java">void commit() throws IllegalStateException, RepositoryException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Refuse persistent changes and closes connection. It can be database transaction rollback for instance etc.
- </para>
-
-<programlisting language="Java" role="Java">void rollback() throws IllegalStateException, RepositoryException;
+ </listitem>
+ <listitem>
+ <para>
+ Refuse persistent changes and closes connection. It can be database transaction rollback for instance etc.
+ </para>
+ <programlisting language="Java" role="Java">void rollback() throws IllegalStateException, RepositoryException;
</programlisting>
- <para>
- All methods throw <literal>IllegalStateException</literal> if the connection is closed, <literal>UnsupportedOperationException</literal> if the method is not supported and <literal>RepositoryException</literal> if some errors occur during preparation, validation or persistence.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide-Requirements-State_Operations">
- <title>State Operations</title>
- <listitem>
- <para>
- Return true if connection can be used:
- </para>
-
-<programlisting language="Java" role="Java">boolean isOpened();
+ <para>
+ All methods throw <literal>IllegalStateException</literal> if the connection is closed, <literal>UnsupportedOperationException</literal> if the method is not supported and <literal>RepositoryException</literal> if some errors occur during preparation, validation or persistence.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide-Requirements-State_Operations">
+ <title>State Operations</title>
+ <listitem>
+ <para>
+ Return true if connection can be used:
+ </para>
+ <programlisting language="Java" role="Java">boolean isOpened();
</programlisting>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide-Requirements-Validation_of_write_operations">
- <title>Validation of write operations</title>
- <listitem>
- <para>
- As the 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>
-
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide-Validation_of_write_operations-On_ADD_errors">
- <title>On ADD errors</title>
- <listitem>
- <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: Parent ID, Name, Index (Item with parent ID, name and index already exists).
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide-Validation_of_write_operations-On_DELETE_errors">
- <title>On DELETE errors</title>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Item not found. Condition ID.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Can not delete parent till children exists.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide-Validation_of_write_operations-On_UPDATE_errors">
- <title>On UPDATE errors</title>
- <listitem>
- <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>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide-Requirements-Consistency_of_save">
- <title>Consistency of save</title>
- <listitem>
- <para>
- The container (connection) should implement consistency of Commit (Rollback) to allow a reversion of applied changes should an operation fail before a commit.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist id="item-Reference_Guide-Requirements-Value_storages_API">
- <title>Value storages API</title>
- <listitem>
- <itemizedlist id="item-Reference_Guide-Value_storages_API-Storages_provider">
- <title>Storages provider:</title>
- <listitem>
- <para>
- The container implementation obtains Values Storages options via the <literal>ValueStoragePluginProvider</literal> component. The <literal>ValueStoragePluginProvider</literal> acts as a factory for Value channels (ValueIOChannel) and has two methods for this purpose:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Return <literal>ValueIOChannel</literal> matched this property and <literal>valueOrderNumer</literal>. Null will be returned if no channel matches.
- </para>
-
-<programlisting language="Java" role="Java">ValueIOChannel getApplicableChannel(PropertyData property, int valueOrderNumer) throws IOException;
+ </listitem>
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide-Requirements-Validation_of_write_operations">
+ <title>Validation of write operations</title>
+ <listitem>
+ <para>
+ As the 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>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide-Validation_of_write_operations-On_ADD_errors">
+ <title>On ADD errors</title>
+ <listitem>
+ <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: Parent ID, Name, Index (Item with parent ID, name and index already exists).
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide-Validation_of_write_operations-On_DELETE_errors">
+ <title>On DELETE errors</title>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Item not found. Condition ID.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Can not delete parent till children exists.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide-Validation_of_write_operations-On_UPDATE_errors">
+ <title>On UPDATE errors</title>
+ <listitem>
+ <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>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide-Requirements-Consistency_of_save">
+ <title>Consistency of save</title>
+ <listitem>
+ <para>
+ The container (connection) should implement consistency of Commit (Rollback) to allow a reversion of applied changes should an operation fail before a commit.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist id="item-Reference_Guide-Requirements-Value_storages_API">
+ <title>Value storages API</title>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide-Value_storages_API-Storages_provider">
+ <title>Storages provider:</title>
+ <listitem>
+ <para>
+ The container implementation obtains Values Storages options via the <literal>ValueStoragePluginProvider</literal> component. The <literal>ValueStoragePluginProvider</literal> acts as a factory for Value channels (ValueIOChannel) and has two methods for this purpose:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Return <literal>ValueIOChannel</literal> matched this property and <literal>valueOrderNumer</literal>. Null will be returned if no channel matches.
+ </para>
+ <programlisting language="Java" role="Java">ValueIOChannel getApplicableChannel(PropertyData property, int valueOrderNumer) throws IOException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Return <literal>ValueIOChannel</literal> associated with given storageId.
- </para>
-
-<programlisting language="Java" role="Java">ValueIOChannel getChannel(String storageId) throws IOException, ValueStorageNotFoundException;
+ </listitem>
+ <listitem>
+ <para>
+ Return <literal>ValueIOChannel</literal> associated with given storageId.
+ </para>
+ <programlisting language="Java" role="Java">ValueIOChannel getChannel(String storageId) throws IOException, ValueStorageNotFoundException;
</programlisting>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
- <listitem>
- <para>
- There is also a method for a consistency check, however this method is not used in this storage implementation.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide-Value_storages_API-Value_storage_plugin">
- <title>Value storage plugin</title>
- <listitem>
- <para>
- The provider implementation should use the <literal>ValueStoragePlugin</literal> abstract class as a base for all storage implementations. Plugins provide support for provider implementation methods. A plugin's methods should be implemented as follows:
- </para>
-
- </listitem>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Initialize the plugin to be used at start up in <literal>ValueStoragePluginProvider</literal>.
- </para>
-
-<programlisting language="Java" role="Java">public abstract void init(Properties props, ValueDataResourceHolder resources) throws RepositoryConfigurationException, IOException;
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ There is also a method for a consistency check, however this method is not used in this storage implementation.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide-Value_storages_API-Value_storage_plugin">
+ <title>Value storage plug-in</title>
+ <listitem>
+ <para>
+ The provider implementation should use the <literal>ValueStoragePlugin</literal> abstract class as a base for all storage implementations. Plug-ins provide support for provider implementation methods. A plug-in's methods should be implemented as follows:
+ </para>
+ </listitem>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Initialize the plug-in to be used at start up in <literal>ValueStoragePluginProvider</literal>.
+ </para>
+ <programlisting language="Java" role="Java">public abstract void init(Properties props, ValueDataResourceHolder resources) throws RepositoryConfigurationException, IOException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Open <literal>ValueIOChannel</literal>. Used in <literal>ValueStoragePluginProvider.getApplicableChannel(PropertyData, int)</literal> and <literal>getChannel(String)</literal>:
- </para>
-
-<programlisting language="Java" role="Java">public abstract ValueIOChannel openIOChannel() throws IOException;
+ </listitem>
+ <listitem>
+ <para>
+ Open <literal>ValueIOChannel</literal>. Used in <literal>ValueStoragePluginProvider.getApplicableChannel(PropertyData, int)</literal> and <literal>getChannel(String)</literal>:
+ </para>
+ <programlisting language="Java" role="Java">public abstract ValueIOChannel openIOChannel() throws IOException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Return <literal>true</literal> if this storage has the same <literal>storageId</literal>.
- </para>
-
-<programlisting language="Java" role="Java">public abstract boolean isSame(String valueDataDescriptor);
+ </listitem>
+ <listitem>
+ <para>
+ Return <literal>true</literal> if this storage has the same <literal>storageId</literal>.
+ </para>
+ <programlisting language="Java" role="Java">public abstract boolean isSame(String valueDataDescriptor);
</programlisting>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide-Value_storages_API-Value_IO_channel">
- <title>Value I/O channel</title>
- <listitem>
- <para>
- The channel should implement an <literal>ValueIOChannel</literal> interface. The CRUD operation for Value Storage are:
- </para>
-
- </listitem>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Read Property value:
- </para>
-
-<programlisting language="Java" role="Java">ValueData read(String propertyId, int orderNumber, int maxBufferSize) throws IOException;
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide-Value_storages_API-Value_IO_channel">
+ <title>Value I/O channel</title>
+ <listitem>
+ <para>
+ The channel should implement an <literal>ValueIOChannel</literal> interface. The CRUD operation for Value Storage are:
+ </para>
+ </listitem>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Read Property value:
+ </para>
+ <programlisting language="Java" role="Java">ValueData read(String propertyId, int orderNumber, int maxBufferSize) throws IOException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Add or update Property value:
- </para>
-
-<programlisting language="Java" role="Java">void write(String propertyId, ValueData data) throws IOException;
+ </listitem>
+ <listitem>
+ <para>
+ Add or update Property value:
+ </para>
+ <programlisting language="Java" role="Java">void write(String propertyId, ValueData data) throws IOException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Delete All Property values:
- </para>
-
-<programlisting language="Java" role="Java">void delete(String propertyId) throws IOException;
+ </listitem>
+ <listitem>
+ <para>
+ Delete All Property values:
+ </para>
+ <programlisting language="Java" role="Java">void delete(String propertyId) throws IOException;
</programlisting>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
- <listitem>
- <itemizedlist id="item-Reference_Guide-Value_storages_API-Transaction_support_via_channel">
- <title>Transaction support via channel</title>
- <listitem>
- <para>
- Modification operations should be applied only when committing. Rollback is required for data created cleanup.
- </para>
-
- </listitem>
- <listitem>
- <itemizedlist>
- <listitem>
- <para>
- Commit channel changes:
- </para>
-
-<programlisting language="Java" role="Java">void commit() throws IOException;
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <itemizedlist id="item-Reference_Guide-Value_storages_API-Transaction_support_via_channel">
+ <title>Transaction support via channel</title>
+ <listitem>
+ <para>
+ Modification operations should be applied only when committing. Rollback is required for data created cleanup.
+ </para>
+ </listitem>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Commit channel changes:
+ </para>
+ <programlisting language="Java" role="Java">void commit() throws IOException;
</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Rollback channel changes:
- </para>
-
-<programlisting language="Java" role="Java">void rollback() throws IOException;
+ </listitem>
+ <listitem>
+ <para>
+ Rollback channel changes:
+ </para>
+ <programlisting language="Java" role="Java">void rollback() throws IOException;
</programlisting>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
-
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jbosscache-configuration-templates.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,191 +1,118 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JBoss_Cache_configuration">
- <title>JBoss Cache configuration</title>
- <section id="sect-Reference_Guide-JBoss_Cache_configuration-Indexer_lock_manager_and_data_container_configuration">
- <title>Indexer, lock manager and data container configuration</title>
- <para>
+ <title>JBoss Cache configuration</title>
+ <section id="sect-Reference_Guide-JBoss_Cache_configuration-Indexer_lock_manager_and_data_container_configuration">
+ <title>Indexer, lock manager and data container configuration</title>
+ <para>
Each mentioned component uses instances of the JBoss Cache product for caching in clustered environment. So every element has its own transport and has to be configured correctly. As usual, workspaces have similar configuration differing only in cluster-names (and, possibly, some other parameters). The simplest way to configure them is to define their own configuration files for each component in each workspace:
</para>
-
-<programlisting language="XML" role="XML"><property name="jbosscache-configuration" value="conf/standalone
- /test-jbosscache-lock-db1-ws1.xml" /></programlisting>
- <para>
- But if there are few workspaces, configuring them in such a way can be painful and hard-manageable. eXo JCR offers a template-based configuration for JBoss Cache instances. You can have one template for Lock Manager, one for Indexer and one for data container and use them in all the workspaces, defining the map of substitution parameters in a main configuration file. Just simply define ${jbosscache-<parameter name>} inside xml-template and list correct value in JCR configuration file just below "jbosscache-configuration", as shown:
+ <programlisting language="XML" role="XML"><property name="jbosscache-configuration" value="conf/standalone
+ /test-jbosscache-lock-db1-ws1.xml" /></programlisting>
+ <para>
+ But if there are few workspaces, configuring them in such a way can be painful and hard-manageable. eXo JCR offers a template-based configuration for JBoss Cache instances. You can have one template for Lock Manager, one for Indexer and one for data container and use them in all the workspaces, defining the map of substitution parameters in a main configuration file. Just simply define ${jbosscache-<parameter name>} inside xml-template and list correct value in JCR configuration file just below "jbosscache-configuration", as shown:
</para>
- <para>
+ <para>
Template:
</para>
-
-<programlisting language="XML" role="XML">...
-<clustering mode="replication" clusterName="${jbosscache-cluster-name}">
- <stateRetrieval timeout="20000" fetchInMemoryState="false" />
+ <programlisting language="XML" role="XML">...
+<clustering mode="replication" clusterName="${jbosscache-cluster-name}">
+ <stateRetrieval timeout="20000" fetchInMemoryState="false" />
...</programlisting>
- <para>
+ <para>
and JCR configuration file:
</para>
-
-<programlisting language="XML" role="XML">...
-<property name="jbosscache-configuration" value="jar:/conf/portal/jbosscache-lock.xml" />
-<property name="jbosscache-cluster-name" value="JCR-cluster-locks-db1-ws" />
+ <programlisting language="XML" role="XML">...
+<property name="jbosscache-configuration" value="jar:/conf/portal/jbosscache-lock.xml" />
+<property name="jbosscache-cluster-name" value="JCR-cluster-locks-db1-ws" />
...</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-JBoss_Cache_configuration-JGroups_configuration">
- <title>JGroups configuration</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-JBoss_Cache_configuration-JGroups_configuration">
+ <title>JGroups configuration</title>
+ <para>
JGroups is used by JBoss Cache for network communications and transport in a clustered environment. If the property is defined in component configuration, it will be injected into the JBoss Cache instance on start up.
</para>
-
-<programlisting language="XML" role="XML"><property name="jgroups-configuration" value="your/path/to/modified-udp.xml" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><property name="jgroups-configuration" value="your/path/to/modified-udp.xml" /></programlisting>
+ <para>
As outlined above, each component (lock manager, data container and query handler) for each workspace requires its own clustered environment. In other words, they have their own clusters with unique names.
</para>
- <para>
+ <para>
Each cluster should, by default, perform multi-casts on a separate port. This configuration leads to much unnecessary overhead on cluster. This is why JGroups offers a multiplexer feature, providing ability to use one single channel for set of clusters.
</para>
- <para>
- The multiplexer reduces network overheads and increase performance and stability of application. To enable multiplexer stack, you should define appropriate configuration file (<filename>upd-mux.xml</filename> is pre-shipped one with eXo JCR) and set "jgroups-multiplexer-stack" into "true".
+ <para>
+ The multiplexer reduces network overheads and increase performance and stability of application. To enable multiplexer stack, you should define appropriate configuration file (<filename>upd-mux.xml</filename> is pre-shipped one with eXo JCR) and set "jgroups-multiplexer-stack" into "true".
</para>
-
-<programlisting language="XML" role="XML"><property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" />
-<property name="jgroups-multiplexer-stack" value="true" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-JBoss_Cache_configuration-Sharing_JBoss_Cache_instances">
- <title>Sharing JBoss Cache instances</title>
- <para>
+ <programlisting language="XML" role="XML"><property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" />
+<property name="jgroups-multiplexer-stack" value="true" /></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-JBoss_Cache_configuration-Sharing_JBoss_Cache_instances">
+ <title>Sharing JBoss Cache instances</title>
+ <para>
As a single JBoss Cache instance can be demanding on resources, and the default setup will have an instance each for the indexer, the lock manager and the data container on each workspace, an environment that uses multiple workspace may benefit from sharing a JBoss Cache instance between several instances of the same type (the lock manager instance, for example).
</para>
- <para>
+ <para>
This feature is disabled by default and can be enabled at the component configuration level by setting the <parameter>jbosscache-shareable</parameter> property to <literal>true</literal>:
</para>
-
-<programlisting language="XML" role="XML"><property name="jbosscache-shareable" value="true" /></programlisting>
- <para>
+ <programlisting language="XML" role="XML"><property name="jbosscache-shareable" value="true" /></programlisting>
+ <para>
Once enabled, this feature will allow the JBoss Cache instance used by a component to be re-used by another components of the same type with the same JBoss Cache configuration (with the exception of the eviction configuration, which can differ).
</para>
- <para>
+ <para>
This means that all the parameters of type <parameter>jbosscache-<replaceable><PARAM_NAME></replaceable></parameter> must be identical between the components of same type of different workspaces.
</para>
- <para>
+ <para>
Therefore, if you can use the same values for the parameters in each workspace, you only need three JBoss Cache instances (one instance each for the indexer, lock manager and data container) running at once. This can relieve resource stress significantly.
</para>
-
- </section>
-
- <section id="sect-Reference_Guide-JBoss_Cache_configuration-Shipped_JBoss_Cache_configuration_templates">
- <title>Shipped JBoss Cache configuration templates</title>
- <para>
- The eXo JCR implementation is shipped with ready-to-use JBoss Cache configuration templates for JCR's components. They are located in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jbosscache</filename> directory, inside either the <filename>cluster</filename> or <filename>local</filename> directory.
+ </section>
+ <section id="sect-Reference_Guide-JBoss_Cache_configuration-Shipped_JBoss_Cache_configuration_templates">
+ <title>Shipped JBoss Cache configuration templates</title>
+ <para>
+ The eXo JCR implementation is shipped with ready-to-use JBoss Cache configuration templates for JCR's components. They are located in <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/jbosscache</filename> directory, inside either the <filename>cluster</filename> or <filename>local</filename> directory.
</para>
- <section id="sect-Reference_Guide-Shipped_JBoss_Cache_configuration_templates-Data_container_template">
- <title>Data container template</title>
- <para>
+ <section id="sect-Reference_Guide-Shipped_JBoss_Cache_configuration_templates-Data_container_template">
+ <title>Data container template</title>
+ <para>
The data container template is <filename>config.xml</filename>:
</para>
-
-<programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
-<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
+ <programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
+<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
- <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
- lockAcquisitionTimeout="20000" />
+ <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
+ lockAcquisitionTimeout="20000" />
- <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
- <stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
+ <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
+ <stateRetrieval timeout="20000" fetchInMemoryState="false" />
+ <jgroupsConfig multiplexerStack="jcr.stack" />
<sync />
</clustering>
<!-- Eviction configuration -->
- <eviction wakeUpInterval="5000">
- <default algorithmClass="org.jboss.cache.eviction.LRUAlgorithm"
- actionPolicyClass="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.ParentNodeEvictionActionPolicy"
- eventQueueSize="1000000">
- <property name="maxNodes" value="1000000" />
- <property name="timeToLive" value="120000" />
+ <eviction wakeUpInterval="5000">
+ <default algorithmClass="org.jboss.cache.eviction.LRUAlgorithm"
+ actionPolicyClass="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.ParentNodeEvictionActionPolicy"
+ eventQueueSize="1000000">
+ <property name="maxNodes" value="1000000" />
+ <property name="timeToLive" value="120000" />
</default>
</eviction>
</jbosscache></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Shipped_JBoss_Cache_configuration_templates-Lock_manager_template">
- <title>Lock manager template</title>
- <para>
+ </section>
+ <section id="sect-Reference_Guide-Shipped_JBoss_Cache_configuration_templates-Lock_manager_template">
+ <title>Lock manager template</title>
+ <para>
The lock manager template is <filename>lock-config.xml</filename>:
</para>
-
-<programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
-<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
-
- <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
- lockAcquisitionTimeout="20000" />
- <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
- <stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
- <sync />
- </clustering>
- <loaders passivation="false" shared="true">
- <preload>
- <node fqn="/" />
- </preload>
- <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false"
- ignoreModifications="false" purgeOnStartup="false">
- <properties>
- cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
- cache.jdbc.table.create=${jbosscache-cl-cache.jdbc.table.create}
- cache.jdbc.table.drop=${jbosscache-cl-cache.jdbc.table.drop}
- cache.jdbc.table.primarykey=${jbosscache-cl-cache.jdbc.table.primarykey}
- cache.jdbc.fqn.column=${jbosscache-cl-cache.jdbc.fqn.column}
- cache.jdbc.fqn.type=${jbosscache-cl-cache.jdbc.fqn.type}
- cache.jdbc.node.column=${jbosscache-cl-cache.jdbc.node.column}
- cache.jdbc.node.type=${jbosscache-cl-cache.jdbc.node.type}
- cache.jdbc.parent.column=${jbosscache-cl-cache.jdbc.parent.column}
- cache.jdbc.datasource=${jbosscache-cl-cache.jdbc.datasource}
- </properties>
- </loader>
- </loaders>
-</jbosscache></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Shipped_JBoss_Cache_configuration_templates-Query_handler_indexer_template">
- <title>Query handler (indexer) template</title>
- <para>
+ <programlisting language="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../extras/Advanced_Development_JCR_lock-manager-config/lock-config.xml_code"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-Shipped_JBoss_Cache_configuration_templates-Query_handler_indexer_template">
+ <title>Query handler (indexer) template</title>
+ <para>
The query handler template is called <filename>indexer-config.xml</filename>:
</para>
-
-
-<programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
-<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
- <locking useLockStriping="false" concurrencyLevel="50000" lockParentForChildInsertRemove="false"
- lockAcquisitionTimeout="20000" />
- <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
- <stateRetrieval timeout="20000" fetchInMemoryState="false" />
- <jgroupsConfig multiplexerStack="jcr.stack" />
- <sync />
- </clustering>
- <!-- Eviction configuration -->
- <eviction wakeUpInterval="5000">
- <default algorithmClass="org.jboss.cache.eviction.FIFOAlgorithm" eventQueueSize="1000000">
- <property name="maxNodes" value="10000" />
- <property name="minTimeToLive" value="60000" />
- </default>
- </eviction>
-</jbosscache></programlisting>
-
-
- </section>
-
-
+ <programlisting language="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_JCR_cluster-config/indexer-config.xml_code" parse="text"/></programlisting>
</section>
-
-
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,41 +1,39 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-LockManager">
- <title>LockManager</title>
- <para>
+ <title>LockManager</title>
+ <para>
The LockManager stores lock objects. It can lock or release objects as required. It is also responsible for removing stale locks.
</para>
- <para>
+ <para>
The LockManager in JBoss Enterprise Portal Platform is implemented with <classname>org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl</classname>.
</para>
- <para>
+ <para>
It is enabled by adding <literal>lock-manager-configuration</literal> to <literal>workspace-configuration</literal>.
</para>
- <para>
+ <para>
For example:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_JCR_lock-manager-config/default47.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <section id="sect-Reference_Guide-LockManager-CacheableLockManagerImpl">
- <title>CacheableLockManagerImpl</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_JCR_lock-manager-config/default47.xml" parse="text"/></programlisting>
+ <section id="sect-Reference_Guide-LockManager-CacheableLockManagerImpl">
+ <title>CacheableLockManagerImpl</title>
+ <para>
<classname>CacheableLockManagerImpl</classname> stores lock objects in JBoss-cache (which implements JDBCCacheLoader to store locks in a database). This means its locks are replicable and can affect an entire cluster rather than just a single node.
</para>
- <para>
- The length of time LockManager allows a lock to remain in place can be configured with the "<literal>time-out</literal>" property.
+ <para>
+ The length of time LockManager allows a lock to remain in place can be configured with the "<literal>time-out</literal>" property.
</para>
- <para>
+ <para>
The LockRemover thread periodically polls LockManager for locks that have passed the time-out limit and must be removed.
</para>
- <para>
+ <para>
The time-out for LockRemover is set as follows (the default value is 30m):
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_JCR_lock-manager-config/default48.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <!-- Doesn't seem necessary
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_JCR_lock-manager-config/default48.xml" parse="text"/></programlisting>
+<!-- Doesn't seem necessary
<formalpara>
<title>Configuration</title>
<para>
@@ -61,432 +59,293 @@
The <parameter>cache.jdbc.fqn.type</parameter> and <parameter>cache.jdbc.node.type</parameter> parameters must be configured according to the database being used.
</para>
</listitem>
-</itemizedlist> --> <para>
+</itemizedlist> --> <para>
There are a number of ways to configure <classname>CacheableLockManagerImpl</classname>. Each involves configuring JBoss Cache and JDBCCacheLoader.
</para>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration" />
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration"/>
</para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration" />
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration"/>
</para>
-
- </listitem>
-
- </itemizedlist>
- <para>
+ </listitem>
+ </itemizedlist>
+ <para>
Refer to <ulink url="http://community.jboss.org/wiki/JBossCacheJDBCCacheLoader">http://community.jboss.org/wiki/JBossCacheJDBCCacheLoader</ulink> for more information about JBoss Cache and JDBCCacheLoader.
</para>
- <section id="sect-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration">
- <title>Simple JBoss Cache Configuration</title>
- <para>
+ <section id="sect-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration">
+ <title>Simple JBoss Cache Configuration</title>
+ <para>
One method to configure the LockManager is to put a JBoss Cache configuration file path into <classname>CacheableLockManagerImpl</classname>.
</para>
- <note>
- <para>
+ <note>
+ <para>
This is not the most efficient method for configuring the LockManager as it requires a JBoss Cache configuration file for each LockManager configuration in each workspace of each repository. The configuration set up can subsequently become quite difficult to manage.
</para>
- <para>
+ <para>
This method is useful, however, if a single, specially configured LockManager is required.
</para>
-
- </note>
- <para>
+ </note>
+ <para>
The required configuration is shown in the example below:
</para>
- <programlistingco>
- <areaspec>
- <area coords="4 90" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-jbosscache-lock-config.xml" />
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_JCR_lock-manager-config/default49.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-jbosscache-lock-config.xml">
- <para>
- The <replaceable>test-jbosscache-lock-config.xml</replaceable> is shown below.
+ <programlistingco>
+ <areaspec>
+ <area coords="4 90" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-jbosscache-lock-config.xml"/>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_JCR_lock-manager-config/default49.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-jbosscache-lock-config.xml">
+ <para>
+ The <replaceable>jbosscache-lock-config.xml</replaceable> is shown below.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <para>
- The <filename>test-jbosscache-lock-config.xml</filename> file:
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <para>
+ The <filename>jbosscache-lock-config.xml</filename> file:
</para>
- <programlistingco>
- <areaspec>
- <area coords="6 90" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-clusterName" />
- <area coords="41 50" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.table.name" />
- <areaset coords="" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.types">
- <area coords="48 50" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.node.type" />
- <area coords="46 50" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.fqn.type" />
-
- </areaset>
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_JCR_lock-manager-config/default50.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-clusterName">
- <para>
- The cluster name at <parameter>clustering mode="replication" clusterName="JBoss-Cache-Lock-Cluster_Name"</parameter> must be unique;
+ <programlistingco>
+ <areaspec>
+ <area coords="6 90" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-clusterName"/>
+ <area coords="41 50" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.table.name"/>
+ <areaset coords="" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.types">
+ <area coords="48 50" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.node.type"/>
+ <area coords="46 50" id="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.fqn.type"/>
+ </areaset>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_JCR_lock-manager-config/default50.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-clusterName">
+ <para>
+ The cluster name at <parameter>clustering mode="replication" clusterName="JBoss-Cache-Lock-Cluster_Name"</parameter> must be unique;
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.table.name">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.table.name">
+ <para>
The <parameter>cache.jdbc.table.name</parameter> must be unique per datasource.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.types">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Simple_JBoss_Cache_Configuration-cache.jdbc.types">
+ <para>
The <parameter>cache.jdbc.node.type</parameter> and <parameter>cache.jdbc.fqn.type</parameter> parameters must be configured according to the database in use.
</para>
- <para>
+ <para>
Refer to the table below for information about data types.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <table id="tabl-Reference_Guide-Simple_JBoss_Cache_Configuration-Data_Types_in_Different_Databases">
- <title>Data Types in Different Databases</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- DataBase name
- </entry>
- <entry>
- Node data type
- </entry>
- <entry>
- FQN data type
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- default
- </entry>
- <entry>
- BLOB
- </entry>
- <entry>
- VARCHAR(512)
- </entry>
-
- </row>
- <row>
- <entry>
- HSSQL
- </entry>
- <entry>
- OBJECT
- </entry>
- <entry>
- VARCHAR(512)
- </entry>
-
- </row>
- <row>
- <entry>
- MySQL
- </entry>
- <entry>
- LONGBLOB
- </entry>
- <entry>
- VARCHAR(512)
- </entry>
-
- </row>
- <row>
- <entry>
- ORACLE
- </entry>
- <entry>
- BLOB
- </entry>
- <entry>
- VARCHAR2(512)
- </entry>
-
- </row>
- <row>
- <entry>
- PostgreSQL
- </entry>
- <entry>
- bytea
- </entry>
- <entry>
- VARCHAR(512)
- </entry>
-
- </row>
- <row>
- <entry>
- MSSQL
- </entry>
- <entry>
- VARBINARY(MAX)
- </entry>
- <entry>
- VARCHAR(512)
- </entry>
-
- </row>
- <row>
- <entry>
- DB2
- </entry>
- <entry>
- BLOB
- </entry>
- <entry>
- VARCHAR(512)
- </entry>
-
- </row>
- <row>
- <entry>
- Sybase
- </entry>
- <entry>
- IMAGE
- </entry>
- <entry>
- VARCHAR(512)
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
- <section id="sect-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration">
- <title>Template JBoss Cache Configuration</title>
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <table id="tabl-Reference_Guide-Simple_JBoss_Cache_Configuration-Data_Types_in_Different_Databases">
+ <title>Data Types in Different Databases</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry> DataBase name </entry>
+ <entry> Node data type </entry>
+ <entry> FQN data type </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> default </entry>
+ <entry> BLOB </entry>
+ <entry> VARCHAR(512) </entry>
+ </row>
+ <row>
+ <entry> HSSQL </entry>
+ <entry> OBJECT </entry>
+ <entry> VARCHAR(512) </entry>
+ </row>
+ <row>
+ <entry> MySQL </entry>
+ <entry> LONGBLOB </entry>
+ <entry> VARCHAR(512) </entry>
+ </row>
+ <row>
+ <entry> ORACLE </entry>
+ <entry> BLOB </entry>
+ <entry> VARCHAR2(512) </entry>
+ </row>
+ <row>
+ <entry> PostgreSQL </entry>
+ <entry> bytea </entry>
+ <entry> VARCHAR(512) </entry>
+ </row>
+ <row>
+ <entry> MSSQL </entry>
+ <entry> VARBINARY(MAX) </entry>
+ <entry> VARCHAR(512) </entry>
+ </row>
+ <row>
+ <entry> DB2 </entry>
+ <entry> BLOB </entry>
+ <entry> VARCHAR(512) </entry>
+ </row>
+ <row>
+ <entry> Sybase </entry>
+ <entry> IMAGE </entry>
+ <entry> VARCHAR(512) </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>
+ <section id="sect-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration">
+ <title>Template JBoss Cache Configuration</title>
+ <para>
Another method to configure LockManager is to use a JBoss Cache configuration template for all LockManagers.
</para>
- <para>
+ <para>
Below is an example <filename>test-jbosscache-lock.xml</filename> template file:
</para>
- <programlistingco>
- <areaspec>
- <areaset coords="" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-cache.jdbc.templates">
- <area coords="24 50" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-cache.jdbc.table.name" />
- <area coords="35 50" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-cache.jdbc.datasource" />
-
- </areaset>
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_JCR_lock-manager-config/you.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-cache.jdbc.templates">
- <para>
- All the configurable parameters in this file are populated with templates which will be replaced with LockManager's configuration parameters.
+ <programlistingco>
+ <areaspec>
+ <areaset coords="" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-cache.jdbc.templates">
+ <area coords="24 50" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-cache.jdbc.table.name"/>
+ <area coords="35 50" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-cache.jdbc.datasource"/>
+ </areaset>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_JCR_lock-manager-config/you.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-cache.jdbc.templates">
+ <para>
+ All the configurable parameters in this file are populated with templates which will be replaced with LockManager's configuration parameters.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <para>
The parameters that will populate the above file are shown below:
</para>
- <programlistingco>
- <areaspec>
- <area coords="5 90" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-udp-mux.xml" />
- <areaset coords="" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-jbosscache-cl-cache.jdbc.parameters">
- <area coords="12 90" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-jbosscache-cl-cache.jdbc.fqn.column" />
- <area coords="15 90" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-jbosscache-cl-cache.jdbc.node.type" />
-
- </areaset>
-
- </areaspec>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_JCR_lock-manager-config/default51.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-udp-mux.xml">
- <para>
+ <programlistingco>
+ <areaspec>
+ <area coords="5 90" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-udp-mux.xml"/>
+ <areaset coords="" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-jbosscache-cl-cache.jdbc.parameters">
+ <area coords="12 90" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-jbosscache-cl-cache.jdbc.fqn.column"/>
+ <area coords="15 90" id="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-jbosscache-cl-cache.jdbc.node.type"/>
+ </areaset>
+ </areaspec>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_JCR_lock-manager-config/default51.xml" parse="text"/></programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-udp-mux.xml">
+ <para>
The <literal>jgroups-configuration</literal> has been moved to a separate configuration file (<filename>udp-mux.xml</filename>, shown below).
</para>
- <para>
+ <para>
In this case the <filename>udp-mux.xml</filename> is a common configuration for all JGroup components (QueryHandler, cache, LockManager), but this is not a requirement of the configuration method.
</para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-jbosscache-cl-cache.jdbc.parameters">
- <para>
+ </callout>
+ <callout arearefs="area-Reference_Guide-CacheableLockManagerImpl-Template_JBoss_Cache_Configuration-jbosscache-cl-cache.jdbc.parameters">
+ <para>
The <parameter>jbosscache-cl-cache.jdbc.fqn.column</parameter> and <parameter>jbosscache-cl-cache.jdbc.node.type</parameter> parameters are not explicitly defined as <parameter>cache.jdbc.fqn.type</parameter> and <parameter>cache.jdbc.node.type</parameter> are defined in the JBoss Cache configuration.
</para>
- <para>
- Refer to <xref linkend="tabl-Reference_Guide-Simple_JBoss_Cache_Configuration-Data_Types_in_Different_Databases" /> for information about setting these parameters or set them as <parameter>AUTO</parameter> and the data type will by detected automatically.
+ <para>
+ Refer to <xref linkend="tabl-Reference_Guide-Simple_JBoss_Cache_Configuration-Data_Types_in_Different_Databases"/> for information about setting these parameters or set them as <parameter>AUTO</parameter> and the data type will by detected automatically.
</para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
- <para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+ <para>
<filename>udp-mux.xml</filename>:
</para>
-
-<programlisting language="XML" role="XML"><xi:include href="../../../extras/Advanced_Development_JCR_lock-manager-config/default52.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-CacheableLockManagerImpl-Lock_migration_from_1.12.x">
- <title>Lock Migration</title>
- <para>
+ <programlisting language="XML" role="XML"><xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../extras/Advanced_Development_JCR_lock-manager-config/default52.xml" parse="text"/></programlisting>
+ </section>
+ <section id="sect-Reference_Guide-CacheableLockManagerImpl-Lock_migration_from_1.12.x">
+ <title>Lock Migration</title>
+ <para>
There are three options available:
</para>
- <variablelist id="vari-Reference_Guide-Lock_migration_from_1.12.x-Lock_Migration_Options">
- <title>Lock Migration Options</title>
- <varlistentry>
- <term>When new Shareable Cache feature is not going to be used and all locks should be kept after migration.</term>
- <listitem>
- <procedure>
- <title></title>
- <step>
- <para>
+ <variablelist id="vari-Reference_Guide-Lock_migration_from_1.12.x-Lock_Migration_Options">
+ <title>Lock Migration Options</title>
+ <varlistentry>
+ <term>When new Shareable Cache feature is not going to be used and all locks should be kept after migration.</term>
+ <listitem>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Ensure that the same lock tables are used in configuration
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start the server
</para>
-
- </step>
-
- </procedure>
-
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>When new Shareable Cache feature is not going to be used and all locks should be removed after migration.</term>
- <listitem>
- <procedure>
- <title></title>
- <step>
- <para>
+ </step>
+ </procedure>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>When new Shareable Cache feature is not going to be used and all locks should be removed after migration.</term>
+ <listitem>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Ensure that the same lock tables used in configuration
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start the sever WITH system property:
</para>
-
-<programlisting>-Dorg.exoplatform.jcr.locks.force.remove=true
+ <programlisting>-Dorg.exoplatform.jcr.locks.force.remove=true
</programlisting>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Stop the server
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start the server WITHOUT system property:
</para>
-
-<programlisting>-Dorg.exoplatform.jcr.locks.force.remove
+ <programlisting>-Dorg.exoplatform.jcr.locks.force.remove
</programlisting>
-
- </step>
-
- </procedure>
-
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>When new Shareable Cache feature will be used (in this case all locks are removed after migration).</term>
- <listitem>
- <procedure>
- <title></title>
- <step>
- <para>
+ </step>
+ </procedure>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>When new Shareable Cache feature will be used (in this case all locks are removed after migration).</term>
+ <listitem>
+ <procedure>
+ <title/>
+ <step>
+ <para>
Start the sever WITH system property:
</para>
-
-<programlisting>-Dorg.exoplatform.jcr.locks.force.remove=true
+ <programlisting>-Dorg.exoplatform.jcr.locks.force.remove=true
</programlisting>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Stop the server.
</para>
-
- </step>
- <step>
- <para>
+ </step>
+ <step>
+ <para>
Start the server WITHOUT system property:
</para>
-
-<programlisting>-Dorg.exoplatform.jcr.locks.force.remove
+ <programlisting>-Dorg.exoplatform.jcr.locks.force.remove
</programlisting>
-
- </step>
- <step>
- <title>Optional:</title>
- <para>
+ </step>
+ <step>
+ <title>Optional:</title>
+ <para>
Manually remove old tables for lock.
</para>
-
- </step>
-
- </procedure>
-
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
-
+ </step>
+ </procedure>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
-
-
+ </section>
</chapter>
-
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-07-05 19:41:59 UTC (rev 8774)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr-with-gtn/managed-datasources-under-jboss-as.xml 2012-07-06 05:00:36 UTC (rev 8775)
@@ -1,25 +1,24 @@
-<?xml version='1.0' encoding='utf-8' ?>
+<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-How_to_use_AS_Managed_DataSource_under_JBoss_AS">
- <title>How to use AS Managed DataSource under JBoss AS</title>
- <section id="sect-Reference_Guide-How_to_use_AS_Managed_DataSource_under_JBoss_AS-Configurations_Steps">
- <title>Configurations Steps</title>
- <section id="sect-Reference_Guide-Configurations_Steps-Declaring_the_datasources_in_the_AS">
- <title>Declaring the datasources in the AS</title>
- <para>
- To declare the datasources using a JBoss application server, deploy a <literal>ds</literal> file (<filename><replaceable>XXX</replaceable>-ds.xml</filename>) into the <emphasis>deploy</emphasis> directory of the appropriate server profile (<filename>\server\<replaceable><PROFILE></replaceable>\deploy</filename>, for example).
- </para>
- <para>
- This file configures all datasources which JBoss Enterprise Portal Platform will need (there should be four specifically named: <emphasis>jdbcjcr_portal</emphasis>, <emphasis>jdbcjcr_portal-sample</emphasis>, <emphasis>jdbcidm_portal</emphasis> and <emphasis>jdbcidm_sample-portal</emphasis>).
- </para>
- <para>
- For example:
- </para>
-
-<programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
+ <title>How to use AS Managed DataSource under JBoss AS</title>
+ <section id="sect-Reference_Guide-How_to_use_AS_Managed_DataSource_under_JBoss_AS-Configurations_Steps">
+ <title>Configurations Steps</title>
+ <section id="sect-Reference_Guide-Configurations_Steps-Declaring_the_datasources_in_the_AS">
+ <title>Declaring the datasources in the AS</title>
+ <para>
+ To declare the datasources using a JBoss application server, deploy a <literal>ds</literal> file (<filename><replaceable>XXX</replaceable>-ds.xml</filename>) into the <emphasis>deploy</emphasis> directory of the appropriate server profile (<filename>\server\<replaceable><PROFILE></replaceable>\deploy</filename>, for example).
+ </para>
+ <para>
+ This file configures all datasources which JBoss Enterprise Portal Platform will need (there should be four specifically named: <emphasis>jdbcjcr_portal</emphasis>, <emphasis>jdbcjcr_portal-sample</emphasis>, <emphasis>jdbcidm_portal</emphasis> and <emphasis>jdbcidm_sample-portal</emphasis>).
+ </para>
+ <para>
+ For example:
+ </para>
+ <programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
<datasources>
<no-tx-datasource>
<jndi-name>jdbcjcr_portal</jndi-name>
@@ -53,47 +52,35 @@
<password></password>
</no-tx-datasource>
</datasources></programlisting>
- <para>
- The properties can be set for datasource can be found here: <ulink url="http://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/Conn...">Configuring JDBC DataSources - The non transactional DataSource configuration schema</ulink>
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Configurations_Steps-Do_not_bind_datasources_explicitly">
- <title>Do not bind datasources explicitly</title>
- <para>
- Do not let the portal explicitly bind datasources. Edit the <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/conf/gatein/configuration.properties</filename> and comment out the following rows in the JCR section:
- </para>
-
-<programlisting>#gatein.jcr.datasource.driver=org.hsqldb.jdbcDriver
+ <para>
+ The properties can be set for datasource can be found here: <ulink url="http://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/Conn...">Configuring JDBC DataSources - The non transactional DataSource configuration schema</ulink>
+ </para>
+ </section>
+ <section id="sect-Reference_Guide-Configurations_Steps-Do_not_bind_datasources_explicitly">
+ <title>Do not bind datasources explicitly</title>
+ <para>
+ Do not let the portal explicitly bind datasources. Edit the <filename><replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/conf/gatein/configuration.properties</filename> and comment out the following rows in the JCR section:
+ </para>
+ <programlisting>#gatein.jcr.datasource.driver=org.hsqldb.jdbcDriver
#gatein.jcr.datasource.url=jdbc:hsqldb:file:${gatein.db.data.dir}/data/jdbcjcr_${name}
#gatein.jcr.datasource.username=sa
#gatein.jcr.datasource.password=</programlisting>
- <para>
- Comment out the following lines in the IDM section:
- </para>
-
-<programlisting>#gatein.idm.datasource.driver=org.hsqldb.jdbcDriver
+ <para>
+ Comment out the following lines in the IDM section:
+ </para>
+ <programlisting>#gatein.idm.datasource.driver=org.hsqldb.jdbcDriver
#gatein.idm.datasource.url=jdbc:hsqldb:file:${gatein.db.data.dir}/data/jdbcidm_${name}
#gatein.idm.datasource.username=sa
#gatein.idm.datasource.password=</programlisting>
- <para>
- Open the <filename>jcr-configuration.xml</filename> and <filename>idm-configuration.xml</filename> files ans comment out references to the plugin <literal>InitialContextInitializer</literal>.
- </para>
-
-<programlisting language="XML" role="XML"><!-- Commented because, Datasources are declared and bound by AS, not in eXo -->
+ <para>
+ Open the <filename>jcr-configuration.xml</filename> and <filename>idm-configuration.xml</filename> files ans comment out references to the plug-in <literal>InitialContextInitializer</literal>.
+ </para>
+ <programlisting language="XML" role="XML"><!-- Commented because, Datasources are declared and bound by AS, not in eXo -->
<!--
<external-component-plugins>
[...]
</external-component-plugins>
--></programlisting>
-
- </section>
-
-
- </section>
-
-
+ </section>
+ </section>
</section>
-
-
12 years, 5 months