web services

cancel
Showing results for 
Search instead for 
Did you mean: 
staste
Member II

web services

Salve a tutti,
sono nuovo e vi posto il mio problema con i web service di alfresco.
Alfresco mette a disposizione una cartella "wsdl" dove sono contenuti alcuni wsdl di servizi web utilizzati da alfresco.
Devo provare e capirne il funzionamento. Sto utilizzando soapUI ma mi funziona solo il wsdl dell' AuthenticationService mentre tutti gl'altri mi danno errore. Infatti mi richiede di inserire il campo (security header) che non è presente nel servizio.
:?:
Spero che qualcuno possa aiutarmi……. :idea:
Grazie in anticipo
4 Replies
openpj
Moderator
Moderator

Re: web services

Se stai sviluppando in linguaggio Java puoi utilizzare lo stub già compilato e fornito da Alfresco del Web Service Client.
In questo modo puoi facilmente invocare chiamate repository utilizzando direttamente la classe WebServiceFactory e senza doversi studiare alcun WSDL.
Questo stub è un JAR da includere nelle proprie librerie del progetto e da utilizzare utilizzando il Content Manipulation Language (CML) di Alfresco.

Alfresco Web Service Client:
http://wiki.alfresco.com/wiki/Labs_3_Final_download_files#Alfresco_Web_Service_Client

Content Manipulation Language:
http://wiki.alfresco.com/wiki/CML

Qualche esempio riguardo l'utilizzo di questa libreria in linguaggio Java:
http://wiki.alfresco.com/wiki/Web_Service_Samples_for_Java

Hope this helps.
staste
Member II

Re: web services

Ti ringrazio per avermi risposto………OpenPj
Io sto sviluppando in linguaggio java.
Ho per forza bisogno di invocare questi web service, per problemi lavorativi. Avevo già scaricato il web service client (ovvero il jar che mi hai consigliato di mettere nelle librerie) ma non riesco ad invocarli (dargli in pasto un input e vedere cosa mi dà in output)….Ho provato dall'url ma riesco solo a visualizzare il wsdl (nomeServizio?wsdl)…. allora ho ripiegato su soapUI……(ma il risultato lo conosci già).
Allora..potresti dirmi dettagliatamente la procedura che mi hai descritto prima?(tipo cos'è e come utilizzare il CML…..etc)
inoltre volevo chiederti se sapevi un modo per invocare (in->out) gli wsdl da url…..(le ho provate tutte ma proprio non ci riesco!!)
ma devo creare un client mio per invocare lo stub?……come dovrei fare ad invocare chiamate repository……?????
scusami ma sono un po ignorante in materia…….. :?
GRAZIE ancora…. :!:
openpj
Moderator
Moderator

Re: web services

Allora innanzitutto ti consiglio caldamente di utilizzare lo stub fornito da Alfresco.
Per poterlo utilizzare all'interno del tuo progetto è necessario che tu includa tutte le librerie presenti all'interno del progetto AlfrescoRemote all'interno della SDK di Alfresco.

Quindi i passi sono i seguenti:
- devi scaricare la SDK di Alfresco relativa alla versione di Alfresco che stai utilizzando
- includi nel tuo workspace del tuo IDE tutta la SDK (se usi Eclipse è praticamente immediato)
- importa tutte le librerie di AlfrescoRemote all'interno del classpath della tua applicazione

In questo modo potrai invocare i metodi dell'Alfresco Web Service Client correttamente.
Inoltre per poter utilizzare l'Alfresco Web Service Client è necessario che una istanza di Alfresco sia correttamente installata su un server, in questo modo prima di fare qualsiasi operazione con il WS Client dovrai settare l'endpoint corretto che punta alla tua istanza di Alfresco che stai utilizzando, in questo modo:

String alfrescoWsUrl = "http://localhost:8080/alfresco/api";
WebServiceFactory.setEndpointAddress(alfrescoWsUrl);
AuthenticationUtils.startSession("admin", "admin");


AuthenticationUtils.endSession();
Alfresco espone diversi WSDL come servizi, per ogni servizio esiste un WSDL: RepositoryService, NodeService, etc…
Non ti consiglio di implementarti il web service da zero, non ha senso e non credo ti convenga.

Hope this helps.
_valerio_
Member II

Re: web services

scusate se intervengo in questa discussione (che mi sembra già di livello avanzato per le mie conoscenze) ma avrei bisogno di chiarimenti;
una volta installato l'sdk, quali sono i files che devo andare a modificare per usare i metodi webservices di alfresco (tipo webservicefactory.getContentService(), ecc..) ?

ho intuito, leggendo un po' di post qua e la, che il file da modificare dovrebbe essere il web-services-application-context.xml, in cui inserire il bean col nome dell' oggetto che implementa le funzionalità webservice che mi servono, tipo:
<bean id="nome_classe" class="org.alfresco.webservice.ECCETERA_ECCETERA" >
     <property name="workflowServiceImpl">
          <ref bean="nomeoggetto"/>
     </property>
</bean>
e che poi mi devo creare un file (ma non ho capito con che estensione e in che cartella di alfresco salvare tale file) in cui implemento la classe "nome_classe" dove uso i metodi che vorrei fossero disponbili tipo:

import org.alfresco.webservice.content.Content;
import org.alfresco.webservice.content.ContentServiceSoapBindingStub;
import org.alfresco.webservice.repository.UpdateResult;
import org.alfresco.webservice.types.*;
import org.alfresco.webservice.util.AuthenticationUtils;
import org.alfresco.webservice.util.Constants;
import org.alfresco.webservice.util.Utils;
import org.alfresco.webservice.util.WebServiceFactory;
import java.io.File;
import static java.io.File.separatorChar;
import java.io.FileInputStream; import java.io.IOException;
import java.io.InputStream;
import java.util.*;

String alfrescoWsUrl = "http://localhost:8080/alfresco/api";
WebServiceFactory.setEndpointAddress(alfrescoWsUrl);
AuthenticationUtils.startSession("admin", "admin");

public nome_classe() {
//corpo della classe
}

AuthenticationUtils.endSession();
è giusto?