Retrouvez dans cette page toutes les questions et informations utiles à l'installation, à l'exploitation et à l'utilisation de ESUP-ECM :

Failed to render resource avec webengine

Avec Webengine et notamment esupWebengineVersion vous pouvez avoir ce message :

Etat HTTP 500 - org.nuxeo.ecm.webengine.WebException: Failed to render resource at
org.nuxeo.ecm.webengine.WebException.wrap(WebException.java:171) at
org.nuxeo.ecm.webengine.server.resteasy.WebEngineServlet.service(WebEngineServlet.java:211) at
org.nuxeo.ecm.webengine.server.resteasy.WebEngineServlet.service(WebEngineServlet.java:158) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at
.../...

En y regardant de plus près on voit que l'erreur est en fait due à :

Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at
java.lang.String.substring(String.java:1937) at
org.jboss.resteasy.plugins.delegates.MediaTypeHeaderDelegate.parse(MediaTypeHeaderDelegate.java:54)

Cette erreur est généralement due à des entêtes http mal formées via une ancienne version de liveedit de nuxeo.

Pour corriger le problème il faut faire une mise à jour de liveedit

log-slave-updates must use row-based binary logging

En MySQL 5.1 si vous utilisez un mode log binaire alors vous pouvez avoir cette erreur :

Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events

Il existe 2 solutions :

Comment rétablir l'habillage d'un workspace ?

Comment rétablir l'habillage d'un workspace si cet habillage ne propose plus l'accès au bouton d'administration ?
Ceci se fait en manipulant la base de données nuxeo.

Débrancher CAS

Seulement en ESUP-ECM 1.0. Utiliser le build.properties pour la 1.1 et suivante.

ESUP-ECM est packagé pour fonctionner avec CAS.
N'est pas intégrer dans les .properties du package la possibilité de faire du LDAP seulement.
Néanmoins c'est possible.
Dans esup-ecm-config-plugin/src/main/resources/OSGI-INF/esup-login-contrib.xml il faut changer :

    <!-- configure authentication chain -->
    <extension target="org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService" point="chain">
        <authenticationChain>
            <plugins>
                <!--  Keep basic Auth at top of Auth chain to support RSS access via BasicAuth -->
                <plugin>BASIC_AUTH</plugin>
                <plugin>ANONYMOUS_AUTH</plugin>
                <!-- plugin>FORM_AUTH</plugin -->
                <plugin>CAS2_AUTH</plugin>
            </plugins>
        </authenticationChain>
    </extension>

en :

    <!-- configure authentication chain -->
    <extension target="org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService" point="chain">
        <authenticationChain>
            <plugins>
                <!--  Keep basic Auth at top of Auth chain to support RSS access via BasicAuth -->
                <plugin>BASIC_AUTH</plugin>
                <plugin>ANONYMOUS_AUTH</plugin>
                <plugin>FORM_AUTH</plugin>
                <!-- plugin>CAS2_AUTH</plugin -->
            </plugins>
        </authenticationChain>
    </extension>

Faire ant deploy pour prise en compte.

Erreur "java : command not found"

Si vous avez ce message dans le fichier de log lors du lancement de jbossctl verifier bien que l'utilisateur défini par la variable jboss.user définit une variable JAVA_HOME dans son .bashrc

Erreur "String index out of range: -1"

Si lors de l'accès à une url en nuxeo/site/* vous avez cette erreur :

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1938)
    at org.jboss.resteasy.plugins.delegates.MediaTypeHeaderDelegate.parse(MediaTypeHeaderDelegate.java:54)
    at org.jboss.resteasy.plugins.delegates.MediaTypeHeaderDelegate.fromString(MediaTypeHeaderDelegate.java:16)
    at javax.ws.rs.core.MediaType.valueOf(MediaType.java:173)
    at org.jboss.resteasy.util.MediaTypeHelper.parseHeader(MediaTypeHelper.java:200)
    at org.jboss.resteasy.plugins.server.servlet.ServletUtil.extractAccepts(ServletUtil.java:109)
    at org.jboss.resteasy.plugins.server.servlet.ServletUtil.extractHttpHeaders(ServletUtil.java:72)
    at org.nuxeo.ecm.webengine.server.resteasy.WebEngineServlet.service(WebEngineServlet.java:124)
    at org.nuxeo.ecm.webengine.server.resteasy.WebEngineServlet.service(WebEngineServlet.java:112)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Vérifiez que vous utilisez bien l'extension navigateur liveedit en version 0.4.6 minimum.

Si le problème persiste même après suppression du plugin, alors :

Erreur "Data truncation: Data too long for column 'binarytext' at row 1"

Si vous avez cette erreur avec un nuxeo fonctionnant avec MySQL :
Exception: com.mysql.jdbc.MysqlDataTruncation. message: Data truncation: Data too long for column 'binarytext' at row 1

C'est que la colonne de nom binarytext dans la table fulltext de nuxeo (celle qui contient le contenu textuel de votre document) est trop petite.

Il faut changer son type de text à longtext.

Comment repositionner les droits sur un sous-espace de travail ?

Dans certains cas, il peut être nécessaire de repositionner des droits à la suite d'une manipulation malencontreuse (suppression intempestive de droits par l'administrateur).

Le cas suivant aussi peut arriver:

Sur un sous-workspace tmp, l'utilisateur admin donne les droits de gestion à l'utilisateur toto.
Maintenant toto se connecte, va sur tmp pour enlever les droits hérités: l'utilisateur admin ne peut donc plus accéder à tmp pour gérer les droits sur ce sous-workspace.
L'administrateur n'a d'autre choix que d'utiliser nxshell pour repositionner les droits correctement.

Exemple : ajouter des droits sur le sous-espace de travail tmp 

  1.  utiliser nxshell
    cd <rep_nuxeo_52>/nuxeo-shell; ./nxshell.sh \-h 127.0.0.1
  2. dans nxshell faire :
    1.  se déplacer dans les dossiers 
      cd default-domain/workspaces
    2.  retrouver UID du document : 
      view tmp -> 4cb62b5b-7b6e-432a-8d46-76271d125ea1
  3. ajouter les droits ReadWrite sur le document pour tous ("members") :
    script --file <rep_esup_ecm>/nuxeo-shell-scripts/modifyPermissions.js 4cb62b5b-7b6e-432a-8d46-76271d125ea1
  4. ajouter les droits Everything (gérer) sur le document pour l' administrateur ("admin") :
    script --file <rep_esup_ecm>/nuxeo-shell-scripts/modifyPermissions.js 4cb62b5b-7b6e-432a-8d46-76271d125ea1 admin Everything

Des raisons pour éviter d'utiliser MySQL avec Nuxeo

(Message de nuxeo-dev du 4 mai 2009)

Drawbacks of MySQL when used with Nuxeo:
- loses connections when it decides to,
- poor fulltext support,
- no transactional fulltext tables,
- inefficient ACL checking due to lack of array datatypes,
- no sub-second time datatypes,
- foreign key on delete cascade operations limited to 15 levels deep,
- triggers not activated by cascaded foreign key actions (which we don't use at the moment with MySQL but could prove a big limitation in the future),
- poor query optimizer,
- (not directly nuxeo related) stupid nonstandard syntax, stupid datatypes conversions and lack of proper value checking.
All in all, MySQL should be avoided if you want to keep your sanity, you never know what's going to happen when you do a perfectly normal SQL operations. Please use PostgreSQL instead.