CMDBuild Forum

Web Application utilizzando i Web Services di CMDBuild

Salve a tutti,

devo sviluppare un' applicazione WEB utilizzando i Web Services messi a disposizione dal CMDBuild;

utilizzo l' IDE Eclipse-JEE ed il PlugIn "org.apache.axis2.eclipse.codegen.plugin_1.6.2" per generare del codice Java a partire dai WSDL.

 

1) In quale Path si trovano, all'interno di "cmdbuild", i file WSDL (in formato xml) da utilizzare per creare gli stub Java ?

2)   Devo forse installare in Eclipse ulteriori PlugIn per gestire la comunicazione con i CMDBuild WebServices, in particolare per la fase di autenticazione ?

Salve Andrea,
 
noi utilizziamo CXF per i web service SOAP di CMDBuild, abbiamo abbandonato Axis qualche release fa a causa della sua arretratezza rispetto a CXF. Comunque, all'interno del modulo "cmdbuild-ws-client", nel file pom.xml, viene definito come:
- il wsdl è generato a partire dai sorgenti di CMDBuild
- i bean del client sono generati a partire dal wsdl
Può quindi prendere l'intero modulo come esempio per generare un client SOAP adatto alle sue esigenze. Può addirittura usare il modulo stesso come dipendenza per il suo progetto, ma faccia attenzione che il modulo utilizza il web service "privato" inteso come un interfaccia ad uso interno che potrebbe cambiare senza alcun preavviso. Consigliamo di utilizzare l'interfaccia "Webservices" per cui è garantito il mantenimento e la compatibilità col passato.
 
Cordiali saluti.
 
-- Davide Pavan
 
Previously Andrea wrote:

Salve a tutti,

devo sviluppare un' applicazione WEB utilizzando i Web Services messi a disposizione dal CMDBuild;

utilizzo l' IDE Eclipse-JEE ed il PlugIn "org.apache.axis2.eclipse.codegen.plugin_1.6.2" per generare del codice Java a partire dai WSDL.

 

1) In quale Path si trovano, all'interno di "cmdbuild", i file WSDL (in formato xml) da utilizzare per creare gli stub Java ?

2)   Devo forse installare in Eclipse ulteriori PlugIn per gestire la comunicazione con i CMDBuild WebServices, in particolare per la fase di autenticazione ?

 

Salve Davide,

siamo passati ad utilizzare CXF.

 

Avrei alcune domande:

1) Dove trovo il wsdl generato a partire dai sorgenti di CMDBuild ?

2) Da questo file wsdl potrò generare i bean del Client, tramite il tool wsdl2java ?

3) Dove si trovano i 2 file rampart.mar e policy.xml che devo utilizzare per l'autenticazione,

di cui si fa riferimento nell'esempio di realizzazione di un Client nel manuale WebserviceManual_ITA_V200 ?

 

Grazie

 Andrea

 

Previously Tecnoteca wrote:
Salve Andrea,
 
noi utilizziamo CXF per i web service SOAP di CMDBuild, abbiamo abbandonato Axis qualche release fa a causa della sua arretratezza rispetto a CXF. Comunque, all'interno del modulo "cmdbuild-ws-client", nel file pom.xml, viene definito come:
- il wsdl è generato a partire dai sorgenti di CMDBuild
- i bean del client sono generati a partire dal wsdl
Può quindi prendere l'intero modulo come esempio per generare un client SOAP adatto alle sue esigenze. Può addirittura usare il modulo stesso come dipendenza per il suo progetto, ma faccia attenzione che il modulo utilizza il web service "privato" inteso come un interfaccia ad uso interno che potrebbe cambiare senza alcun preavviso. Consigliamo di utilizzare l'interfaccia "Webservices" per cui è garantito il mantenimento e la compatibilità col passato.
 
Cordiali saluti.
 
-- Davide Pavan
 
Previously Andrea wrote:

Salve a tutti,

devo sviluppare un' applicazione WEB utilizzando i Web Services messi a disposizione dal CMDBuild;

utilizzo l' IDE Eclipse-JEE ed il PlugIn "org.apache.axis2.eclipse.codegen.plugin_1.6.2" per generare del codice Java a partire dai WSDL.

 

1) In quale Path si trovano, all'interno di "cmdbuild", i file WSDL (in formato xml) da utilizzare per creare gli stub Java ?

2)   Devo forse installare in Eclipse ulteriori PlugIn per gestire la comunicazione con i CMDBuild WebServices, in particolare per la fase di autenticazione ?

 

 

Salve Andrea,

ha per caso visto il modulo "cmdbuild-ws-client"? All'interno del file pom.xml viene definito come generare il wsdl dati i sorgenti:

