axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tom Oinn <...@ebi.ac.uk>
Subject Re: Connection reset. HELP!
Date Tue, 15 Nov 2005 14:00:25 GMT
German Sakaryan wrote:
> Thank you Tom.
> 
> Do you mean that proxy closes a connection between client and proxy when 
> a timeout is expired?

It could potentially be either but is most likely to be both. It does 
this to prevent requests 'hanging' and consuming resources within the 
proxy, effectively a thread leakage problem.

In general it's not advisable to hold a web service call open for longer 
than you can avoid, you might be able to get away with it but you're 
very much at the mercy of the somewhat unpredictable set of proxies, NAT 
layers etc inbetween your clients and the service.

The problem then is that web services are traditionally stateles with no 
  way of correlating several distinct communications into one logical 
operation (i.e. create, submit, poll... get result, destroy). There are 
various ways around this. Obviously you can implement it entirely 
yourself, it's not too hard, or there are more complex 'standards' such 
as WSRF (Web Service Resource Framework), LSAE (Life Sciences Analysis 
Engine, not limited to the life sciences but less widespread) and the 
various Globus toolkit based systems, all of which are rather complex.

It's possible you can get away with a very simple solution - we have a 
service at the EBI (www.ebi.ac.uk) which works on the 'create, 
manipulate, inspect, destroy' pattern by having the create method return 
a string ID and all subsequent methods consume this ID as part of the 
request. Internally this then uses a singleton Map to translate this ID 
to an instance of a bean class which holds the state with the operations 
within the service all having a 'lookup state, get state bean, do stuff' 
form. This service, incidentally, has been running for 3 years with next 
to no downtime based on the .jws deployment mechanism (I'm not sure I'd 
actually suggest using this but hey, it's worked for us)

The WSDL for this service is at 
http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws?wsdl, I've 
attached a generated diagrammatic view of how it would be called. In 
this case the service is stateful because we want to be able to 
manipulate the state explicitly but it would also work around the 
timeouts you describe.

HTH,

Tom

Mime
View raw message