Pawel Sztromwasser wrote:
> Hello BASE developers,
> 
> We have been recently trying to enable retrieving some data from
> BASE2 installation directly into our 'home made' analysis tool. We
> use webservices for that and have to say that you are doing a great
> job.

Thanks.

> We are really looking forward to use them more extensively.
> 
> Recently, when I started testing the tool not only within the local 
> network I noticed that the webservice client does not switch off 
> chunking. It results in attached exception cascade. Chunking is on by
>  default in axis2 and some servers (i.e. our gateway to BASE which 
> apparently uses HTTP1.0 and not 1.1) have problems with it. The
> remedy is to use
> 
> options.setProperty(HTTPConstants.CHUNKED, false);
> 
> in net.sf.basedb.ws.client.AbstractRPCClient.getService(). I don't
> know what are the drawbacks of it, but that was the only way I could
> run the services in our current setup (BASE2.6 accessible by
> proxypass from exposed webserver). Could this option be set off by
> default or configurable somewhere? Or maybe there is some other
> workaround?

I am afraid that I am not very familiar with all possible options that 
is available in the Axis API:s. There seems to be a lot of them and 
their Javadoc is not very informative about what many of the options are 
used for. The CHUNKED option seems to be related to the way HTTP 
requests are made, but I have to admit that this is the first time I 
have heard of it. This means that I probably know even less than you 
about this.

I think that, in the future, there may be more requests about being able 
to set other options. So, it may be better to think ahead and try to 
figure out some way to be able to do this as easy as possible. With the 
current BASE API the only workaround that doesn't involve changing the 
BASE code is to subclass all AbstractRPCClient subclasses and override 
the 'getService()' method. This is not very elegent since there are 
several such classes and the new 'getService()' will be added to each 
one of them.

A better approach may be to create a 'ServiceFactory' interface which 
has a 'createService()' method. The default implementation would then 
work as the AbstractRPCClient.getService() does today. The last step is 
to figure out a way to switch to another 'ServiceFactory' implementation 
either by having a configuration file or by being able to specify it 
programmatically.

I have opened a ticket for this issue 
http://base.thep.lu.se/ticket/1057. It falls under the 'contributions 
welcome' category since right now we are forced to prioritize other things.

/Nicklas



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
basedb-devel mailing list
basedb-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/basedb-devel

Reply via email to