PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tomcat-Frage...



Lin728
05-03-2004, 11:08
Hallo!

Da ich eine Client/server-Anwendung von Socket-basierender Kommunikation auf HTTP-Kommunikatioin umstellen muss, habe ich mich ein wenig mit tomcat auseinandergesetzt.

Ich habe zur Kommunkation ein SOAP-Framework, welches als Servlet laufen muss.
Ein Beispiel-SoapServer sieht z.B. so aus:


package examples.soapservice;

import javax.servlet.*;
import javax.servlet.http.*;

import org.ksoap.ClassMap;
import java.util.HashMap;

public class AlertServlet extends org.ksoap.servlet.SoapServlet
{

HashMap instanceMap = new HashMap();

public void init(ServletConfig config) throws ServletException
{
super.init(config);
ClassMap classMap = getClassMap();
classMap.addMapping("examples.soapservice", "SystemAlert", new SystemAlert().getClass() );

AlertService alertService = new AlertService();
instanceMap.put("AlertService", alertService);
}

public void doPost (HttpServletRequest req, HttpServletResponse res) throws ServletException, java.io.IOException
{

System.out.println("PATH_INFO=" + req.getPathInfo() );
System.out.println("SERVICE=" + req.getParameter("service") );
super.doPost(req,res);
}

protected Object getInstance (HttpServletRequest req)
{
Object result = instanceMap.get(req.getParameter("service") );
return result;
}
}


Was muss ich denn jetzt machen, damit ich per Tomcat darauf zugreifen kann? Tomcat läuft bereits samt Beispielen, aber was ich jetzt mit dem Class-File machen muss.

Wie gesagt ich brauche keine HTML-Ausgabe, das einizge was funktionieren soll ist SOAP über HTTP.

fs111
05-03-2004, 11:58
Für SOAP empfiehtl sich eigentlich immer axis das Webservices Framework von APach, welches auf den tomcat aufsetzt. Evtl. hilft Dir das ja weiter. Du musst dann einfach nur noch Deine Services schreiben (als normale Klassen) und die WSDL-Dateien schreiben, um den Rest kümmert sich axis/tomcat.

http://ws.apache.org/axis/

Falls Du einfach nur Dein jetziges Servlet zum laufe bekommen willst, musst Du das entsprechende Mapping in die web.xml eintragen. Näheres dazu erfährst Du auch in der Tomcat Doku.

HTH

fs111

Lin728
05-03-2004, 12:08
ch muss eine spezielle Soap-Library verwenden namens kSOAP und die muss halt in einem servlet laufen.

Ich werde mir das mit dem Mapping mal ansehen, danke für die Tipps!

fs111
05-03-2004, 12:40
Ja aber der tomcat läuft doch nicht auf dem Handy... AFAIK kannst Du mit ksoap auch mit axis auf der Serverseite reden, das ist ja auch eigentlich der Sinn von SOAP, dass man unabhängig von der Implementierung/Plattform Daten austauschen kann.

fs111

Lin728
05-03-2004, 13:59
Ja, weiß ich :-)

Nur ist das zeugs net kompatibel, weil axis mit einer alten version der namespaces arbeitet, es funktioniert schon, nur muss man aufpassen.
Und ich hab ja keinen nachteil, wenn man auf der ServerSeite kSoap verwende, erspare mir nur eventuelle kompatibilitätsprobleme.