axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David.Ostrov...@dvg.de
Subject WSDL2Java: generated client stub and performance issues
Date Tue, 02 Jul 2002 12:50:12 GMT
Hello.

Two performance issues:

1. I just wonder why in generated stub code the call objects aren't cached?
     I.e. the follow code take place during every (even subsequently)
function call:

// In function  private org.apache.axis.client.Call createCall() throws
java.rmi.RemoteException {
            org.apache.axis.client.Call call =
                    (org.apache.axis.client.Call) super.service.createCall
();
            if (super.maintainSessionSet) {
                call.setMaintainSession(super.maintainSession);
            }
            if (super.cachedUsername != null) {
                call.setUsername(super.cachedUsername);
            }
            if (super.cachedPassword != null) {
                call.setPassword(super.cachedPassword);
            }
            if (super.cachedEndpoint != null) {
                call.setTargetEndpointAddress(super.cachedEndpoint);
            }
            if (super.cachedTimeout != null) {
                call.setTimeout(super.cachedTimeout);
            }
            java.util.Enumeration keys = super.cachedProperties.keys();
            while (keys.hasMoreElements()) {
                String key = (String) keys.nextElement();
                if(call.isPropertySupported(key))
                    call.setProperty(key, super.cachedProperties.get(key));
                else
                    call.setScopedProperty(key,
super.cachedProperties.get(key));
            }

// In function public Hugo foo(...)
        javax.xml.namespace.QName p0QName = new javax.xml.namespace.QName
("", "bar");
        call.addParameter(p0QName, new javax.xml.namespace.QName
("http://schemas.xmlsoap.org/soap/encoding/", "string"),
java.lang.String.class, javax.xml.rpc.ParameterMode.IN);
        call.setReturnType(new javax.xml.namespace.QName
("urn:HugoNameSpace", "Hugo"));
        call.setUseSOAPAction(true);
        call.setSOAPActionURI("");
        call.setOperationStyle("rpc");
        call.setOperationName(new javax.xml.namespace.QName
("urn:FooNamespace", "foo"));

One could simple cache the call object(s) (in the same way as
serializer/deserializer) in Hashtable or
in Array (if for each method an unique index in the array is assigned).

2. Type registration take place not untill the first call is made. That's
why the performance of first call isn't ideal.
(In my case first call= 5 second, second call 2.5 second)

     I would like to initialize all the needed stuf in the startup phase of
the client.
     To achive it now, I have define a dummy method and call it, because
the function createCall is
     private and cannot be called directly from the client.

Any comments?

Thank you.
David Ostrovsky


Mime
View raw message