<plugin>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-java2ws-plugin</artifactId>

...

<executions>

<execution>

<id>generate-sources</id>

<phase>generate-sources</phase>

<configuration>

<className>org.cmdbuild.services.soap.Private</className>

<genWsdl>true</genWsdl>

<verbose>true</verbose>

</configuration>

<goals>

<goal>java2ws</goal>

</goals>

</execution>

</executions>

<configuration>

</configuration>

</plugin>

lo può trovare quindi all'interno della directory "target/generated/wsdl" del modulo stesso. Ma faccia bene attenzione che è un'operazione effettuata automaticamente dal plugin di CXF per Maven, quindi future release potrebbero avere una posizione diversa (1).

Sempre all'interno di questo modulo, a partire dal wsdl vengono generati i bean che possono poi essere utilizzati (2):

<plugin>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-codegen-plugin</artifactId>

<version>${cxf.version}</version>

<executions>

<execution>

<id>generate-sources</id>

<phase>generate-sources</phase>

<configuration>

<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>

<wsdlOptions>

<wsdlOption>

<wsdl>${project.build.directory}/generated/wsdl/Private.wsdl</wsdl>

</wsdlOption>

</wsdlOptions>

</configuration>

<goals>

<goal>wsdl2java</goal>

</goals>

</execution>

</executions>

</plugin>

Nel nostro utilizzo abituale, l'autenticazione (3) non viene definita a livello di codice, l'esempio sul manuale è stato fatto per Axis e non per CXF.

Le rinnovo la raccomandazione di prendere pure come esempio il modulo "cmdbuild-ws-client" ma di non usare i web service "Private" ma "Webservices" per cui è garantita la retro-compatibilità.

 

Cordiali saluti.

 

-- Davide Pavan

 

Previously Andrea wrote:

Salve Davide,

siamo passati ad utilizzare CXF.

 

Avrei alcune domande:

1) Dove trovo il wsdl generato a partire dai sorgenti di CMDBuild ?

2) Da questo file wsdl potrò generare i bean del Client, tramite il tool wsdl2java ?

3) Dove si trovano i 2 file rampart.mar e policy.xml che devo utilizzare per l'autenticazione,

di cui si fa riferimento nell'esempio di realizzazione di un Client nel manuale WebserviceManual_ITA_V200 ?

 

Grazie

 Andrea

 

Previously Tecnoteca wrote:
Salve Andrea,
 
noi utilizziamo CXF per i web service SOAP di CMDBuild, abbiamo abbandonato Axis qualche release fa a causa della sua arretratezza rispetto a CXF. Comunque, all'interno del modulo "cmdbuild-ws-client", nel file pom.xml, viene definito come:
- il wsdl è generato a partire dai sorgenti di CMDBuild
- i bean del client sono generati a partire dal wsdl
Può quindi prendere l'intero modulo come esempio per generare un client SOAP adatto alle sue esigenze. Può addirittura usare il modulo stesso come dipendenza per il suo progetto, ma faccia attenzione che il modulo utilizza il web service "privato" inteso come un interfaccia ad uso interno che potrebbe cambiare senza alcun preavviso. Consigliamo di utilizzare l'interfaccia "Webservices" per cui è garantito il mantenimento e la compatibilità col passato.
 
Cordiali saluti.
 
-- Davide Pavan
 
Previously Andrea wrote:

Salve a tutti,

devo sviluppare un' applicazione WEB utilizzando i Web Services messi a disposizione dal CMDBuild;

utilizzo l' IDE Eclipse-JEE ed il PlugIn "org.apache.axis2.eclipse.codegen.plugin_1.6.2" per generare del codice Java a partire dai WSDL.

 

1) In quale Path si trovano, all'interno di "cmdbuild", i file WSDL (in formato xml) da utilizzare per creare gli stub Java ?

2)   Devo forse installare in Eclipse ulteriori PlugIn per gestire la comunicazione con i CMDBuild WebServices, in particolare per la fase di autenticazione ?

 

 

 

Previously Tecnoteca wrote:

Salve Andrea ........

-----------------------------------------------------------

Salve Davide
grazie per la risposta. Vorrei però chiarire il contesto di sviluppo in cui ci muoviamo.

Premessa

Il nostro obiettivo è creare una applicazione web-based molto semplificata che consenta di effettuare un controllo inventariale
di apparati informatici e non consentendo all'utente di 'confermare' in fase di inventario l'esistenza o meno del bene.

L'ambiente di sviluppo che abbiamo identificato è Eclipse J2EE Juno che include il plugin Apache CXF. Al momento sviluppiamo su una workstation Windows.
 
