cancel
Showing results for 
Search instead for 
Did you mean: 

Problema grave: RepositoryServiceSoapBindingStub con Alfresco 5.0?

spilby
Confirmed Champ
Confirmed Champ
Buenos días,

me encuentro con un problema muy grave. Hemos cambiado a Alfresco 5.0, hemos hecho cambio en el modelo, añadido behaviors, aspectos y varias cosas más. Tenemos unos webscripts que hemos actualizado, y de momento todo bien sin problemas.

Llega el momento de probar una aplicación java que tenemos, que usa las librerias alfresco-webservice-client-2.1.jar. Nos autenticamos de la siguiente manera:


WebServiceFactory.setEndpointAddress(endPoint);
AuthenticationResult result = WebServiceFactory.getAuthenticationService().startSession(username, password);


Pero para la url que empleamos (/alfresco/api) no conecta, y devuelve un org.alfresco.webservice.util.WebServiceException: Error starting session.

Empiezo a leer y veo que desde la 5.0 esa url se emplea sólo para los servicios REST. Y me ha parecido entender que ya no se pueden usar los webservice-client. ¿Es realmente así?

Al trabajar con los nodos hacemos cosas como…


RepositoryServiceSoapBindingStub repositoryService = SessionManager.getRepositoryService(sessionId);
Predicate pred = new Predicate();
pred.setNodes(new Reference[] { new Reference(STORE, null, alfPath) });
node = repositoryService.get(pred);


Ya no sirve nada de esto?? O sólo la autenticación??

No sé si hemos de rehacerlo TODO o es simplemente un cambio de librería o url, porque de tener que cambiarlo todo va a ser un gran problema de tiempo! ¿Me podría aclarar alguien qué cambios implica en este sentido usar la 5.0, por favor?

Muchísimas gracias

14 REPLIES 14

angelborroy
Community Manager Community Manager
Community Manager
Lo cierto es que la vieja API SOAP ya no está disponible.

Puedes utilizar SOAP con la API CMIS (eligiendo el binding SOAP), pero implicará rehacer el código. Si vais a rehacerlo, creo que la mejor opción sería usar la API CMIS pero con el binding Atom (para hacer la comunicación más eficiente).
Hyland Developer Evangelist

Ostras… Pues no lo teníamos en cuenta. Es que todo lo que hacemos, buscar, crear, borrar, lo hacemos con las clases CMLDelete, CMLUpdate, etc del web-service-client. Con la API CMIS es muy diferente?? No habrá por casualidad algun tutorial con las equivalencias de una API a la otra? Vaya problema se nos viene encima…

A ver, calma, he visto la luz. Una duda al respecto… En la wiki de alfresco pone:

<blockcode>
Please note that this API has been superceded by CMIS (specifically, the CMIS SOAP binding).
It's use is no longer recommended. This functionality was removed from Alfresco in 5.0.b.
Please also note that the endpoint for soap web services was moved for alfresco 4.2.d. To make way for the public api.
Now instead of being http://localhost:8080/alfresco/api the soap services resides at http://localhost:8080/alfresco/soapapi.
This API was removed in Alfresco 5.0 and is no longer available. Use the CMIS web services bindings instead.
</blockcode>

Entiendo entonces que la API desaparece a partir de la 5.0, y en la 4.2d aún se pueden encontrar los webservice aunque cambiando /alfresco/api por /alfresco/soapapi. Lo digo porque como posible solución, podríamos usar Alfresco 4.2d. Al menos de momento. Y seguirían funcionando los webservice sin cambiar código. Y la funcionalidad de poder buscar en BD sin pasar por SOLR (Transactional queries), que es la que nos interesaba sobretodo, creo que también está en la 4.2.d.

Como diferencias entre 4.2d y la 5.0 (no a nivel de share sino de desarrollo, ya que el share no lo usamos) veo que la principal es el uso de SOLR en lugar de Lucene. No sé si en cuanto a rendimiento se han hecho grandes mejoras. Usar 4.2d podría ser una solución (venimos de la 4.1.6).

angelborroy
Community Manager Community Manager
Community Manager
Es algo que tenéis que evaluar con calma.

La API SOAP CMIS no tiene nada que ver con la SOAP API que estáis usando, por eso te sugería cambiarte a CMIS Atom.

