Re: [basedb-devel] Webservices transport error: 411 Error: Length Required

2008-08-21 Thread Pawel Sztromwasser
Nicklas Nordborg wrote:
> Pawel Sztromwasser wrote:
>> Totally agree. That makes it much more flexible. Please, feel free to 
>> change the code.
> 
> 
> I have now implemented this feature in the trunk. There are several 
> possibilities to specify which 'ServiceFactory' to use. The easiest
> is to use something like this when the application starts up:
> 
> Options opt = new Options();
> opt.setProperty(HTTPConstants.CHUNKED, false);
> ServiceFactory factory = new ConfigurableServiceFactory(opt);
> Factories.setDefaultServiceFactory(factory);
> 
> The rest of the code can remain unchanged. Another option is to specify 
> the factory when you create the SessionClient object:
> 
> SessionClient session = new SessionClient(url, null, null, factory);
> 
> I have not seen any differences between having the HTTPConstants.CHUNKED 
> parameter true or false, so it would really be nice if you can verify 
> that the configurable factory is working.
> 

Thank you for including the changes into 2.8. I tested both ways of 
using custom ServiceFactory and both work. I like more the first way, 
though.

Thanks once again and all the best,
Pawel


> /Nicklas
> 
> 
>> Pawel
>>
>> Nicklas Nordborg wrote:
>>> Thanks for the code. It was something like this that I had in mind. The 
>>> one thing I don't like is to pass the type as an 'int' parameter in the 
>>> constructor and having a switch statement that creates the actual object 
>>> to use. This makes it impossible for others to use their own 
>>> implementations of 'RPCServiceClientCreator'. Wouldn't it be better to 
>>> pass a 'RPCServiceClientCreator' directly to the constructor?
>>>
>>> Eg.
>>>
>>> protected AbstractRPCClient(
>>>String url, String service,
>>>RPCServiceClientCreator serviceCreator)
>>> {
>>> ...
>>> }
>>>
>>> /Nicklas
>>>
>>> Pawel Sztromwasser wrote:
 Hi Nicklas,

 I had some time and implemented the 'ServiceFactory' functionality.
 Gzipped java files are attached. To summarize changes:

 1) three new classes/interfaces were created (I put them in
 net.sf.basedb.ws.client.added package):
 a) RPCServiceClientCreator - interface containing RPCServiceClient 
 getService(String serviceUrl) method for creating RPCServiceClient objects
 b) DefaultRPCServiceClientCreator - factory class implementing 
 interface above. It creates RPCServiceClient objects in the way they 
 were created in AbstractRPCClient.getService() method.
 c) NoChunkRPCServiceClientCreator - the same as above but with CHUNK 
 option set to false.

 2) AbstractRPCClient class uses own RPCServiceClientCreator object to 
 create objects in getService() method. Creator object is initialized in 
 constructor (type of creator is an argument of additional constructor). 
 The creator type can be chosen between values supported by 
 AbstractRPCClient, available as public static constants (currently only 
 DEFAULT_RPC_SERVICE_CLIENT and NO_CHUNK_RPC_SERVICE_CLIENT). If no 
 creator type is supplied, default one is used.

 3) all the subclasses of AbstractRPCClient have additional constructor 
 with last argument being type of RPCServiceClientCreator which refers to 
 constructor in superclass. This makes possible to choose creator type 
 when programming BASE2 webservices clients.

 I attached diffs.txt file which contains diff output on
 net/sf/basedb/ws/client/ folders for my version and 2.7.1. Just thought, 
 it might be helpful.

 I hope the code will be useful.

 Best wishes,
 Pawel


 Nicklas Nordborg wrote:
> 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

Re: [basedb-devel] Webservices transport error: 411 Error: Length Required

2008-08-20 Thread Nicklas Nordborg
Pawel Sztromwasser wrote:
> Totally agree. That makes it much more flexible. Please, feel free to 
> change the code.


