Carsten,

In fact, there are several ways to handle your situation, but I guess almost none of them is as simple as adding some lines to your client code. The ones I know are:

- Make the host address configurable. That is, read the host address from a configuration file. I know this is not what you are asking for, but it is probably the only easy workaround to your problem. In fact, I think it will be the only one that will work if you want to test your client application from the same host, and manually select the adapter to use.

- You may use DNS to provide a common name to your server, and access it through host name, instead of host address. This probably means some work to get your client domain name, in order to build the complete host name in each subnetwork, or be sure that using the host name without a domain name will return you the correct host address in all cases.

- In a more complicated fashion, you could decide to convert your service in a "standard" service, and register it into your DNS servers. DNS protocol allows to register the addresses for "standard" services, providing a simplistic discovery service, and allowing you to ask for a service name, instead of a host name. AFAIK, this option is not usual, but it should work. I am not sure, but you may probably need to use Jakarta commons-net library to perform such kind of queries to your DNS server.

- You can delegate the problem to a well-known UDDI server. Anyway, if you use TCP/IP, this will just move your problem from one host to another, as this UDDI server/s will probably also have different addresses in each sub-network.

- You might use some UDP based discovery service. The idea in this case would be to send a broadcast message, and receive the appropriate address from some arbitrary point on your network. If you implement such a service in your own server, you will probably be able to get the host address from the response message meta-data itself. There are some standard libraries for achieving this out there, or you could try to implement your own, as it is plenty of examples on Google ;-)

Hope this helps,
Rodrigo


Carsten Schmidt wrote:
Hi Alain,
thanks for your answer, but it seems as if the NetworkInterface-class
would just be able to give you information about the interfaces.

For me, it is important to tell the program which Interface to use,
because the webserver I'm working on got different IP's in different
sub-networks.

So, I am looking for a method like setHostAdress(foo). Maybe this is
more a part of java than axis, but the Axis-Call-class seems to handle
the whole hardware/network-stuff on it's own.

I can't believe that there is no smart way to handle this.

Carsten


Am Montag, den 15.05.2006, 16:28 +0200 schrieb Pannetier Alain:
Hi Carsten,

Here is an example I use to know whether I'm in the office or at
home : try { Enumeration myInterfaces = NetworkInterface.getNetworkInterfaces(); interfaceEnum: while ( myInterfaces.hasMoreElements()) { NetworkInterface netInterf = (NetworkInterface) myInterfaces.nextElement(); Enumeration addresses = netInterf.getInetAddresses() ; while (addresses.hasMoreElements()) { InetAddress address = (InetAddress) addresses.nextElement(); if ( address.getHostAddress().startsWith( OFFICE_PREFIX ) ) { isAtTheOffice = true ; break interfaceEnum ; } } } } catch (SocketException e) { e.printStackTrace(); } ...

It shows how to loop on all your interfaces and select one (according
to its address prefix...).

That's probably close to what your're after.

Alain


-----Original Message----- From: Schmidt, Carsten -81.01- [mailto:[EMAIL PROTECTED] Sent: 15 May 2006 16:17 To: [email protected] Subject: RE: Select the output-network-interface to call an
axis-webservice

Hi, did really no one every had a problem like that? This problem can not be so special, can it?

But maybe you know another mailinglist or a book, which might be able
to help me?

It is really important for me to find a solution for that, and
meanwhile I ain't got no more idea where to look at.

Regards,

Carsten

Hi everybody, maybe this question has already been answered a thousend times, but
I
haven't found anything about it. I got a server with a few different network adapters. Each of them
with
a different IP. Now I'm searching for a way to call a webservice by choosing exacly one of those adapters (which is not the default
one).
How can I do than? java.net.NetworkInterface shows me what is available, but where can
it
set what to use? org.apache.axis.client.Call? org.apache.axis.client.Service? Can anybody help me? Carsten







--
-------------------------------------------------------------------
GRIDSYSTEMS                    Rodrigo Ruiz Aguayo
Parc Bit - Son Espanyol
07120 Palma de Mallorca        mailto:[EMAIL PROTECTED]
Baleares - EspaƱa              Tel:+34-971435085 Fax:+34-971435082
http://www.gridsystems.com
-------------------------------------------------------------------


--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.392 / Virus Database: 268.5.6/339 - Release Date: 14/05/2006

Reply via email to