schlechte Performance mit Ajax2?

Kerwin

Erfahrenes Mitglied
Edit: Ich meine natürlich Axis2 ;)


Hallo,

derzeit beschäftige ich mich viel mit Webservices, speziell mit Ajax2. Ich habe einen einfach Webservice erstellt sowie eine Client-klasse, die auf diesen zugreift.
Vorab sei gesagt, funktionell gesehen funktioniert Alles bestens.

Da ein Request/Response immer einen kleinen Moment dauert, habe ich mir die Frage nach der Schnelligkeit gestellt. Hierfür habe ich ein paar Zeitstempel mit in den Client sowie auch dem Server eingefügt, weil ich sehen wollte wie lange das ganze parsen etc dauert.

Zu den Zeiten:
- Auf Clientseite braucht das Instanzieren der Objekte bis hin zum Senden des Requests etwa 250 Millisekunden

- Nun schaue ich auf den Server (Tomcat Konsole), wann er dort anfängt zu arbeiten und sehe, es sind rund 200 millisekunden später. Das Verarbeiten der Objekte, bereitstellen der Responsenachricht sowie das Abschicken dauert auch wieder nur eine Millisekunde.

- zurück auf der Clientseite sehe ich, dass das Empfangen der Responsenachricht beim Client nur 20 Millisekunden dauert.

Übersicht:
Client ---> Request ---> Server = 200 Millisekunden (ab dem Zeitpunkt des sendes bis zum eintreffen beim Server)

Server ---> Response ---> Client = 20 Millisekunden


Bei den Zeiten handelt es sich immer um lokale Versuche (also CLient und Server auf einem Rechner). Auf Arbeit haben wir auch schon Webservices und dort wurde mir gesagt, dass die Zeiten eigentlich nicht so lange sein dürften, dort ist es schneller (haben wir auch getestet). Was mache ich nur falsch?


Was verwende ich:
Tomcat 6 mit Axis2 als *.war archiv.



Anbei schicke ich mal den Code:
Java:
// CLIENT


import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import java.io.StringWriter;
import javax.xml.stream.XMLOutputFactory;


public class addClient {
	
	
	private static EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/additionService");

	public static void main(String[] args) {

		System.out.println("Startzeit: " + new java.sql.Timestamp(new java.util.Date().getTime()));

		try {			
			OMFactory fac = OMAbstractFactory.getOMFactory();
			OMNamespace omNs = fac.createOMNamespace("http://www.example.org/additionService/","additionService");

			OMElement add = fac.createOMElement("adde", omNs);

			OMElement buch = fac.createOMElement("buch", omNs);
			OMElement autor = fac.createOMElement("autor", omNs);
			OMElement name1 = fac.createOMElement("name", omNs);
			OMElement name2 = fac.createOMElement("name", omNs);
			OMElement title = fac.createOMElement("title", omNs);

			name1.addChild(fac.createOMText("Hans"));
			name2.addChild(fac.createOMText("Meier"));
			title.addChild(fac.createOMText("Ich und Ich - vom selben Stern"));

			autor.addChild(name1);
			autor.addChild(name2);
			buch.addChild(autor);
			buch.addChild(title);
			add.addChild(buch);

			Options options = new Options();
			options.setTo(targetEPR);
			options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
			options.setAction("http://127.0.0.1:8080/axis2/services/additionService");

			ServiceClient sender = new ServiceClient();
			sender.setOptions(options);

			// Senden des Requests
			System.out.println("vor senden: " + new java.sql.Timestamp(new java.util.Date().getTime()));
			OMElement result = sender.sendReceive(add);
			System.out.println("nach senden: " + new java.sql.Timestamp(new java.util.Date().getTime()));

			StringWriter writer = new StringWriter();
			result.serialize(XMLOutputFactory.newInstance().createXMLStreamWriter(writer));
			writer.flush();
			//System.out.println(writer.toString());

		} catch (Exception e) {

		}
		System.out.println("Scriptende: " + new java.sql.Timestamp(new java.util.Date().getTime()));
	}
}


Java:
// SERVER - Die Fachkonzeptklasse für das book lasse ich mal weg, tut wenig zur Sache.
// Das Rückgabeobjekt von getXML() ist ähnlich aufgebaut wie das im Client.


import java.util.Iterator;
import java.util.Vector;
import org.apache.axiom.om.*;

public class addition {
	public OMElement adde(OMElement param0) {
		
		java.util.Date heutes = new java.util.Date();
		System.out.println(new java.sql.Timestamp(heutes.getTime()));
		
		Iterator pbooks 		= ((OMElement)param0).getChildren();
		Iterator pbookdetail	= ((OMElement)pbooks.next()).getChildren();
		Iterator pautoren		= ((OMElement)pbookdetail.next()).getChildren();


		Vector v = new Vector();
		v.add(((OMElement)pautoren.next()).getText());
		v.add(((OMElement)pautoren.next()).getText());
		
		String titel = ((OMElement)pbookdetail.next()).getText();
		
		Book book = new Book(titel, v);
		
		
		
		return book.getXML();	
	}
}
 
Zuletzt bearbeitet:
Zurück