I have now implemented this feature in the trunk. There are several 
possibilities to specify which 'ServiceFactory' to use. The easiest
is to use something like this when the application starts up:

Options opt = new Options();
opt.setProperty(HTTPConstants.CHUNKED, false);
ServiceFactory factory = new ConfigurableServiceFactory(opt);
Factories.setDefaultServiceFactory(factory);

The rest of the code can remain unchanged. Another option is to specify 
the factory when you create the SessionClient object:

SessionClient session = new SessionClient(url, null, null, factory);

I have not seen any differences between having the HTTPConstants.CHUNKED 
parameter true or false, so it would really be nice if you can verify 
that the configurable factory is working.

/Nicklas


> 
> Pawel
> 
> Nicklas Nordborg wrote:
>> Thanks for the code. It was something like this that I had in mind. The 
>> one thing I don't like is to pass the type as an 'int' parameter in the 
>> constructor and having a switch statement that creates the actual object 
>> to use. This makes it impossible for others to use their own 
>> implementations of 'RPCServiceClientCreator'. Wouldn't it be better to 
>> pass a 'RPCServiceClientCreator' directly to the constructor?
>>
>> Eg.
>>
>> protected AbstractRPCClient(
>>String url, String service,
>>RPCServiceClientCreator serviceCreator)
>> {
>> ...
>> }
>>
>> /Nicklas
>>
>> Pawel Sztromwasser wrote:
>>> Hi Nicklas,
>>>
>>> I had some time and implemented the 'ServiceFactory' functionality.
>>> Gzipped java files are attached. To summarize changes:
>>>
>>> 1) three new classes/interfaces were created (I put them in
>>> net.sf.basedb.ws.client.added package):
>>> a) RPCServiceClientCreator - interface containing RPCServiceClient 
>>> getService(String serviceUrl) method for creating RPCServiceClient objects
>>> b) DefaultRPCServiceClientCreator - factory class implementing 
>>> interface above. It creates RPCServiceClient objects in the way they 
>>> were created in AbstractRPCClient.getService() method.
>>> c) NoChunkRPCServiceClientCreator - the same as above but with CHUNK 
>>> option set to false.
>>>
>>> 2) AbstractRPCClient class uses own RPCServiceClientCreator object to 
>>> create objects in getService() method. Creator object is initialized in 
>>> constructor (type of creator is an argument of additional constructor). 
>>> The creator type can be chosen between values supported by 
>>> AbstractRPCClient, available as public static constants (currently only 
>>> DEFAULT_RPC_SERVICE_CLIENT and NO_CHUNK_RPC_SERVICE_CLIENT). If no 
>>> creator type is supplied, default one is used.
>>>
>>> 3) all the subclasses of AbstractRPCClient have additional constructor 
>>> with last argument being type of RPCServiceClientCreator which refers to 
>>> constructor in superclass. This makes possible to choose creator type 
>>> when programming BASE2 webservices clients.
>>>
>>> I attached diffs.txt file which contains diff output on
>>> net/sf/basedb/ws/client/ folders for my version and 2.7.1. Just thought, 
>>> it might be helpful.
>>>
>>> I hope the code will be useful.
>>>
>>> Best wishes,
>>> Pawel
>>>
>>>
>>> Nicklas Nordborg wrote:
 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 l

Re: [basedb-devel] Webservices transport error: 411 Error: Length Required

2008-08-04 Thread Pawel Sztromwasser
Totally agree. That makes it much more flexible. Please, feel free to 
change the code.

Pawel

