Re: SOAP-over-UDP

Eric VERGNAUD <[email protected]> Tue, 31 May 2005 13:58:18 +0200
Newsgroups gmane.text.xml.soap.user
Message-ID <[email protected]>
It depends on what you mean by continuous. a 16 bytes packet every 5  
seconds certainly won't.

If you need a higher reactivity, you can do the following:
  - have the client broadcast a message on a port
  - have the server listen on that port
  - when the server receives a connection, have it broadcast as  
suggested in my previous email

Le 31 mai 05 à 13:17, Francesco Munari a écrit :

> But there isn't the risk of flooding the LAN with these continuous
> broadcast messages?
>
> 2005/5/31, Eric VERGNAUD <[email protected]>:
>
>> Have your server regularly broadcast its address on a port.
>> Have your client act as a server on startup and listen on the same  
>> port.
>> When the real server broadcasts its address, the client will receive
>> a connection request.
>> One you have the server address, ask the server for the information
>> you need (what you call the context).
>>
>> Le 31 mai 05 à 11:41, Francesco Munari a écrit :
>>
>>
>>> Hi, Eric.
>>>
>>> Ok, but how can I do this? I think I'm a newbie in this kind of
>>> operation, sorry. How can I look to a port of servers in a LAN  
>>> without
>>> knowing their IP? And in this way may I keep the context- 
>>> awareness of
>>> the communication?
>>>
>>> thank you for you reply
>>>
>>> Cheers
>>>
>>> francesco
>>>
>>> 2005/5/31, Eric VERGNAUD <[email protected]>:
>>>
>>>
>>>> I'm afraid that is a very verbose way of doing things. The typical
>>>> way to do this is determine a port, have your server broadcast  
>>>> its IP
>>>> address on that port, and your clients look on that port to grab  
>>>> the
>>>> address.
>>>>
>>>> Once the address is found, you can safely interact with the server
>>>> using SOAP over HTTP.
>>>>
>>>> Le 30 mai 05 à 22:19, Francesco Munari a écrit :
>>>>
>>>>
>>>>
>>>>> I'm alredy using UDDI4j. The idea is that I don't know where the
>>>>> UDDI
>>>>> registry can be in the LAN.
>>>>> I assume that the client knows only two things:
>>>>> 1) the network (of course)
>>>>> 2) a "search key" for a particular tipe of service
>>>>>
>>>>> and that's all.
>>>>> The client should send a broadcast SOAP (or XML-RPC) request
>>>>> containing the search method to call on the server with the "key"
>>>>> passed as a parameter and somewhere into the LAN should be a  
>>>>> server
>>>>> (or more) with its private UDDI registry that should reply with a
>>>>> response containing the result of the invoking of the method
>>>>> contained
>>>>> in the sender's RPC request. The response should contain just the
>>>>> URL
>>>>> of the WSDL file related to the service found.
>>>>>
>>>>> The need of the broadcast message is that the client don't know
>>>>> where
>>>>> (or if) there could be any UDDI registry in the network. With this
>>>>> framework a client can change network configuration (for example,
>>>>> going from a floor to another with a Palm in a wireless LAN) and,
>>>>> after leaving the service provided in the first network, find  
>>>>> anothe
>>>>> one similar on the other network only by pressing the button
>>>>> "Refresh"
>>>>> :)
>>>>>
>>>>> Francesco
>>>>>
>>>>> 2005/5/30, Martin Gainty <[email protected]>:
>>>>>
>>>>>
>>>>>
>>>>>> The side effect of a broadcast without authentication is
>>>>>> flooding the
>>>>>> network with unwanted disovery packets
>>>>>> I guess this is OK if you're utilising a high datarate
>>>>>> transmission i guess
>>>>>>
>>>>>> In your case your SOAP Request should look like
>>>>>>
>>>>>> <?xml version="1.0"?>
>>>>>> <SOAP-ENV:Envelope
>>>>>> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" >
>>>>>>  <SOAP-ENV:Body>
>>>>>>    <getTest>
>>>>>>      <Test>Test</Test>
>>>>>>    </getTest>
>>>>>>  </SOAP-ENV:Body>
>>>>>> </SOAP-ENV:Envelope>
>>>>>>
>>>>>> If you want to discover a "SOAP based" web-service based on some
>>>>>> characteristic such as Business Service Category why not use
>>>>>> UDDI4J?
>>>>>> Take a look at
>>>>>> http://sourceforge.net/projects/uddi4j
>>>>>>
>>>>>> Martin-
>>>>>>
>>>>>> ----- Original Message -----
>>>>>> From: "Francesco Munari" <[email protected]>
>>>>>> To: "Martin Gainty" <[email protected]>
>>>>>> Cc: <[email protected]>
>>>>>> Sent: Monday, May 30, 2005 12:44 PM
>>>>>> Subject: Re: SOAP-over-UDP
>>>>>>
>>>>>> Martins,
>>>>>>
>>>>>> It is for this reason that I'd like to broadcast a SOAP request
>>>>>> instead of a simple XML-RPC message. The goal of my framework  
>>>>>> is to
>>>>>> keep the "context awareness" offered by XML language.
>>>>>> If you are sure that there is no way to send a broadcast SOAP
>>>>>> request,
>>>>>> the last solution, I think, it could be XML-RPC.
>>>>>>
>>>>>> So, two questions:
>>>>>>
>>>>>> 1) are you sure ther's no way to send a broadcast SOAP request?
>>>>>> 2) In order to send a broadcast XML-RPC message I've to cerate a
>>>>>> StringWriter like this (for example)?
>>>>>>
>>>>>> <?xml version="1.0" ?>
>>>>>>   <methodCall>
>>>>>>       <methodName>getTest</methodName>
>>>>>>       <params>
>>>>>>           <param>
>>>>>>               <value>
>>>>>>                  <string>Test</string>
>>>>>>               </value>
>>>>>>           </param>
>>>>>>       </params>
>>>>>> </methodCall>
>>>>>>
>>>>>> Thank's Martin.
>>>>>>
>>>>>> Francesco
>>>>>>
>>>>>> 2005/5/30, Martin Gainty <[email protected]>:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Francesco-
>>>>>>> You can Broadcast XML-RPC assuming you dont mind flooding your
>>>>>>> network
>>>>>>> The question is can you confine your application to using the
>>>>>>> more basic
>>>>>>> datatypes supported by XML-RPC
>>>>>>> vs implementing SOAP features (user-defined datatypes, namespace
>>>>>>> URI)?
>>>>>>> Anyone else?
>>>>>>> Martin-
>>>>>>> ----- Original Message -----
>>>>>>> From: "Francesco Munari" <[email protected]>
>>>>>>> To: "Martin Gainty" <[email protected]>
>>>>>>> Cc: <[email protected]>
>>>>>>> Sent: Monday, May 30, 2005 6:45 AM
>>>>>>> Subject: Re: SOAP-over-UDP
>>>>>>>
>>>>>>> Grazie! :)
>>>>>>>
>>>>>>> Could someone tell me if a simple XML-RPC message may be sent  
>>>>>>> to a
>>>>>>> broadcast address? A simple message with the medthod to be
>>>>>>> invoked. In
>>>>>>> this way I should be able to send a broadcast XML-RPC request
>>>>>>> with the
>>>>>>> appropriate UDDI inquiry method; a server (containing a UDDI
>>>>>>> registry)
>>>>>>> should receive it, invoke that method and send a reply in XML
>>>>>>> format
>>>>>>> to the sender.
>>>>>>>
>>>>>>> It could be a good idea?
>>>>>>>
>>>>>>> thank you again!
>>>>>>>
>>>>>>> Francesco
>>>>>>>
>>>>>>> 2005/5/29, Martin Gainty <[email protected]>:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> benvenuto!
>>>>>>>> Martin-
>>>>>>>>
>>>>>>>> ----- Original Message -----
>>>>>>>> From: "Francesco Munari" <[email protected]>
>>>>>>>> To: <[email protected]>
>>>>>>>> Sent: Saturday, May 28, 2005 5:41 PM
>>>>>>>> Subject: Re: SOAP-over-UDP
>>>>>>>>
>>>>>>>> Thank you all for your very quick reply!
>>>>>>>>
>>>>>>>> I've heard about this SOAP-over-UDP spec
>>>>>>>> (http://msdn.microsoft.com/library/default.asp?url=/library/en-
>>>>>>>> us/dnglobspec/html/soap-over-udp.asp).
>>>>>>>> So, Martin, you say that it could not be a solution? Perhaps it
>>>>>>>> should
>>>>>>>> be an idea using Mark's solution (with DNS).
>>>>>>>>
>>>>>>>> I thought to resolve the problem putting a SOAP envelope into
>>>>>>>> a UDP
>>>>>>>> datagram, send the datagram to a broadcast ip and that's all
>>>>>>>> folks...but I don't know how and, as you, Martins, wrote, I
>>>>>>>> was not
>>>>>>>> able to find anybody who has implemented this yet.
>>>>>>>>
>>>>>>>> Can you suggest me another solutions?
>>>>>>>>
>>>>>>>> Thank you very much again!!
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>>
>>>>>>>> Francesco
>>>>>>>>
>>>>>>>> 2005/5/28, Martin Gainty <[email protected]>:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> Mark/Francesco
>>>>>>>>> I would caution on use of UDP as the SOAP Portocols (e.g.  
>>>>>>>>> HTTP)
>>>>>>>>> is/are
>>>>>>>>> decidely not UDP but instead a connection-oriented TCP
>>>>>>>>> To date I have not seen UDP Ports used for SOAP transmission
>>>>>>>>> although
>>>>>>>>> since
>>>>>>>>> there is no requirement for verifiable connection and or
>>>>>>>>> handshakes
>>>>>>>>> I would venture to guess UDP is available as the transmission
>>>>>>>>> medium
>>>>>>>>> but
>>>>>>>>> I
>>>>>>>>> have not seen any UDP Ports used for SOAP thus far
>>>>>>>>> Anyone else ???
>>>>>>>>> Ciao-
>>>>>>>>> Martin-
>>>>>>>>>
>>>>>>>>> ----- Original Message -----
>>>>>>>>> From: "mdonaghue" <[email protected]>
>>>>>>>>> To: <[email protected]>; "'Francesco Munari'"
>>>>>>>>> <[email protected]>
>>>>>>>>> Sent: Saturday, May 28, 2005 3:14 PM
>>>>>>>>> Subject: RE: SOAP-over-UDP
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hi Franceso,
>>>>>>>>>>
>>>>>>>>>> I've worked briefly with the apache soap api, not that
>>>>>>>>>> familiar with
>>>>>>>>>> it.
>>>>>>>>>> Typically a soap message is sent to a single soap server
>>>>>>>>>> address,
>>>>>>>>>> which
>>>>>>>>>> is
>>>>>>>>>> specified by a url or an ip address, as well as a port. So  
>>>>>>>>>> your
>>>>>>>>>> server
>>>>>>>>>> address on the LAN might be something like  
>>>>>>>>>> 192.168.100.2:8080.
>>>>>>>>>> (I'm
>>>>>>>>>> not
>>>>>>>>>> sure
>>>>>>>>>> what the port is for UDDI, so just using standard TomCat Web
>>>>>>>>>> Server
>>>>>>>>>> port).
>>>>>>>>>>
>>>>>>>>>> IIRC, you there's a point at which you specify that  
>>>>>>>>>> address in
>>>>>>>>>> the
>>>>>>>>>> setup
>>>>>>>>>> for
>>>>>>>>>> your soap call. One thing you could try is to change the
>>>>>>>>>> address to
>>>>>>>>>> the
>>>>>>>>>> subnet's broadcast address, 255.255.255.0:8080, assuming a
>>>>>>>>>> class c
>>>>>>>>>> network
>>>>>>>>>> where the first 3 quads specify the network portion of the
>>>>>>>>>> submask.
>>>>>>>>>>
>>>>>>>>>> However, this may not a scalable solution, since the  
>>>>>>>>>> broadcast
>>>>>>>>>> wouldn't
>>>>>>>>>> carry beyond the physical subnet on which you are located.
>>>>>>>>>> Using
>>>>>>>>>> UDDI
>>>>>>>>>> to
>>>>>>>>>> discover services is one thing, but dynamically discovering
>>>>>>>>>> UDDI
>>>>>>>>>> servers
>>>>>>>>>> is
>>>>>>>>>> obviously a different problem. It also doesn't address the
>>>>>>>>>> issue of
>>>>>>>>>> more
>>>>>>>>>> than one UDDI server running on the same subnet.
>>>>>>>>>>
>>>>>>>>>> A more generalized solution might involve a distributed ip
>>>>>>>>>> lookup
>>>>>>>>>> service,
>>>>>>>>>> namely DNS. For example when DNS looks up the ip address of
>>>>>>>>>> Yahoo.com,
>>>>>>>>>> at
>>>>>>>>>> some point the actual ip address that serves the request is
>>>>>>>>>> dynamically
>>>>>>>>>> assigned to one of dozens (or hundreds) of servers based on a
>>>>>>>>>> scheduling
>>>>>>>>>> scheme.  You could locally enable DNS lookup, and create an
>>>>>>>>>> entry
>>>>>>>>>> based
>>>>>>>>>> on
>>>>>>>>>> some url like "myuddpsever.com", and give it your local UDDI
>>>>>>>>>> server's
>>>>>>>>>> ip
>>>>>>>>>> address, and the rest would be handled within the network.  
>>>>>>>>>> The
>>>>>>>>>> advantage
>>>>>>>>>> to
>>>>>>>>>> this is your UDDP server could be anywhere and your message
>>>>>>>>>> would
>>>>>>>>>> still
>>>>>>>>>> reach it.
>>>>>>>>>>
>>>>>>>>>> hth,
>>>>>>>>>> Mark
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -----Original Message-----
>>>>>>>>>> From: Francesco Munari [mailto:[email protected]]
>>>>>>>>>> Sent: Saturday, May 28, 2005 4:58 AM
>>>>>>>>>> To: [email protected]
>>>>>>>>>> Subject: SOAP-over-UDP
>>>>>>>>>>
>>>>>>>>>> Hi, I'm desperate!
>>>>>>>>>> I'm trying to find out how to send a broadcast SOAP request
>>>>>>>>>> to a
>>>>>>>>>> UDDI
>>>>>>>>>> registry in a LAN, but I'm not able to do this. I've looked
>>>>>>>>>> for some
>>>>>>>>>> example but I've not found anithing.
>>>>>>>>>>
>>>>>>>>>> Please...could anybody help me?
>>>>>>>>>> I'm making a thesis for the University of Florence (Italy)
>>>>>>>>>> and I
>>>>>>>>>> have
>>>>>>>>>> to discovery dinamically web service published in some UDDI
>>>>>>>>>> registry
>>>>>>>>>> somewhere in a LAN. I have to send a broadcast SOAP  
>>>>>>>>>> request to
>>>>>>>>>> these
>>>>>>>>>> UDDI registry (as I wrote few lines above).
>>>>>>>>>> Of course I'm using Java language.
>>>>>>>>>>
>>>>>>>>>> Thank you very much for your help...I'm in a great
>>>>>>>>>> hurry...thanks
>>>>>>>>>> very
>>>>>>>>>> very much to everyone could help me!
>>>>>>>>>>
>>>>>>>>>> Best reguards,
>>>>>>>>>>
>>>>>>>>>> Francesco
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>