Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Spring] Problema creazione web service

    Ciao ragazzi,
    per un progetto universitario ho creato una web application in Spring che semplicemente consente ad un operatore di inserire determinati dati all'interno di un DB tramite un form.

    Ora a questa web application devo integrare un web service sempre fatto in Spring che funziona circa così:

    1) Un utente si connette al web service
    2) Il web service effettua una query e restituisce all'utente i dati presenti nel database in un file XML

    Il WS si appoggia su AXIS 2 credo...

    Ho effettuato le seguenti operazioni ma ho problemi a deployare la mia applicazione da quando gli ho aggiunto il web service:

    1) Classe PoiServiceWS che gestisce il web serivce: semplicemente tramite un oggetto DAO accede ai dati e li mette in una collezione che poi restituisce

    codice:
    package integration;
    
    import dao.PoiDao;
    import domain.POI;
    import org.springframework.remoting.jaxrpc.ServletEndpointSupport;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    
    /* Classe che implementa il web service */
    
    public class PoiServiceWS extends ServletEndpointSupport {
    
        private PoiDao poiDAO;     // Dichiaro una variabile di tipo PoiDao generico
    
        /* Metodo chiamato per effettuare l'inizializzazione personalizzata dopo che
         * è stato specificato il contesto */
        protected void onInit() {
            poiDAO = (PoiDao)getWebApplicationContext().getBean("poiDAO");
        }
    
        /* Metodo che restituisce tutti i POI */
        public List<HashMap>allPois(){
    
            // Crea una lista di generici ogetti POI
            List<POI> results = new ArrayList<POI>();
            //if(id!=null&&!id.equals(""))
            //    results=poiDAO.getPoi(id);
            //else
    
            /* Mette dentro result il riferimento ad una lista di POI restituita dal
             * metodo getListPoi del DAO */
            results = poiDAO.getListPoi();
    
            // Crea una lista di oggetti generici di tipo HashMap (chiave, valore)
            List<HashMap> mappaOut=new ArrayList<HashMap>();
            
            // Per ogni oggetto poi contenuto nella lista result 
            for(POI poi:results){
    
                // Crea un nuovo oggetto mappaPoi di tipo HashMap (chiave, valore)
                HashMap mappaPoi=new HashMap();
    
                // Setta i campi dell'oggetto mappaPoi appena creato
                mappaPoi.put("nome",poi.getNome());
                mappaPoi.put("lat",poi.getLat());
                mappaPoi.put("lon",poi.getLon());
                mappaPoi.put("alt",poi.getAlt());
                mappaPoi.put("tipologia",poi.getTipologia());
                mappaPoi.put("wikilink",poi.getWikiLink());
                //mappaPoi.put("poiId",poi.getPoiId()); ?!?!
                mappaPoi.put("id",poi.getId());
    
                // Aggiungi l'oggetto Hash Map appena creato alla lista dei POI
                mappaOut.add(mappaPoi);
            }
    
            // Ritorna al chiamante la lista che contiene gli ogetti HashMap che rappresentano i POI
            return mappaOut;
        }
    }
    Il contenuto del file web.xml è il seguente:

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </context-param>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>2</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>*.htm</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>redirect.jsp</welcome-file>
        </welcome-file-list>
    
        
        <display-name>Apache-Axis</display-name>
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </context-param>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <servlet>
            <display-name>Apache-Axis Servlet</display-name>
            <servlet-name>AxisServlet</servlet-name>
            <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
        </servlet>
        <servlet>
            <display-name>Axis Admin Servlet</display-name>
            <servlet-name>AdminServlet</servlet-name>
            <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
            <load-on-startup>100</load-on-startup>
        </servlet>
        <servlet>
            <display-name>SOAPMonitorService</display-name>
            <servlet-name>SOAPMonitorService</servlet-name>
            <servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>
            <init-param>
                <param-name>SOAPMonitorPort</param-name>
                <param-value>5101</param-value>
            </init-param>
            <load-on-startup>100</load-on-startup>
        </servlet>
        
    
        <servlet-mapping>
            <servlet-name>AxisServlet</servlet-name>
            <url-pattern>/servlet/AxisServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>AxisServlet</servlet-name>
            <url-pattern>*.jws</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>AxisServlet</servlet-name>
            <url-pattern>/services/*</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>SOAPMonitorService</servlet-name>
            <url-pattern>/SOAPMonitor</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>AdminServlet</servlet-name>
            <url-pattern>/servlet/AdminServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>*.html</url-pattern>
        </servlet-mapping>
        <mime-mapping>
            <extension>wsdl</extension>
            <mime-type>text/xml</mime-type>
        </mime-mapping>
    
    </web-app>
    Il problema è che quando provo a deployare la mia applicazione mi dà i seguenti messaggi di errore:

    codice:
    GRAVE: WebModule[/InsertPoi]Error loading WebappClassLoader (delegate=true; repositories=WEB-INF/classes/) org.apache.axis.transport.http.AdminServlet
    java.lang.ClassNotFoundException: org.apache.axis.transport.http.AdminServlet
            at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
            at java.security.AccessController.doPrivileged(Native Method)
    ..............................
    .............................
    Non capisco da cosa possa dipendere...gli manca qualcosa o cosa? qualcuno che ha qualche esperienza con tale framework sà darmi una mano?

    Grazie
    Andrea

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    7
    Ciao,


    provo a darti un consiglio.

    Con quale IDE lavori? Comunque a prescindere dalla tipologia di IDE, puoi utilizzare Eclipse,MyEclipse,NetBeans...quello che vuoi insomma...ma solitamente tutti hanno la funzione di poter esporre la tua classe come web service facendo, a seconda dei casi, delle determinate operazioni, basta che fai una ricerca su internet e ti informi...ad esempioper eclipse basta seguire questo link che ti illustra come trasformare una classe Java in un WS.

    http://www.eclipse.org/webtools/jst/...ebService.html

    Spero di esserti stato utile.

    Antonio.

  3. #3
    Ciao,
    io generalmente uso NetBeans, il fatto è che per realizzare il WS devo usare il framework Spring, comunque penso di aver risolto...a quanto pare mancava solamente un file .JAR, ora la mia applicazione viene deployata correttamente

    Sicuramente però darò un'occhiata a quella guida che mi hai mandato :-)

    Ora però ti farò una domanda banalissima...ok...la mia applicazione ora viene deployata sull'application server GlassFish....come posso accedere al WS che ho appena realizzato?

    Cioè mi spiego meglio...il mio WS dovrebbe comportarsi così, lo invoco (non ho maschere per fare input) e quello semplicemente mi esegue una query e mi restituisce un file XML con i valori estratti dal DB con quella query...se volessi invocarlo dal broswer per visualizzare il file XML su di esso cosa devo fare?


    Grazie
    Andrea

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    7
    Ciao,

    mi fa piacere che tu abbia risolto.

    Guarda, per ciò che concerne la tua domanda ti posso dire che ogni servizio, come suppongo che tu sappia, è allocato su un end-point address tipo: http://localhost:8080/Axis/MioServizio
    per invocarlo; le chiamate a tale servizio vengono sempre fatte in background, ossia c'è un meccanismo Stub-Skeleton che tramite RMI e pacchetti SOAP permette al chiamante di usufruire del servizio stesso a prescindere dalla tipologia di implementazione.
    Per cui ci sono due modi per ottenere ciò che tu desideri:
    1) modifichi il servizio in maniera tale che prima di ritornare il file xml te lo stampa nel browser;
    2) dal chiamante prendi il file xml che ti restituisce il servizio e lo stampi nel browser;

    come?

    Con una istruzione tipo questa:
    PrintWriter out = new PrintWriter(new FileOutputStream("users.xml"));

    In alternativa puoi prevedere una procedura che salva il file sul server e dopo averlo salvato fai puntare il server a dove hai salvato il file.

    in tal modo dovresti sicuramente uscirne fuori!

    Ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.