Webservice
Come si raggiunge un webservice
Per lâinvocazione del Web Service utilizzare la seguente sintassi: http://<hostname>:<port>/client/services/<webservice> dove: <hostname>: è il nome del Web Server in cui viene installato il web service; <port>: è la porta su cui è in ascolto il web service (porta di Tomcat); se la porta è quella standard HTTP, la 80, allora lâindicazione della porta può essere omessa; <webservice>: è il Web Service vero e proprio che espone le funzionalità . Per ottenere il WSDL del web service: http://<hostname>:<port>/client/services/<webservice>?wsdl
/client/services/: è il percorso dellâapplicazione web associata al web service.
Esempio di URL: http://sicrawebappserver:50080/client/services/ProWSApi
Definire un Alias
Nel file sicraweb.server.config.xml presente nella cartella JBOSS_HOME\server\default\deploy\sicraweb.ear\server\signed-jars\conf.ig nella sezione <logon> inserire una sezione <alias ... /> come riportato nel seguente esempio:
<logon>
<alias name=âsuap@sicrawebâ j2eeusername=âsicrawebâ j2eepassword=âsicrawebâ username=âsuapâ password=âsuapâ/>
<alias name=âsuap@sicraweb_testâ j2eeusername=âsicraweb_testâ j2eepassword=âsicraweb_testâ username=âsuapâ password=âsuapâ/>
</logon>
ATTENZIONE: Controllare che nel file sicraweb.server.config.xml non esista già il tag <logon> </logon>. Se tale tag esiste, aggiungere i nuovi alias allâinterno dei tag <logon> </logon> già presenti. Solitamente tali tag esistono per Anagrafe on line (AOL). Eâ molto importante che nel file, anche dopo le modifiche, esista un solo tag <logon>.
In questo file di configurazione vanno configurate le credenziali da utilizzare per effettuare l'accesso tramite web service. Creare i due alias, uno per lâambiente di produzione ed uno per lâambiente di test. Lâ alias name è il nome con cui il software che chiama il WS e indica su quale database andare ad inserire le informazioni trasmesse. Il j2eeusername e j2eepassword è la configurazione che viene data dai sistemisti in fase di installazione per identificare il database; la si può recuperare dal file JNLP di avvio di SicraWeb nella seguente sezione (vedi dati evidenziati):
<application-desc main-class="it.saga.pubblici.menu.MnuCFGMain">
<argument>jboss: sicrawebappserver:50080:1099</argument>
<argument>sicraweb</argument>
<argument>sicraweb</argument>
</application-desc>
NOTA: verificare SEMPRE che ci sia corrispondenza tra lâutente j2ee indicato nel JNLP di lancio di sicraweb e quello indicato nella sezione <logon>.
Attivare un webservice
Per attivare il web service è sufficiente aprire la maschera presente in GESTIONE -> CONFIGURAZIONE -> SISTEMA -> WEBSERVICE. Se la voce di menù non è attiva, significa che lâutente che si sta usando è privo del permesso di configurazione dei Webservice:
foto permesso
Una volta aperta la maschera di configurazione dei WS
Selezionare il webservice desiderato che normalmente sarà in stato disattivato, contraddistinto quindi dallâicona foto icona blu . Cliccando su tale pulsante viene attivato il WS (il messaggio chiede se si vuole fare il deploy). Al termine del deploy, che normalmente impiega qualche istante, lâicona indicherà lo stato attivo del WS foto icona verde .
Per disattivare il WS cliccare sullâicona di stato attivo foto icona verde e dopo qualche istante il WS verrà disattivato.
N.B. Lâattivazione del WS da un qualsiasi ambiente di sicraweb, attiva il WS anche per le altre installazioni. Di conseguenza il WS si può attivare indifferentemente loggandosi dallâambiente di produzione o dallâambiente di test.
Verifica web service attivo
Si può verificare se il web service è attivo aprendo un browser e digitando lâindirizzo http://sicrawebappserver:50080/client/services/ si avrà un risultato del tipo
foto webservice attivi
Risoluzione dei problemi
(401)Unauthorized
(401)Unauthorized -> abilitare lâamministrazione remota dei Webservice Quando eseguendo il deploy o lâundeploy di un web service da un errore di autorizzazioni (ad es. (401)Unauthorized), il problema può essere legato al fatto che AXIS non è stato configurato per essere amministrato da remoto.
Soluzione: Aprire il file $JBOSS_HOME\server\default\deploy\sicraweb.ear\sicraweb.war\WEB-INF\server-config.wsdd Nella sezione relative allâAdminService di Axis:
<service name="AdminService" provider="java:MSG">
<parameter name="allowedMethods" value="AdminService"/>
<parameter name="enableRemoteAdmin" value="false"/>
<parameter name="className" value="org.apache.axis.utils.Admin"/>
<namespace>http://xml.apache.org/axis/wsdd/</namespace>
</service>
Modificare il parametro enableRemoteAdmin portandolo a true. Riavviare JBoss per rendere esecutiva la modifica.
(404)NotFound
(404)NotFound -> La pagina non è stata trovata
I motivi possono essere:
1) Axis non è installato
2) La prima porta specificata nel JNLP di lancio non combacia con la porta in cui è in ascolto Tomcat:
Soluzione punto 2:
Verifcare nel JNLP che la porta in grassetto sia quella in cui Tomcat è in ascolto
<application-desc main-class="it.saga.pubblici.menu.MnuCFGMain">
<argument>jboss:sicrawebapplocalserver:50080:50002</argument>
<argument>nomeDatabase</argument>
<argument>nomeDatabase</argument>
</application-desc>
Nel caso, correggerla
namingException o null locale looking for (namingException)
Nel logon descriptor è stato specificato un utente J2EE errato.
Password Incorrect/Password Required
Nel logon descriptor è stato specificato un utente sicraweb è errato oppure la password è errata.
Qualâè la porta in cui è in ascolto Tomcat?
Aprire il file $JBOSS_HOME \server\default\deploy\jbossweb-tomcat50.sar\server.xml
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="200" minSpareThreads="25" maxSpareThreads="45"
enableLookups="false" redirectPort="8443" acceptCount="40"
connectionTimeout="2000" disableUploadTimeout="true"/>
oppure si può cercare nel log di JBoss la seguente riga: Starting Coyote HTTP
10:39:30,601 INFO [Tomcat5] Saw org.jboss.system.server.started notification, starting connectors
10:39:30,618 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-0.0.0.0-8080
Axis è configurato?
Per verificare se Axis è configurato prire il file:
%JBOSS_HOME%\server\default\deploy\sicraweb.ear\sicraweb.war\WEB-INF\web.xml
Dovrebbe esserci una sezione in cui è dichiarato il servlet di AXIS: AxisServlet
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
Per verificare se il servlet che gestisce i web service è funzionante collegarsi allâindirizzo:
http://hostname:port/client/services
dove port=porta di tomcat Ad esempio: http://sicrawebappserver:50080/client/services