Nicklas Nordborg wrote:
> Thanks for the code. It was something like this that I had in mind. The 
> one thing I don't like is to pass the type as an 'int' parameter in the 
> constructor and having a switch statement that creates the actual object 
> to use. This makes it impossible for others to use their own 
> implementations of 'RPCServiceClientCreator'. Wouldn't it be better to 
> pass a 'RPCServiceClientCreator' directly to the constructor?
> 
> Eg.
> 
> protected AbstractRPCClient(
>String url, String service,
>RPCServiceClientCreator serviceCreator)
> {
> ...
> }
> 
> /Nicklas
> 
> Pawel Sztromwasser wrote:
>> Hi Nicklas,
>>
>> I had some time and implemented the 'ServiceFactory' functionality.
>> Gzipped java files are attached. To summarize changes:
>>
>> 1) three new classes/interfaces were created (I put them in
>> net.sf.basedb.ws.client.added package):
>> a) RPCServiceClientCreator - interface containing RPCServiceClient 
>> getService(String serviceUrl) method for creating RPCServiceClient objects
>> b) DefaultRPCServiceClientCreator - factory class implementing 
>> interface above. It creates RPCServiceClient objects in the way they 
>> were created in AbstractRPCClient.getService() method.
>> c) NoChunkRPCServiceClientCreator - the same as above but with CHUNK 
>> option set to false.
>>
>> 2) AbstractRPCClient class uses own RPCServiceClientCreator object to 
>> create objects in getService() method. Creator object is initialized in 
>> constructor (type of creator is an argument of additional constructor). 
>> The creator type can be chosen between values supported by 
>> AbstractRPCClient, available as public static constants (currently only 
>> DEFAULT_RPC_SERVICE_CLIENT and NO_CHUNK_RPC_SERVICE_CLIENT). If no 
>> creator type is supplied, default one is used.
>>
>> 3) all the subclasses of AbstractRPCClient have additional constructor 
>> with last argument being type of RPCServiceClientCreator which refers to 
>> constructor in superclass. This makes possible to choose creator type 
>> when programming BASE2 webservices clients.
>>
>> I attached diffs.txt file which contains diff output on
>> net/sf/basedb/ws/client/ folders for my version and 2.7.1. Just thought, 
>> it might be helpful.
>>
>> I hope the code will be useful.
>>
>> Best wishes,
>> Pawel
>>
>>
>> Nicklas Nordborg wrote:
>>> 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 havi

Re: [basedb-devel] Webservices transport error: 411 Error: Length Required

2008-08-04 Thread Nicklas Nordborg
Thanks for the code. It was something like this that I had in mind. The 
one thing I don't like is to pass the type as an 'int' parameter in the 
constructor and having a switch statement that creates the actual object 
to use. This makes it impossible for others to use their own 
implementations of 'RPCServiceClientCreator'. Wouldn't it be better to 
pass a 'RPCServiceClientCreator' directly to the constructor?

Eg.

protected AbstractRPCClient(
   String url, String service,
   RPCServiceClientCreator serviceCreator)
{
...
}

/Nicklas

Pawel Sztromwasser wrote:
> Hi Nicklas,
> 
> I had some time and implemented the 'ServiceFactory' functionality.
> Gzipped java files are attached. To summarize changes:
> 
> 1) three new classes/interfaces were created (I put them in
> net.sf.basedb.ws.client.added package):
> a) RPCServiceClientCreator - interface containing RPCServiceClient 
> getService(String serviceUrl) method for creating RPCServiceClient objects
> b) DefaultRPCServiceClientCreator - factory class implementing 
> interface above. It creates RPCServiceClient objects in the way they 
> were created in AbstractRPCClient.getService() method.
> c) NoChunkRPCServiceClientCreator - the same as above but with CHUNK 
> option set to false.
> 
> 2) AbstractRPCClient class uses own RPCServiceClientCreator object to 
> create objects in getService() method. Creator object is initialized in 
> constructor (type of creator is an argument of additional constructor). 
> The creator type can be chosen between values supported by 
> AbstractRPCClient, available as public static constants (currently only 
> DEFAULT_RPC_SERVICE_CLIENT and NO_CHUNK_RPC_SERVICE_CLIENT). If no 
> creator type is supplied, default one is used.
> 
> 3) all the subclasses of AbstractRPCClient have additional constructor 
> with last argument being type of RPCServiceClientCreator which refers to 
> constructor in superclass. This makes possible to choose creator type 
> when programming BASE2 webservices clients.
> 
> I attached diffs.txt file which contains diff output on
> net/sf/basedb/ws/client/ folders for my version and 2.7.1. Just thought, 
> it might be helpful.
> 
> I hope the code will be useful.
> 
> Best wishes,
> Pawel
> 
> 
> Nicklas Nordborg wrote:
>> 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 n

