WSDL location

Author: roger.wallin@abilita.fi (rogerw)

Hi,

"WSDL files are normally located on the Web, so the ImportFile is typically a URL, since WSDL files are normally located on the Web/ For example,
/sti /mwr=ws http://www.MySite.com/MyWebService/MyWebService.WSDL
However, at run time the file location is checked first time when a session starts. For performance reasons, it might be preferable to download the WSDL from the Web to a local file before importing it so this runtime check is local instead of remote."
This can be used e.g. to change the ip.

At development-time you can change the location of the WSDL-file in the "Signature -> Implementation ... -> Soap properties -> Define SOAP Properties -> URL of the WSDL". Isn't there any chance to define the file location, so that it would be possible to dynamically change it at installation time? 

Regards RogerW.

PS. The nearest I have come a dynamic location is to leave out the url, just writing the WSDL-name  "URL of the WSDL = MyWebService.WSDL". Then at run time the  WSDL check is done on your working directory. Because of the installation to a lot of different customers with different file-server mappings, I would like to be able to set the location to any directory-location without recompilation of the signature. I have tried to redirect *.wsdl in the asn-file, but without success. 

15 Comments

  1. I've got the same question, and got following answer from cpw. To be honest, I didn't test it yet...

    -

    store the wsdl  in a local XML-file.   (e.g.: C:\appl\wsdl )

    - import it  ( /sti ....)

    - compile the signature

    - in runtime, put the wsdl in (the same) local place (!)   ( C:\appl\wsdl ...)

    - change within the wsdl-file the targetNamespace ( + xmlns:tns Element) to the server where the Service is placed.

    So, you decide where the service is placed at least in the wsdl-File itself.

     

    Wolfgang

     

     

     



    Author: gypsilon (wva@gypsilon.de)
  2. Hi Wolfgang,

    yes one can use the wsdl to change the address (ip, address of server), but my problem is how to set the path C:\APPL\WSDL\  in such a way at development-time that you can change it without recompiling the signature.
    Something like  "URL of the WSDL = usys:MyWebService.wsdl" (which doesn't work) before you compile.

    Regards RogerW.


    Author: rogerw (roger.wallin@abilita.fi)
  3. Hi Roger,

    AFAIK, this can not be done w/o recompile the signature.

    Uli


    Author: ulrich-merkel (ulrichmerkel@web.de)
  4. Hi,

    Can't recompile the signature for every customer, because of their varying fileserver mapppings.
    Then I just have to dump the wsdl to the working directory of every user as the application/form is started, ie. fetching it from a predefined location set by a $logicals (or fetching the wsdl-text from database) and dumping it to the working directory of the client. Seems a bit messy. However it seems to work this way by leaving out the path of the wsdl from the signature. Seems to work with a late wsdl-check although it is said that at run time the first check is done at application start?

    As it doesn't matter to Uniface where the wsdl is located for checking, It would be better that the wsdl could be compiled into the code, as a change would probably yet need a change from you and a recompilation, but of course then with the possibility to dynamically change some values eg. the endpoint. This is how it's done in most programming languages.
    But I wouldn't criticize the Uniface way if you dynamically could stear the location of the first wsdl-check.

    Regards RogerW.
     


    Author: rogerw (roger.wallin@abilita.fi)
  5. Hi,
    
    Something happens:
    
    Patch E102 for Uniface 9.5.
    BUG 29496:  Override the wsdl location in a soap signature in the assignment file
    
    Description:
     Currently the only way to specify the location of a WSDL file is in the soap
     signature created by a WSDL import, or by manually editing the signature. A
     better deployment option is to specify it on the assignment file.
    
    Solution:
    
     A new SOAP connector option has been added so that you can specify the location
     of a WSDL file in the assignment file. This location overrides the location
     recorded in the SOAP signature (whether created by WSDL import or edited
     manually).
    
     wsdl = URL | File
    
     For example:
     [DRIVER_SETTINGS]
     ; Specify a local location
     usys$sop_params=wsdl=D:\u9\uniface\wsdl\soapdlw.wsdl
    
     [SERVICES_EXEC]
     ; Specify a URL for a specific web service called soapservice;
     ; this overrides the location specified under [DRIVER_SETTINGS].
     soapservice=$sop:soapservice wsdl=http://host/uniface/services/soapdlw.wsdl
    

    Regards RogerW.
     


    Author: rogerw (roger.wallin@abilita.fi)
  6. Hi Roger,

    thanks a lot for keeping the community informed.

    I added your post to the wishlist as a comment.

    Uli


    Author: ulrich-merkel (ulrichmerkel@web.de)
  7. My configuration is all on the server (project, runtime, ecc) like this

    server
    +-----app
          +----asn
          +----ini
          +----project
          +----runtime
          +----wsdl
          +----etc.....

    and the client have only a shortcut like this

    \\server\app\runtime\bin\uniface.exe /asn=\\server\app\asn\file.asn /ini=\\server\app\ini\file.ini

    and the startup folder is the project on a remote server

    \\server\app\project

    So I create as the same level the project the wsdl folder where I put the wsdl files.
    I set this in the signature of the wsdl
    ..\wsdl\file.wsdl
    In this way, you just change the files in the folder of the server with the new address.
    At the level of the client there is nothing, everything is on the server.

    I hope it is useful

    Marco


    Author: Marco (marco.aquino@dedalus.eu)
  8. Hi,

    I don't have time to test it today, but did it really work using "..\"   in the signature?
    However, one problem for us is that usually the users of the same organisation have their working directory (startup folder)
    locally "C:\Uniface" or "F:\" where F is "\\server\home\Mary".

    Regards RogerW.
     


    Author: rogerw (roger.wallin@abilita.fi)
  9. We use in signature that notation (..\wsdl\file.wsdl) and working properly. In addition, all our installations are startup folder with the remote folder (\\server\app\project). Marco


    Author: Marco (marco.aquino@dedalus.eu)
  10. Hi,

    having started to use Uniface95, I begun to think about the WSDL location again.
    In Uniface there is a signature per service and the service contains many operations. The service and it's operations are described in the WSDL of the service and of coourse in the Uniface signature.

    What about having several services (signatures) each with their own wsdl. How does Uniface connect a signature with the wsdl in the ASN-file and is it possible to specify several WSDL-files?

    I have to admit that I haven't tested anything yet. But there is probably not yet a manual for this and the syntax of the settings aren't that self-explaining. Is it possible to put several wsdl-files in the ASN-file and does Uniface connect the signature name to the wsdl-name or how is this supposed to work?

    Has anyone tested, or has the planning of this feature been too limited? 

    Looking some further on the example, perhaps you can put one row for each service in the [SERVICES_EXEC], but should the [DRIVER_SETTINGS] just contain a directory-location, not a file? 

    Regards RogerW.

     


    Author: rogerw (roger.wallin@abilita.fi)
  11. Hi Roger,

    in the uniface 9.5 helpfiles, CPWR has added a "Send feedback about this topic to Compuware."

    So whenever you think the help should be enhanced or some example is not clear enough,

    just give a very nice lady your ideas, questions, ... and have your share in building a better help.

     

    I had my experiences with $ude export and the question "how to flush an open Export file".

    The info was added as part of the E103:

    Example: Flushing Export Files

    In the following example, all models and components are exported, and lflush is used to complete the transaction and close the file:

    vOut = $ude("export", "model", "*", "D:\myexports\myexport.xml", "keepopen=true")
    vOut = $ude("export", "component", "*", "D:\myexports\myexport.xml", "keepopen=true;append=true")
    lflush "myexport.xml"

    Author: ulrich-merkel (ulrichmerkel@web.de)
  12. Hi,

    I tested and found out that [SERVICES_EXEC] can be used both with File-location and URL-location, which should be enough.
    [SERVICES_EXEC]
    myservice=$sop:myservice wsdl=c:\test\myservice.wsdl
    ;myservice=$sop:myservice wsdl=http://testserver/Myserver/myservice.svc?wsdl


    But I don't know when and how the
    [DRIVER_SETTINGS]
    usys$sop_params=wsdl=c:\temp\myservice.wsdl

    should be used. It works and the wsdl is found, however I don't know how it's connected to the right signature or if one can use it for several signatures?
    Perhaps the "Service Local Name" of the SOAP-properties should be the same as the WSDL file-name.

    Regards RogerW.

    PS. This is a nice improvement! However if Compuware/Uniface sometimes would like to improve this they could make it possible to dynamically in code change the endpoint of a service, ie. making it possible from the same client-session to use the same service installed at different addresses.
     


    Author: rogerw (roger.wallin@abilita.fi)
  13. Hello,

    I used the below command to import the wsdl for testing purpose. Is that correct?

    /sti /mwr=ws I:\projects\32321 business\VerlianzKalcService.wsdl

     

    After running in switch, where can I find the signature of this wsdl? Where does the signature located?

    How can I edit the signature to change the service name?

     

    I have defined the below in asn file.

    [DRIVER_SETTINGS]
    ORA = U6.4
    MSS = U4.0
    SOL = U3.3
    SOP U2.0

     

    Thanks

    Satheesh.B


    Author: Satheesh (satheesh.balu.m@gmail.com)
  14. Hi,

    you will find the signatures under "Pulldown -> Editors -> Signatures". You should find your web-service signature among the other signatures. Having found the signature it will be easier to proceed. :)

    Regards RogerW.


    Author: rogerw (roger.wallin@abilita.fi)
  15. Thanks a lot.

     

    I fount it  :-)

     

    Regards

    Satheesh


    Author: Satheesh (satheesh.balu.m@gmail.com)