En cuanto a las más importantes diferencias entre la 4.2.d y la 5.0 destaca el paso de SOLR1 a SOLR4. También incluye un montón de mejoras en el interfaz de Alfresco Share (aikau, PDF.js, búsqueda facetada, sugerencias de búsqueda…) pero si no lo usáis, no debería influir en la decisión. Creo que, en efecto, la 4.2.d era la primera que incluía las Transactional Queries.

También hay que notar que la 4.2.d fue una versión efímera (duró apenas mes y medio), ya que fue rápidamente sustituida por la 4.2.e. Así que estaríais usando una versión "rara".

Finalmente, en cuanto a rendimiento del repo, no hay diferencias notables entre la 4.1.6 y la 4.2.d
Hyland Developer Evangelist

Ah ok, decía la 4.2d porque es la que indicaban en la wiki. Pero si en la 4.2e (o incluso la 4.2f) se pueden seguir usando los webservices, no hay problema en usar la 4.2e.

Entre la 4.1.6 y la 4.2.d indicabas que no hay mucha diferencia de rendimiento. Entre la 4.2 y la 5.0 (debido imagino al cambio a SOLR4) supongo que sí encontraría diferencias de rendimiento, no sé si notables o no.

Por cierto, buscando hasta que versión de la 4.2 hay cliente webservice, he encontrado este link:

https://maven.alfresco.com/nexus/content/groups/public/org/alfresco/alfresco-web-service-client/5.0....

La 5.0.a! Eso sí, compilado con la Java 7.

angelborroy
Community Manager Community Manager
Community Manager
La 5.0.a fue un fiasco (con perdón), creo que la más estable de todas tus opciones es la 4.2.f.

Aunque también deberías pensar que algún día deberías cambiar tus integraciones a CMIS: quizá no sea demasiado complicado hacer un wrapper para los objetos clientes de SOAP y traducir las invocaciones a CMIS.
Hyland Developer Evangelist

spilby
Confirmed Champ
Confirmed Champ
Ah ok, pues la 4.2f entonces. Al ver 5.0 pensé si podría funcionar para Alfresco 5.0, me extrañaba si han quitado los servicios soap que iban con webservice para 5.0, pero no sabia si era una especie de wraper para hacerlo compatible o algo. No tiene nada que ver entonces, no? Aunque ponga 5.0 no funcionará con Alfresco 5.0?

angelborroy
Community Manager Community Manager
Community Manager
Una cosa es el cliente y otra el servidor.

El servidor SOAP solo está hasta la 5.0.a, así que si usas el cliente con una versión superior de Alfresco encontrarás el servidor vacío.
Hyland Developer Evangelist

spilby
Confirmed Champ
Confirmed Champ
Una pregunta sobre versiones… He encontrado este link con fechas de soporte.

https://www.alfresco.com/services/subscription/technical-support/product-support-status

Concretamente, indica ésto sobre las últimas releases:

Product   -    Support Status    -   First Release   -    Deprecation    -   End of Maintenance

Alfresco Version 5.x   -    Full Support   -    3rd Dec 2014   -    TBA   -    TBA
Alfresco Version 4.2.5   -    Full Support   -    25th Nov 2015   -    TBA   -    TBA
Alfresco Version 4.x (excluding 4.2.5)   -    Limited Support   -    31st Jan 2012   -    3rd Dec 2014   -    TBA
Alfresco Version 3.4.14   -    Limited Support   -    21st Jan 2011    -   3rd Dec 2014    -   TBA

(TBA es To Be Announced)

Veo que para versiones community se emplean letras y para las enterprise números. Nosotros tenemos la enterprise. La 4.2.5 equivale a la 4.2.f de la que hablábamos como la última y más estable? Es decir, la "a" comienza con el "0"? Imagino que sí, ya que entiendo que el soporte especial que se indica en la tabla (segunda fila) debe corresponder a la última versión, que se alarga más su deprecation date por ser la última y más estable. Pero por confirmarlo seguro.

angelborroy
Community Manager Community Manager
Community Manager
En realidad las versiones Community y Enterprise no tienen una correspondencia directa. Cada una tiene su propio ciclo de vida.
Hyland Developer Evangelist