Re: [basedb-devel] Webservices transport error: 411 Error: Length Required

2008-07-30 Thread Pawel Sztromwasser

Hi Nicklas,

I had some time and implemented the 'ServiceFactory' functionality.
Gzipped java files are attached. To summarize changes:

1) three new classes/interfaces were created (I put them in
net.sf.basedb.ws.client.added package):
	a) RPCServiceClientCreator - interface containing RPCServiceClient 
getService(String serviceUrl) method for creating RPCServiceClient objects
	b) DefaultRPCServiceClientCreator - factory class implementing 
interface above. It creates RPCServiceClient objects in the way they 
were created in AbstractRPCClient.getService() method.
	c) NoChunkRPCServiceClientCreator - the same as above but with CHUNK 
option set to false.


2) AbstractRPCClient class uses own RPCServiceClientCreator object to 
create objects in getService() method. Creator object is initialized in 
constructor (type of creator is an argument of additional constructor). 
The creator type can be chosen between values supported by 
AbstractRPCClient, available as public static constants (currently only 
DEFAULT_RPC_SERVICE_CLIENT and NO_CHUNK_RPC_SERVICE_CLIENT). If no 
creator type is supplied, default one is used.


3) all the subclasses of AbstractRPCClient have additional constructor 
with last argument being type of RPCServiceClientCreator which refers to 
constructor in superclass. This makes possible to choose creator type 
when programming BASE2 webservices clients.


I attached diffs.txt file which contains diff output on
net/sf/basedb/ws/client/ folders for my version and 2.7.1. Just thought, 
it might be helpful.


I hope the code will be useful.

Best wishes,
Pawel


Nicklas Nordborg wrote:

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





new_client_package.tar.gz
Description: GNU Zip compressed data
diff net/sf/basedb/ws/client/AbstractRPCClient.java 
/Home/bccs/pawels/base2/base-2.7.1-src/src/webservices/client/java/net/sf/basedb/ws/client/AbstractRPCClient.java
32,35d31
< import net.sf.basedb.ws.client.added.DefaultRPCServiceClientCreator;
< import net.sf.basedb.ws.client

Re: [basedb-devel] Webservices transport error: 411 Error: Length Required

2008-06-16 Thread Nicklas Nordborg
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


[basedb-devel] Webservices transport error: 411 Error: Length Required

2008-06-16 Thread Pawel Sztromwasser
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. 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?

Cheers,
Pawel


org.apache.axis2.transport.http.HTTPSender sendViaPost
INFO: Unable to sendViaPost to 
url[http://api.bioinfo.no/base2/services/Session]
org.apache.axis2.AxisFault: Transport error: 411 Error: Length Required
at 
org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:298)
at 
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:192)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77)
at 
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:327)
at 
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:206)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396)
at 
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:374)
at 
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at 
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at 
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)
at 
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)
at 
org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:101)
at 
net.sf.basedb.ws.client.AbstractRPCClient.invokeBlocking(AbstractRPCClient.java:62)
at 
net.sf.basedb.ws.client.AbstractRPCClient.invokeBlocking(AbstractRPCClient.java:68)
at net.sf.basedb.ws.client.SessionClient.(SessionClient.java:54)
at 
no.uib.cbu.basedb.wsclients.WSLogger.createNewSession(WSLogger.java:58)
at no.uib.cbu.basedb.wsclients.WSLogger.(WSLogger.java:15)
at no.uib.cbu.basedb.wsclients.RunningClass.main(RunningClass.java:32)

-
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