PDA

View Full Version : [Java Spring] Problema creazione web service


e-commerce84
12-09-2010, 14:29
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


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:


<?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>

<!-- Parte relativa al web service -->
<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:


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