Vorremmo quindi creare il war relativo al nostro cmdbuild_ws_client (lo chiameremo per evitare incongruenze MYcmdbuild_ws_client) direttamente
come progetto Eclipse, per poter poi facilmente agganciarlo al progetto web vero e proprio che vorremmo sviluppare come Java Server Face project.

Abbiamo tentato di installare il plugin Maven per eclipse m2e, ma avendo dei problemi nelle installazioni da remoto stiamo valutando
la soluzione di creare il war MYcmdbuild_ws_client con passi manuali successivi direttamente in Eclipse.

Guardando il pom che ci hai indicato ed avendo i sorgenti della distribuzione
tecnoteca-cmdbuild-4dc2c2f4585d.zip (a proposito esiste una distro più recente?), vorremmo partire da quei sorgenti ed effettuare i seguenti passi:

A) Creazione di un progetto (Dynamic Web Project) 
B) Import nella cartella dei sorgenti (Java Resources/src) del file WebService.java (da utilizzare per avere un wsdl con interfaccia pubblica) e
    tutte le cartelle con i sorgenti necessari per l'assemblamento del client. A tale proposito avrei identificato dalle voci 'dependency' del pom
    i seguenti package sorgenti :

    b1) CMDBUILD-WS-Client
    b2) CMDBUILD-COMMONS
    Abbiamo però dei dubbi se inserire tutto il package sorgente CMDBUILD (puoi chiarirci questo dubbio ?)
C) Creazione, all'interno del progetto, di un Web Service con metodo Botton Up (utilizzando  Java2WS di Apache CXF 2.x),
    generante a partire dal sorgente "WebService.java" il file wsdl

D) Generazione (utilizzando  WS2Java di Apache CXF 2.x) di un Web Service Client denominato MYcmdbuild_ws_client
    a partire dal wsdl precedentemente generato.

E) Scrivere un programma di test (Classi  Java Custom) usando come base il sorgente di  PublicTestClient.java (reperito da un post nel forum)

F) Assemblare il tutto in un war da installare per la fase di test sul sistema che ospita cmdbuild.

Questa versione per il momento è fondamentalmente standalone (non web) e si connetterà all'istanza tomcat sotto cui è installato cmdbuild.

Fase di test

G) Test del Client Custom (che incapsula le chiamate al Client generato) in modalita stand-alone. A tale proposito volevo chiederti se il web services di cmdbuild è
sempre attivo oppure se dobbiamo modificare la configurazione cmdbuild che utilizziamo per il test.

H) Sviluppo della soluzione JSF e  creazione del war corrispondente che include anche il jar del MYcmdbuild_ws_client che abbiamo creato ai punti precedenti.

L) Per il test installeremo il war sotto l'installazione tomcat dove è presente cmdbuild (come avviene ora per il package shark-overlay).

Un paio di chiarimenti sulla fase di autenticazione.
1) Dagli esempi dei sorgenti ci sembra di capire che username/password sia 'cablati' nel codice, oppure esistono dei files di configurazione specifici dove impostare i valori ?
2) Una eventuale applicazione client che utilizzi  MYcmdbuild_ws_client deve esplicitamente autenticarsi a cmdbuild, oppure questo viene effettuato direttamente dal
    MYcmdbuild_ws_client ? Nel caso in cui l'autenticazione è a carico dell'applicazione client, per ogni metodo (api) invocato bisogna eseguire la fase di autenticazione ?


Molte grazie per il supporto

 Cordiali Saluti
  Andrea      

 

 

 

 

Buongiorno Andrea,
 
cerco di rispondere ai tuoi quesiti:
 
>> Guardando il pom che ci hai indicato ed avendo i sorgenti della distribuzione tecnoteca-cmdbuild-4dc2c2f4585d.zip (a proposito esiste una distro più recente?),
 
Qui puoi trovare i sorgenti allineati all'ultimo commit eseguito.
 
>> Abbiamo però dei dubbi se inserire tutto il package sorgente CMDBUILD (puoi chiarirci questo dubbio ?)
 
Gli 'artifact "cmdbuild-commons" e "cmdbuild-ws-client" dovrebbero essere sufficienti.
 
>> ... username/password sia 'cablati' nel codice, oppure esistono dei files di configurazione specifici dove impostare i valori ?
 
Lo username/password vanno specificati nel client SOAP che avete deciso di usare (CXF, Axis o altro che sia). Per CXF può essere fatto creando un'istanza della classe JaxWsProxyFactoryBean ma sta a te decidere se cablare i valori di cui sopra nel codice o se farlo leggere da un file di properties/xml, da un database o da un servizio esterno.
 
