Hi,
ich habe inzwischen mal ein bisschen mit den Webservices gearbeitet.
Folgende Situation:
Ich habe im Java Project die nötigen Axis Jars importiert. Dort gibt es nun auch eine Klasse von mir, mit einer static Methode die den Webservice Call übernimmt ( in der Methode steht etwas sowas ).
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName( method );
call.addParameter("op1", XMLType.XSD_INT, ParameterMode.PARAM_MODE_IN);
call.addParameter("op2", XMLType.XSD_INT, ParameterMode.PARAM_MODE_IN);
call.setReturnType(XMLType.XSD_INT);
call.invoke( new Object [] { i1, i2 });
In der XPage wird dann diese Methode gerufen:
importPackage(myPackage)
var ws = new Webservice();
var result = ws.callWebserivce(param1,param2 .... )
Das ganze funktioniert ganz gut.
Jetzt will ich aber die Performance des Ganzen etwas verbessern:
Ich habe mal gemessen wo die meiste Zeit verloren geht.
Beim ersten Aufruf der Methode ws.callWebserivce(param1,param2 .... ) auf einer XPage kann es zwischen 2 - 4 s dauern bis zu der Stelle im Java Code
bevor der eigentliche Webservice gerufen (call.invoke(...)) wird.
Der eigentliche Webservice ist also noch ausgeschlossen und es dauert schon zwischen 2-4 s.
Und das ganze bei jedem Neuladen wieder
.
Ich schätze mal das es daran liegt das die importieren packages im java, jedes mal frisch aus den jars geladen werden müssen.
So jetzt meine eigentliche Frage was kann ich machen ?
Meine Optionen:
1. Man kann in die notes.ini bei den javauserclasses jars laden, die beim Starten des Domino automatisch mitgeladen werden. Diese sind dann in Agenten und Java Librays verfügbar. Soweit ich weiß läuft mein Code aber in der HTTP JVM des Domino und somit sind die javauserclasses auch nicht erreichbar? Stimmt das soweit? (Nebenbei laufen da zwei verschiedene JVMs ?)
2.Kann ich irgendwo die HTTP JVM dazu bringen die jars beim starten zu laden über irgendein Konfiguration oder so ?
3.Ich könnte mir auch ein echtes Control (wie in der Extension Libray) entwickeln. Hab ich auch schon versucht doch ich bin daran gescheitert das die jars die ich für den axis webservice call hinzugefügt habe. Dabei konnte ich festellen das ein Großteil der jars sowieso schon in einem solchen Control verfügbar sind.
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName( method );
call.addParameter("op1", XMLType.XSD_INT, ParameterMode.PARAM_MODE_IN);
call.addParameter("op2", XMLType.XSD_INT, ParameterMode.PARAM_MODE_IN);
call.setReturnType(XMLType.XSD_INT);
sowas steht für den Webservice Call in dem Control prinzipell ist das alles kein Problem.
Aber:
XMLType.XSD_INT
ParameterMode.PARAM_MODE_IN
Kann ich leider nicht nutzen, im Eclipse wird mir angezeigt " Access restriction: ParameterMode is not accessible due to restriction on required library"
Hat jemand dazu eine Idee ?
Oder hat jemand noch einen anderen Vorschlage was ich machen könnte ?
Danke im Vorraus
Mit freundlichen Grüßen
Markus