Foren

Liferay - Nuxeo

PEDRON Pierre Emmanuel, geändert vor 14 Jahren.

Liferay - Nuxeo

New Member Beiträge: 16 Beitrittsdatum: 11.03.10 Neueste Beiträge
Bonjour la communauté emoticon

Toujours dans le projet de faire une portlet déployable sous Liferay et intégrant Nuxeo, je me retrouve confronté à plusieurs soucis.

Voici l'environnement dans lequel je travail :
- J'ai un tomcat 6 qui tourne avec Liferay : http://localhost:8081/liferay
- J'ai un autre tomcat 6 qui tourne avec Nuxeo (le fameux Nuxeo-distribution-tomcat) : http://localhost:8080/nuxeo
- Je travail sous Windows xp
- pour mes portlets, j'utilise des appels REST.

La portlet sur laquelle je travail actuellement est toute bête :

J'ai un formulaire, je renseigne un nom dans celui-ci. Lors du clic bouton, un appel rest est créé vers la restlet SAMPLE, celle-ci doit renvoyer dans la vue : Hello [le nom renseigné dans le formulaire] !

La portlet se déploie correctement, mais bien évidemment, lorsque je clic sur le bouton du formulaire, j'ai une belle erreur : NullPointerException (je suppose qu'il ne trouve pas ma restlet SAMPLE).

Voici donc mon soucis majeur :

Je dois déposer un jar (restPack.jar) Nuxeo dans le répertoire bundles de Nuxeo (le tomcat qui gère nuxeo le charge au démarrage), mais je veux me servir de ce jar avec le tomcat qui fait tourner Liferay ;) C'est là qu'est l'os !
Pensez-vous que si je dépose le jar dans un répertoire lib lié au projet, les classes seront prisent en comptes ? - au quel cas, j'ai déjà essayé, mais le résultat est le même :-/

Merci du coup de main éventuel emoticon
Liferay Geek, geändert vor 14 Jahren.

RE: Liferay - Nuxeo

Junior Member Beiträge: 25 Beitrittsdatum: 24.03.10 Neueste Beiträge
Bonjour,

Avez vous avancé dans cette expérience d'intégration de Liferay et Nuxeo ?

Pour répondre plus directement à votre question, il faudrait voir plus précisément l'erreur associé au NullPointerException. Pour cela, il faut aller voir dans le répertoire "logs" du Tomcat qui fait tourner Liferay et jeter un oeil au fichier catalina.out.
Cela permettra notamment de voir à quelle ligne de code de votre Portlet vous rencontrez un problème.
PEDRON Pierre Emmanuel, geändert vor 14 Jahren.

RE: Liferay - Nuxeo

New Member Beiträge: 16 Beitrittsdatum: 11.03.10 Neueste Beiträge
Bonjour,

Tout d'abord, merci d'avoir répondu si rapidement.

De mon côté, je n'ai pas réussi à avancer sur le sujet.

Voici l'errorLog :

WARN [PortalImpl:2948] Current URL /web/guest/home?p_p_id=NuxeoSamplePortlet_WAR_strutsportlet&p_p_lifecycle=1&p_p_state=normal&p_pmode=view&p_p_col_id=column-1&p_p_col_count=2 generates exception: null
ERROR[jsp:1000] java.lang.NullPointerException
java.lang.NullPointerException
	at org.nuxeo.ecm.http.client.NuxeoServer.getRestClient(NuxeoServer.java:172)
	at org.nuxeo.ecm.http.client.NuxeoServer.doRestletGetCall(NuxeoServer.java:145)
	at org.nuxeo.ecm.http.client.NuxeoServer.doRestletGetCall(NuxeoServer.java:110)
	at org.nuxeo.portlet.restlet.PortletNuxeoServer.doRestletCall(PortletNuxeoServer.java:105)
	at org.nuxeo.portlet.generic.NuxeoPortlet.doRestletCall(NuxeoPortlet.java:315)
	at NuxeoAction.processViewAction(NuxeoAction.java:61)
	at org.nuxeo.portlet.generic.NuxeoPortlet.processAction(NuxeoPortlet.java:180)
	at com.sun.portal.portletcontainer.appengine.filter.FilterChainImpl.doFilter(FilterChainImpl.java:98)
	at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:57)
	at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletService.java:100)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChaine.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChaine.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)

	[...]

	at.org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)


J'ai quand même réussie à remarquer deux ou trois choses :

- En collant des logs un peu partout dans les classes Nuxeo, je me suis rendu compte que le problème était lors de la création de l'objet NuxeoServer. Le paramètre du constructeur est censé prendre une URL mais chez moi ce paramètre vaut toujours "null", pourtant je renseigne bien l'URL dans les préférences. Je pense que je vais creuser de ce côté.

