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