>> Una eventuale applicazione client che utilizzi  MYcmdbuild_ws_client deve esplicitamente autenticarsi a cmdbuild, oppure questo viene
>> effettuato direttamente dal MYcmdbuild_ws_client ? Nel caso in cui l'autenticazione è a carico dell'applicazione client, per ogni metodo (api)
>> invocato bisogna eseguire la fase di autenticazione ?
 
Parlo per CXF... una volta creato il proxy ogni richiesta fatta tenterà l'autenticazione con le credenziali precedentemente impostate. Se l'utente che si autentica è sempre lo stesso non sarà necessario creare un nuovo proxy, in alternativa credo che tu debba farlo di volta in volta.
 
Cordiali saluti.
 
-- Davide Pavan
 
Previously Andrea wrote:
Previously Tecnoteca wrote:

Salve Andrea ........

-----------------------------------------------------------

Salve Davide
grazie per la risposta. Vorrei però chiarire il contesto di sviluppo in cui ci muoviamo.

Premessa

Il nostro obiettivo è creare una applicazione web-based molto semplificata che consenta di effettuare un controllo inventariale
di apparati informatici e non consentendo all'utente di 'confermare' in fase di inventario l'esistenza o meno del bene.

L'ambiente di sviluppo che abbiamo identificato è Eclipse J2EE Juno che include il plugin Apache CXF. Al momento sviluppiamo su una workstation Windows.
 
Vorremmo quindi creare il war relativo al nostro cmdbuild_ws_client (lo chiameremo per evitare incongruenze MYcmdbuild_ws_client) direttamente
come progetto Eclipse, per poter poi facilmente agganciarlo al progetto web vero e proprio che vorremmo sviluppare come Java Server Face project.

Abbiamo tentato di installare il plugin Maven per eclipse m2e, ma avendo dei problemi nelle installazioni da remoto stiamo valutando
la soluzione di creare il war MYcmdbuild_ws_client con passi manuali successivi direttamente in Eclipse.

Guardando il pom che ci hai indicato ed avendo i sorgenti della distribuzione
tecnoteca-cmdbuild-4dc2c2f4585d.zip (a proposito esiste una distro più recente?), vorremmo partire da quei sorgenti ed effettuare i seguenti passi:

A) Creazione di un progetto (Dynamic Web Project) 
B) Import nella cartella dei sorgenti (Java Resources/src) del file WebService.java (da utilizzare per avere un wsdl con interfaccia pubblica) e
    tutte le cartelle con i sorgenti necessari per l'assemblamento del client. A tale proposito avrei identificato dalle voci 'dependency' del pom
    i seguenti package sorgenti :

    b1) CMDBUILD-WS-Client
    b2) CMDBUILD-COMMONS
    Abbiamo però dei dubbi se inserire tutto il package sorgente CMDBUILD (puoi chiarirci questo dubbio ?)
C) Creazione, all'interno del progetto, di un Web Service con metodo Botton Up (utilizzando  Java2WS di Apache CXF 2.x),
    generante a partire dal sorgente "WebService.java" il file wsdl

D) Generazione (utilizzando  WS2Java di Apache CXF 2.x) di un Web Service Client denominato MYcmdbuild_ws_client
    a partire dal wsdl precedentemente generato.

E) Scrivere un programma di test (Classi  Java Custom) usando come base il sorgente di  PublicTestClient.java (reperito da un post nel forum)

F) Assemblare il tutto in un war da installare per la fase di test sul sistema che ospita cmdbuild.

Questa versione per il momento è fondamentalmente standalone (non web) e si connetterà all'istanza tomcat sotto cui è installato cmdbuild.

Fase di test

G) Test del Client Custom (che incapsula le chiamate al Client generato) in modalita stand-alone. A tale proposito volevo chiederti se il web services di cmdbuild è
sempre attivo oppure se dobbiamo modificare la configurazione cmdbuild che utilizziamo per il test.

H) Sviluppo della soluzione JSF e  creazione del war corrispondente che include anche il jar del MYcmdbuild_ws_client che abbiamo creato ai punti precedenti.

L) Per il test installeremo il war sotto l'installazione tomcat dove è presente cmdbuild (come avviene ora per il package shark-overlay).

Un paio di chiarimenti sulla fase di autenticazione.
1) Dagli esempi dei sorgenti ci sembra di capire che username/password sia 'cablati' nel codice, oppure esistono dei files di configurazione specifici dove impostare i valori ?
2) Una eventuale applicazione client che utilizzi  MYcmdbuild_ws_client deve esplicitamente autenticarsi a cmdbuild, oppure questo viene effettuato direttamente dal
    MYcmdbuild_ws_client ? Nel caso in cui l'autenticazione è a carico dell'applicazione client, per ogni metodo (api) invocato bisogna eseguire la fase di autenticazione ?


Molte grazie per il supporto

 Cordiali Saluti
  Andrea