- En même temps, le log semble indiqué une erreur lorsque la méthode getRestClient() est appelée. Est ce qu'il n'arrive pas a accéder à mon .jar (pourtant dans le répertoire lib du projet) ?

Je ne sais pas si je suis très clair, vu que j'ai le problème sous les yeux.
Merci !


EDIT :

De mon côté j'ai avancé. J'ai forcé le passage de l'URL sans passé par les préférences Nuxeo. Du coup, les objets se créent correctement. Par contre, la restlet n'est toujours pas appelée emoticon
Liferay Geek, geändert vor 14 Jahren.

RE: Liferay - Nuxeo

Junior Member Beiträge: 25 Beitrittsdatum: 24.03.10 Neueste Beiträge
Je suppose que vous vous basez sur ceci :
Chapter 37. Nuxeo JSR 168 Integration
C'est bien ça ?
PEDRON Pierre Emmanuel, geändert vor 14 Jahren.

RE: Liferay - Nuxeo

New Member Beiträge: 16 Beitrittsdatum: 11.03.10 Neueste Beiträge
Oui exactement.

C'est à dire que j'ai pris cet exemple, en l'adaptant à mon environnement (je travail avec la distribution Tomcat).

Qui plus est, pour adapter cet exemple avec Liferay (et non Jahia), j'ai redéfinie la méthode suivante :

protected String getUID(final PortletRequest request) {
    	PortletConfig po2=(PortletConfig) request.getAttribute("javax.portlet.config");
    	PortletContext pCo=po2.getPortletContext();

    	final String contextId=pCo.toString();
    	//final String contextId = (String) request.getAttribute("org.jboss.portal.PORTAL_CONTEXT_PATH");
    	return contextId;
    }


EDIT :

Du coup, dans l'exemple, le restPack est à mettre dans le repertoire system de Nuxeo (version JBoss) qui correspond au répertoire bundles de Nuxeo (version Tomcat).

Et comme c'est un autre Tomcat qui fait tourner Liferay, je pense que le problème vient de là.
PEDRON Pierre Emmanuel, geändert vor 14 Jahren.

RE: Liferay - Nuxeo

New Member Beiträge: 16 Beitrittsdatum: 11.03.10 Neueste Beiträge
J'aimerais savoir si quelqu'un à déjà réussi à faire fonctionner Nuxeo dans une portlet Liferay (en utilisant 2 tomcats : un pour liferay, un pour Nuxeo) ?

Voici l'exemple que j'ai suivi (qui ne fonctionne pas chez moi) :

http://www.nuxeo.org/5.3/books/nuxeo-book/html/nuxeo-portlets.html

Merci.
Liferay Geek, geändert vor 14 Jahren.

RE: Liferay - Nuxeo

Junior Member Beiträge: 25 Beitrittsdatum: 24.03.10 Neueste Beiträge
Avez vous eu l'occasion de tester la portlet de danieltellez ?
Le code se trouve à cette URL http://svn2.yerbabuena.es/pub/products/j2ee/demo/trunk/nuxeo-portlet-browse/
Il y a des choses intéressantes, notamment dans le fichier src/main/java/org/nuxeo/portlet/browse/NuxeoBrowsePortlet.java.
(Donc au final dans http://svn2.yerbabuena.es/pub/products/j2ee/demo/trunk/nuxeo-portlet-browse/src/main/java/org/nuxeo/portlet/browse/NuxeoBrowsePortlet.java)

On y trouve le code suivant :

...
import org.nuxeo.portlet.restlet.PortletNuxeoServer;
import org.nuxeo.portlet.restlet.RestletCall;
...

protected void doView(final RenderRequest request,
final RenderResponse response) throws PortletException, IOException {

// is the user and administrator?
final boolean isAdmin = isAdministrator(request) ? true : false;
// This List contains the elements inside the folder
List<NuxeoBrowseDocument> links = new ArrayList<NuxeoBrowseDocument>();
// The restlet "*" is the browse restlet provides by Nuxeo
RestletCall call = new RestletCall("*");
// If the user is an administrator he connects using the Basic Mode
// Authentication
// else he connects using the Anonymous Mode (guest user).
final String preferencesKey = getUID(request);
NuxeoPreferences pref = getGlobalPreferences(preferencesKey);
Map<String, String> mapPref = pref.getPreferencesAsMap();
if (isAdmin) {
pref.setValue(PREF_AUTHENTICATION_MODE, "authModeBasic");
saveGlobalPreferences(pref, preferencesKey);
} else {
pref.setValue(PREF_AUTHENTICATION_MODE, "authModeAnonymous");
saveGlobalPreferences(pref, preferencesKey);
}

String server = "";

// If we have selected a folder in the EDIT mode

if (mapPref.get("folder") != null) {
// if (true) {
// The folder field has the following syntax: Server <server-name>
// id <id-server>
StringTokenizer sToken = new StringTokenizer((String) mapPref
.get("folder"), " ");
String id = "";
// String id="f7df3ed1-f238-459a-b881-1e2432ef6f80";
// String id = "d6a1ebcb-4c39-4ebc-81ad-31317ef03eb3";
server = "default";

String token;
while (sToken.hasMoreTokens()) {
token = sToken.nextToken();
if (token.equals("Server"))
server = sToken.nextToken();
else if (token.equals("id"))
id = sToken.nextToken();
}

// We browse the domain
String result;
int level = 1;
call = new RestletCall(server);
call.addPathParameter(id);
call.addPathParameter("newBrowse");
NuxeoPreferences pre = getGlobalPreferences(preferencesKey);
result = doRestletCall(call, preferencesKey);
// We browse the content of the folders of the domain
getContent(request, result, level, server, preferencesKey, links);
}

String page = (String) request.getParameter("struts_action");

if (page == null) {
// If page has a null value then we stay in the same page.
PortletRequestDispatcher dispatcher = getPortletContext()
.getRequestDispatcher(VIEW_JSP);
dispatcher.include(request, response);
} else {
// else we get the information of the file clicked
RestletCall dataCall = new RestletCall(server);

dataCall.addPathParameter(page);
dataCall.addPathParameter("export");
dataCall.addQueryParameter("format", "XML");
String dataFile = doRestletCall(dataCall, preferencesKey);
// parsing the resulting file
parseXML(request, dataFile);
PortletRequestDispatcher dispatcher = getPortletContext()
.getRequestDispatcher(VIEW2_JSP);
dispatcher.include(request, response);
}
}

...

Je testerais bien cela à l'occasion ...
PEDRON Pierre Emmanuel, geändert vor 14 Jahren.

RE: Liferay - Nuxeo

New Member Beiträge: 16 Beitrittsdatum: 11.03.10 Neueste Beiträge
Bonjour Liferay Geek !

Merci de m'avoir répondu emoticon

En effet, j'ai déjà testé ce code et il ne fonctionne pas encore. Et je pense que c'est normal vu que le programme essaie de communiquer avec une restlet qui n'existe pas.

J'ai réussi à régler mon problème récemment, voici la procédure :

J'ai du modifier les classes du restPack.jar. Corriger les chemins d'accès et les noms de packages. J'ai supprimé toutes les restlets à part la restlet Sample. ensuite, j'ai recompilé et recopier mon jar sous le tomcat - nuxeo.

A ce moment la portlet à fonctionner.

Pour la suite, je m'attaque à la portlet Search qui utilise les restlets vocabularies et search. Je vais procéder de la même façon : les intégrer petit à petit au jar et corrigé les erreurs (voir mettre a jour certaines classes qui ne fonctionnent pas...)

Je vous tiens au courant de la suite.
Merci !
Liferay Geek, geändert vor 14 Jahren.

RE: Liferay - Nuxeo

Junior Member Beiträge: 25 Beitrittsdatum: 24.03.10 Neueste Beiträge
Ben bon courage emoticon
PEDRON Pierre Emmanuel, geändert vor 14 Jahren.

RE: Liferay - Nuxeo

New Member Beiträge: 16 Beitrittsdatum: 11.03.10 Neueste Beiträge
Bien le bonjour à la communauté emoticon

Comme promis, je vous tiens au courant de mon avancé sur le projet d'intégration de Nuxeo à Liferay.

Avec la dernière version de Nuxeo (5.3.1), l'addon restPack est devenue obsolète (depuis la version 5.1) ! Et oui, d'où tous mes soucis jusqu'alors.

En fait, les restlets sont intégrées par défaut dans le package nuxeo-platform-syndication. Si je n'ai pas vu cela avant, c'est parce que la documentation de Nuxeo n'est pas à jour (en ce qui concerne les restlets).

Donc voilà, je peux enfin avancer convenablement emoticon

A bientôt !
candy 86, geändert vor 12 Jahren.

RE: Liferay - Nuxeo

Junior Member Beiträge: 72 Beitrittsdatum: 07.04.09 Neueste Beiträge
J'ai testé les portlets nuxeo disponibles http://www.zylk.net/web/guest/web-2-0/blog/-/blogs/liferay-portlets-for-searching-browsing-and-downloading-in-nuxeo
sans succès, elles génèrent des erreurs après leur déploiement dans Liferay.
Es-ce que vous les avez testées ?
Merci